Это старая версия документа!


Эксперимент 17. Счетчик (Версия 3.0)

Используя схему предыдущего эксперимента можно сделать еще одно устройство - Счетчик нажатий на кнопку.

Схема эксперимента

Рисунок 1. Электрическая принципиальная схема эксперимента

Рисунок 2. Монтажная схема эксперимента

Программный код эксперимента

Exp15
  1. int a = 8;
  2. int b = 9;
  3. int c = 11;
  4. int d = 5;
  5. int e = 4;
  6. int f = 7;
  7. int g = 6;
  8. int dp = 10;
  9. int keyPin = 12;
  10.  
  11. // Цифра "Один"
  12. void display1(void) {
  13. digitalWrite(b,HIGH);
  14. digitalWrite(c,HIGH);
  15. }
  16. // Цифра "Два"
  17. void display2(void) {
  18. digitalWrite(a,HIGH);
  19. digitalWrite(b,HIGH);
  20. digitalWrite(g,HIGH);
  21. digitalWrite(e,HIGH);
  22. digitalWrite(d,HIGH);
  23. }
  24. // Цифра "Три"
  25. void display3(void) {
  26. digitalWrite(a,HIGH);
  27. digitalWrite(b,HIGH);
  28. digitalWrite(c,HIGH);
  29. digitalWrite(d,HIGH);
  30. digitalWrite(g,HIGH);
  31. }
  32. // Цифра "Четыре"
  33. void display4(void) {
  34. digitalWrite(f,HIGH);
  35. digitalWrite(b,HIGH);
  36. digitalWrite(g,HIGH);
  37. digitalWrite(c,HIGH);
  38. }
  39. // Цифра "Пять"
  40. void display5(void) {
  41. digitalWrite(a,HIGH);
  42. digitalWrite(f,HIGH);
  43. digitalWrite(g,HIGH);
  44. digitalWrite(c,HIGH);
  45. digitalWrite(d,HIGH);
  46. }
  47. // Цифра "Шесть"
  48. void display6(void) {
  49. digitalWrite(a,HIGH);
  50. digitalWrite(f,HIGH);
  51. digitalWrite(g,HIGH);
  52. digitalWrite(c,HIGH);
  53. digitalWrite(d,HIGH);
  54. digitalWrite(e,HIGH);
  55. }
  56. // Цифра "Семь"
  57. void display7(void) {
  58. digitalWrite(a,HIGH);
  59. digitalWrite(b,HIGH);
  60. digitalWrite(c,HIGH);
  61. }
  62. // Цифра "Восемь"
  63. void display8(void) {
  64. digitalWrite(a,HIGH);
  65. digitalWrite(b,HIGH);
  66. digitalWrite(g,HIGH);
  67. digitalWrite(c,HIGH);
  68. digitalWrite(d,HIGH);
  69. digitalWrite(e,HIGH);
  70. digitalWrite(f,HIGH);
  71. }
  72. // Цифра "Девять"
  73. void display9(void) {
  74. digitalWrite(a,HIGH);
  75. digitalWrite(b,HIGH);
  76. digitalWrite(g,HIGH);
  77. digitalWrite(c,HIGH);
  78. digitalWrite(d,HIGH);
  79. digitalWrite(f,HIGH);
  80. }
  81. // Цифра "Нуль"
  82. void display0(void) {
  83. digitalWrite(a,HIGH);
  84. digitalWrite(b,HIGH);
  85. digitalWrite(c,HIGH);
  86. digitalWrite(d,HIGH);
  87. digitalWrite(e,HIGH);
  88. digitalWrite(f,HIGH);
  89. }
  90. //Очистка дисплея
  91. void clearDisplay(void) {
  92. digitalWrite(a,LOW);
  93. digitalWrite(b,LOW);
  94. digitalWrite(g,LOW);
  95. digitalWrite(c,LOW);
  96. digitalWrite(d,LOW);
  97. digitalWrite(e,LOW);
  98. digitalWrite(f,LOW);
  99. }
  100.  
  101. void setup() {
  102. int i;
  103. for(i=4;i<=11;i++)
  104. pinMode(i,OUTPUT);
  105. pinMode(keyPin,INPUT);
  106. display0();
  107. }
  108.  
  109. int x = -1;
  110.  
  111. void loop() {
  112. if(digitalRead(keyPin) == HIGH ) {
  113. x = x + 1;
  114. }
  115. if (x == 0) {clearDisplay(); display0();}
  116. if (x == 1) {clearDisplay(); display1();}
  117. if (x == 2) {clearDisplay(); display2();}
  118. if (x == 3) {clearDisplay(); display3();}
  119. if (x == 4) {clearDisplay(); display4();}
  120. if (x == 5) {clearDisplay(); display5();}
  121. if (x == 6) {clearDisplay(); display6();}
  122. if (x == 7) {clearDisplay(); display7();}
  123. if (x == 8) {clearDisplay(); display8();}
  124. if (x == 9) {clearDisplay(); display9();}
  125. if (x > 9) {x = 0;}
  126. }

Дополнительное задание

Добавь к цифрам 0..9 еще буквы A, b, C d E F, чтобы секундомер переключал символы от 0 до F