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


Эксперимент 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. int data [11][8] = {{1,1,1,1,1,1,0,1},
  11. {0,1,1,0,0,0,0,1},
  12. {1,1,0,1,1,0,1,1},
  13. {1,1,1,1,0,0,1,1},
  14. {0,1,1,0,0,1,1,1},
  15. {1,0,1,1,0,1,1,1},
  16. {1,0,1,1,1,1,1,1},
  17. {1,1,1,0,0,0,0,1},
  18. {1,1,1,1,1,1,1,1},
  19. {1,1,1,1,0,1,1,1},
  20. {0,0,0,0,0,0,0,0}};
  21.  
  22. void displ (int);
  23.  
  24. void setup() {
  25. for(int i=4;i<=11;i++)
  26. pinMode(i,OUTPUT);
  27. pinMode(keyPin,INPUT);
  28. displ(11);
  29. }
  30.  
  31. int x = -1;
  32. int button_old = 1;
  33. void loop() {
  34. if((digitalRead(keyPin) == LOW)&&(button_old == 1)) {
  35. x = x + 1;
  36. }
  37. displ(11);
  38. displ(x);
  39. if (x > 9) {x = 0;}
  40.  
  41. button_old = digitalRead(keyPin);
  42. delay(20);
  43. }
  44.  
  45. void displ (int num) {
  46. int j = 0;
  47. digitalWrite(a, data[num][j]); j = j + 1;
  48. digitalWrite(b, data[num][j]); j = j + 1;
  49. digitalWrite(c, data[num][j]); j = j + 1;
  50. digitalWrite(d, data[num][j]); j = j + 1;
  51. digitalWrite(e, data[num][j]); j = j + 1;
  52. digitalWrite(f, data[num][j]); j = j + 1;
  53. digitalWrite(g, data[num][j]); j = j + 1;
  54. digitalWrite(dp, data[num][j]); j = j + 1;
  55. } }

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

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