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


Эксперимент 16. Счетчик (Версия 2.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 h = 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(h, data[num][j]); j = j + 1;
  55. } }

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

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