===== Эксперимент 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