Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. #define DIG1 10
  2. #define DIG2 9
  3. #define DIG3 6
  4. #define DIG4 5
  5.  
  6. // A
  7. // ---------
  8. // | |
  9. // F| |B
  10. // | G |
  11. // ---------
  12. // | |
  13. // E| |C
  14. // | D |
  15. // ---------
  16.  
  17.  
  18. #define SEGA 2
  19. #define SEGB 0
  20. #define SEGC 3
  21. #define SEGD 8
  22. #define SEGE 7
  23. #define SEGF 4
  24. #define SEGG 1
  25.  
  26. static uint8_t number_to_segment[10] =
  27. {
  28. 0b00111111, //0
  29. 0b00000110, //1
  30. 0b01011011, //2
  31. 0b01001111, //3
  32. 0b01100110, //4
  33. 0b01101101, //5
  34. 0b01111101, //6
  35. 0b00000111, //7
  36. 0b01111111, //8
  37. 0b01101111 //9
  38. };
  39.  
  40. void select_digit(int digit)
  41. {
  42. digitalWrite(DIG1, digit==1);
  43. digitalWrite(DIG2, digit==2);
  44. digitalWrite(DIG3, digit==3);
  45. digitalWrite(DIG4, digit==4);
  46. }
  47.  
  48. void set_segment(int segments)
  49. {
  50. segments = ~segments; // binary codes are inversed, too lazy to fix it
  51. digitalWrite(SEGA, segments&0x01);
  52. digitalWrite(SEGB, segments&0x02);
  53. digitalWrite(SEGC, segments&0x04);
  54. digitalWrite(SEGD, segments&0x08);
  55. digitalWrite(SEGE, segments&0x10);
  56. digitalWrite(SEGF, segments&0x20);
  57. digitalWrite(SEGG, segments&0x40);
  58. }
  59.  
  60. int counter;
  61.  
  62. void setup() {
  63. pinMode(DIG1, OUTPUT);
  64. pinMode(DIG2, OUTPUT);
  65. pinMode(DIG3, OUTPUT);
  66. pinMode(DIG4, OUTPUT);
  67. pinMode(SEGA, OUTPUT);
  68. pinMode(SEGB, OUTPUT);
  69. pinMode(SEGC, OUTPUT);
  70. pinMode(SEGD, OUTPUT);
  71. pinMode(SEGE, OUTPUT);
  72. pinMode(SEGF, OUTPUT);
  73. pinMode(SEGG, OUTPUT);
  74.  
  75. }
  76.  
  77. void loop() {
  78. counter = millis()%10000;
  79.  
  80. int display_delay = 1;
  81.  
  82. select_digit(0);
  83. set_segment(number_to_segment[counter/1000]);
  84. select_digit(1);
  85. delayMicroseconds(display_delay);
  86. select_digit(0);
  87. set_segment(number_to_segment[(counter%1000)/100]);
  88. select_digit(2);
  89. delayMicroseconds(display_delay);
  90. select_digit(0);
  91. set_segment(number_to_segment[(counter%100)/10]);
  92. select_digit(3);
  93. delayMicroseconds(display_delay);
  94. select_digit(0);
  95. set_segment(number_to_segment[counter%10]);
  96. select_digit(4);
  97. delayMicroseconds(display_delay);
  98.  
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement