computermuseo

orologio tm1638 arduino

Apr 6th, 2017
2,489
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. #include <TM1638.h>
  2. #include <InvertedTM1638.h>
  3.  
  4. #define NO_MODULES 1
  5.  
  6. byte counter = 0;
  7. byte mode = 0;
  8. long runningSecs = -1;
  9. byte hours, minutes, seconds;
  10.  
  11. // define a regular module and a inverted module
  12. TM1638 module1(8, 9, 10);
  13. TM1638* modules[NO_MODULES] = {
  14. &module1
  15. };
  16.  
  17. void setup() {
  18. //startTime = millis();
  19.  
  20. modules[0]->setupDisplay(true, 7);
  21. modules[0]->setDisplayToString(" ");
  22. modules[0]->setLEDs(0);
  23. }
  24.  
  25. void loop() {
  26. byte buttons = modules[0]->getButtons();
  27.  
  28. if (buttons != 0) {
  29. mode = buttons >> 1;
  30. switch(mode) {
  31. case 0: break;
  32. case 1: break;
  33. case 2: break;
  34. case 4: break;
  35. case 8: break;
  36. case 16: break;
  37. case 32: break;
  38. case 64: break;
  39. }
  40. }
  41.  
  42. counter++;
  43. if (counter==9) { counter = 1; }
  44. switch(counter) {
  45. case 1:
  46. runningSecs = runningSecs + 1;
  47. hours = runningSecs / 3600;
  48. runningSecs = runningSecs % 3600;
  49. minutes = runningSecs / 60;
  50. seconds = runningSecs % 60;
  51.  
  52. char s[8];
  53. sprintf(s, "%02d %02d %02d", hours, minutes, seconds);
  54. modules[0]->setDisplayToString(s);
  55.  
  56. modules[0]->setLEDs(1);
  57. break;
  58. case 2: modules[0]->setLEDs(2); break;
  59. case 3: modules[0]->setLEDs(4); break;
  60. case 4: modules[0]->setLEDs(8); break;
  61. case 5: modules[0]->setLEDs(16); break;
  62. case 6: modules[0]->setLEDs(32); break;
  63. case 7: modules[0]->setLEDs(64); break;
  64. case 8: modules[0]->setLEDs(128); break;
  65. }
  66. delay(125);
  67. }
Advertisement
Add Comment
Please, Sign In to add comment