===== Эксперимент 15. Счетчик ===== Используя схему предыдущего эксперимента можно сделать еще одно устройство - Счетчик нажатий на кнопку. ==== Схема эксперимента ==== {{ :products:ardu:exp14_shema_tk.png?nolink&400 |}} {{ :products:ardu:exp13_sch.png?nolink&400 |}} //Рисунок 1. Электрическая принципиальная схема эксперимента// {{ :products:ardu:exp14.png?direct&600 |}} //Рисунок 2. Монтажная схема эксперимента// ==== Программный код эксперимента ==== int a = 8; int b = 9; int c = 11; int d = 5; int e = 4; int f = 7; int g = 6; int h = 10; int keyPin = 12; int data [11][8] = {{1,1,1,1,1,1,0,1}, {0,1,1,0,0,0,0,1}, {1,1,0,1,1,0,1,1}, {1,1,1,1,0,0,1,1}, {0,1,1,0,0,1,1,1}, {1,0,1,1,0,1,1,1}, {1,0,1,1,1,1,1,1}, {1,1,1,0,0,0,0,1}, {1,1,1,1,1,1,1,1}, {1,1,1,1,0,1,1,1}, {0,0,0,0,0,0,0,0}}; void displ (int); void setup() { for(int i=4;i<=11;i++) pinMode(i,OUTPUT); pinMode(keyPin,INPUT); displ(11); } int x = -1; int button_old = 1; void loop() { if((digitalRead(keyPin) == LOW)&&(button_old == 1)) { x = x + 1; } displ(11); displ(x); if (x > 9) {x = 0;} button_old = digitalRead(keyPin); delay(20); } void displ (int num) { int j = 0; digitalWrite(a, data[num][j]); j = j + 1; digitalWrite(b, data[num][j]); j = j + 1; digitalWrite(c, data[num][j]); j = j + 1; digitalWrite(d, data[num][j]); j = j + 1; digitalWrite(e, data[num][j]); j = j + 1; digitalWrite(f, data[num][j]); j = j + 1; digitalWrite(g, data[num][j]); j = j + 1; digitalWrite(h, data[num][j]); j = j + 1; } } В основном цикле программы мы обрабатываем нажатие кнопки и считаем количество нажатий, при чем счетчик нажатий увеличивается при условии что кнопка уже отпущена (с пина считывается сигнал "LOW"), но была нажата (в переменную **button_old** записана 1, что соответствует сигналу "HIGH" считанному с пина кнопки).\\ Для отображения символа используется пользовательская функция ''displ()'', которая в качестве аргумента принимает номер зашифрованного в массиве символа (0..9), где "1" означает, что будет подаваться сигнал "HIGH", а "0" означает, что будет подаваться сигнал "LOW" ==== Дополнительное задание ==== Добавь к цифрам 0..9 еще буквы A, b, C d E F, чтобы секундомер переключал символы от 0 до F