Advertisement
The_KGB

Arduino Binary Clock

Nov 4th, 2012
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.30 KB | None | 0 0
  1. /*
  2. An open-source binary clock for Arduino.
  3. Based on the code from by Rob Faludi (http://www.faludi.com)
  4. Code under (cc) by Daniel Spillere Andrade, www.danielandrade.net
  5. http://creativecommons.org/license/cc-gpl
  6. */
  7.  
  8. int second=0, minute=22, hour=20; //start the time on 00:00:00
  9. int munit,hunit,valm=0,valh=0,ledstats,i;
  10.  
  11. void setup() { //set outputs and inputs
  12. pinMode(1, OUTPUT);pinMode(2, OUTPUT);pinMode(3, OUTPUT);pinMode(4, OUTPUT);pinMode(5, OUTPUT);
  13. pinMode(6, OUTPUT);pinMode(7, OUTPUT);pinMode(8, OUTPUT);pinMode(9, OUTPUT);pinMode(10, OUTPUT);
  14. pinMode(11, OUTPUT);pinMode(12, OUTPUT);pinMode(13, OUTPUT);
  15.  
  16. pinMode(0, INPUT);
  17. }
  18.  
  19. void loop() {
  20.  
  21. static unsigned long lastTick = 0; // set up a local variable to hold the last time we moved forward one second
  22. // (static variables are initialized once and keep their values between function calls)
  23. // move forward one second every 1000 milliseconds
  24.  
  25. if (millis() - lastTick >= 1000) {
  26. lastTick = millis();
  27. second++;
  28.  
  29. }
  30.  
  31. // move forward one minute every 60 seconds
  32. if (second >= 60) {
  33. minute++;
  34. second = 0; // reset seconds to zero
  35. }
  36.  
  37. // move forward one hour every 60 minutes
  38. if (minute >=60) {
  39. hour++;
  40. minute = 0; // reset minutes to zero
  41. }
  42.  
  43. if (hour >=24) {
  44. hour=0;
  45. minute = 0; // reset minutes to zero
  46. }
  47.  
  48. munit = minute%10; //sets the variable munit and hunit for the unit digits
  49. hunit = hour%10;
  50.  
  51.  
  52. ledstats = digitalRead(0); // read input value, for setting leds off, but keeping count
  53. if (ledstats == LOW) {
  54.  
  55. for(i=1;i<=13;i++){
  56. digitalWrite(i, LOW);}
  57.  
  58. } else {
  59.  
  60. //minutes units
  61. if(munit == 1 || munit == 3 || munit == 5 || munit == 7 || munit == 9) { digitalWrite(1, HIGH);} else { digitalWrite(1,LOW);}
  62. if(munit == 2 || munit == 3 || munit == 6 || munit == 7) {digitalWrite(2, HIGH);} else {digitalWrite(2,LOW);}
  63. if(munit == 4 || munit == 5 || munit == 6 || munit == 7) {digitalWrite(3, HIGH);} else {digitalWrite(3,LOW);}
  64. if(munit == 8 || munit == 9) {digitalWrite(4, HIGH);} else {digitalWrite(4,LOW);}
  65.  
  66. //minutes
  67. if((minute >= 10 && minute < 20) || (minute >= 30 && minute < 40) || (minute >= 50 && minute < 60)) {digitalWrite(5, HIGH);} else {digitalWrite(5,LOW);}
  68. if(minute >= 20 && minute < 40) {digitalWrite(6, HIGH);} else {digitalWrite(6,LOW);}
  69. if(minute >= 40 && minute < 60) {digitalWrite(7, HIGH);} else {digitalWrite(7,LOW);}
  70.  
  71. //hour units
  72. if(hunit == 1 || hunit == 3 || hunit == 5 || hunit == 7 || hunit == 9) {digitalWrite(8, HIGH);} else {digitalWrite(8,LOW);}
  73. if(hunit == 2 || hunit == 3 || hunit == 6 || hunit == 7) {digitalWrite(9, HIGH);} else {digitalWrite(9,LOW);}
  74. if(hunit == 4 || hunit == 5 || hunit == 6 || hunit == 7) {digitalWrite(10, HIGH);} else {digitalWrite(10,LOW);}
  75. if(hunit == 8 || hunit == 9) {digitalWrite(11, HIGH);} else {digitalWrite(11,LOW);}
  76.  
  77. //hour
  78. if(hour >= 10 && hour < 20) {digitalWrite(12, HIGH);} else {digitalWrite(12,LOW);}
  79. if(hour >= 20 && hour < 24) {digitalWrite(13, HIGH);} else {digitalWrite(13,LOW);}
  80.  
  81. }
  82.  
  83. //valm = analogRead(0); // add one minute when pressed
  84. //if(valm&lt;800) {
  85. //minute++;
  86. //second=0;
  87. //delay(250);
  88. //}
  89.  
  90. //valh = analogRead(5); // add one hour when pressed
  91. //if(valh&lt;800) {
  92. //hour++;
  93. //second=0;
  94. //delay(250);
  95. //}
  96.  
  97.  
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement