Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| products:aruno:exp15 [2020/06/12 14:24] – создано alexnik | products:aruno:exp15 [2020/07/02 14:24] (текущий) – alexnik | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ===== Эксперимент 15. Счетчик ===== | ===== Эксперимент 15. Счетчик ===== | ||
| - | В прошлом эксперименте мы научились выводить данные на LED - индикатор. Усовершенствуем немного | + | Используя схему предыдущего эксперимента можно сделать еще одно устройство - Счетчик нажатий на кнопку. |
| ==== Схема эксперимента ==== | ==== Схема эксперимента ==== | ||
| - | {{ : | + | {{ : |
| - | {{ : | + | {{ : |
| // | // | ||
| Строка 14: | Строка 14: | ||
| ==== Программный код эксперимента ==== | ==== Программный код эксперимента ==== | ||
| - | <file cpp Exp14[enable_line_numbers=" | + | <file cpp Exp15[enable_line_numbers=" |
| int a = 8; | int a = 8; | ||
| int b = 9; | int b = 9; | ||
| Строка 22: | Строка 22: | ||
| int f = 7; | int f = 7; | ||
| int g = 6; | int g = 6; | ||
| - | int dp = 10; | + | int h = 10; |
| int keyPin = 12; | int keyPin = 12; | ||
| + | int data [11][8] = {{1, | ||
| + | {0, | ||
| + | {1, | ||
| + | {1, | ||
| + | {0, | ||
| + | {1, | ||
| + | {1, | ||
| + | {1, | ||
| + | {1, | ||
| + | {1, | ||
| + | {0, | ||
| - | // Цифра " | + | void displ (int); |
| - | void display1(void) { | + | |
| - | digitalWrite(b, | + | |
| - | digitalWrite(c, | + | |
| - | } | + | |
| - | // Цифра " | + | |
| - | void display2(void) { | + | |
| - | digitalWrite(a, | + | |
| - | digitalWrite(b, | + | |
| - | digitalWrite(g, | + | |
| - | digitalWrite(e, | + | |
| - | digitalWrite(d, | + | |
| - | } | + | |
| - | // Цифра " | + | |
| - | void display3(void) { | + | |
| - | digitalWrite(a, | + | |
| - | digitalWrite(b, | + | |
| - | digitalWrite(c, | + | |
| - | digitalWrite(d, | + | |
| - | digitalWrite(g, | + | |
| - | } | + | |
| - | // Цифра " | + | |
| - | void display4(void) { | + | |
| - | digitalWrite(f, | + | |
| - | digitalWrite(b, | + | |
| - | digitalWrite(g, | + | |
| - | digitalWrite(c, | + | |
| - | } | + | |
| - | // Цифра " | + | |
| - | void display5(void) { | + | |
| - | digitalWrite(a, | + | |
| - | digitalWrite(f, | + | |
| - | digitalWrite(g, | + | |
| - | digitalWrite(c, | + | |
| - | digitalWrite(d, | + | |
| - | } | + | |
| - | // Цифра " | + | |
| - | void display6(void) { | + | |
| - | digitalWrite(a, | + | |
| - | digitalWrite(f, | + | |
| - | digitalWrite(g, | + | |
| - | digitalWrite(c, | + | |
| - | digitalWrite(d, | + | |
| - | digitalWrite(e, | + | |
| - | } | + | |
| - | // Цифра " | + | |
| - | void display7(void) { | + | |
| - | digitalWrite(a, | + | |
| - | digitalWrite(b, | + | |
| - | digitalWrite(c, | + | |
| - | } | + | |
| - | // Цифра " | + | |
| - | void display8(void) { | + | |
| - | digitalWrite(a, | + | |
| - | digitalWrite(b, | + | |
| - | digitalWrite(g, | + | |
| - | digitalWrite(c, | + | |
| - | digitalWrite(d, | + | |
| - | digitalWrite(e, | + | |
| - | digitalWrite(f, | + | |
| - | } | + | |
| - | // Цифра " | + | |
| - | void display9(void) { | + | |
| - | digitalWrite(a, | + | |
| - | digitalWrite(b, | + | |
| - | digitalWrite(g, | + | |
| - | digitalWrite(c, | + | |
| - | digitalWrite(d, | + | |
| - | digitalWrite(f, | + | |
| - | } | + | |
| - | // Цифра " | + | |
| - | void display0(void) { | + | |
| - | digitalWrite(a, | + | |
| - | digitalWrite(b, | + | |
| - | digitalWrite(c, | + | |
| - | digitalWrite(d, | + | |
| - | digitalWrite(e, | + | |
| - | digitalWrite(f, | + | |
| - | } | + | |
| - | // | + | |
| - | void clearDisplay(void) { | + | |
| - | digitalWrite(a, | + | |
| - | digitalWrite(b, | + | |
| - | digitalWrite(g, | + | |
| - | digitalWrite(c, | + | |
| - | digitalWrite(d, | + | |
| - | digitalWrite(e, | + | |
| - | digitalWrite(f, | + | |
| - | | + | |
| void setup() { | void setup() { | ||
| - | | + | for(int i=4; |
| - | | + | |
| pinMode(i, | pinMode(i, | ||
| pinMode(keyPin, | pinMode(keyPin, | ||
| - | | + | |
| | | ||
| int x = -1; | int x = -1; | ||
| - | int switchState | + | int button_old |
| - | int oldSwitchState = 0; | + | |
| - | boolean lightsOn = false; | + | |
| void loop() { | void loop() { | ||
| - | switchState = digitalRead(keyPin); | + | if((digitalRead(keyPin) == LOW)&&(button_old |
| - | if (switchState != oldSwitchState) { | + | |
| - | oldSwitchState = switchState; | + | |
| - | if (switchState | + | |
| - | lightsOn = !lightsOn; | + | |
| - | } | + | |
| - | } | + | |
| - | | + | |
| x = x + 1; | x = x + 1; | ||
| } | } | ||
| - | if (x == 0) {clearDisplay(); display0(); delay(100); } | + | displ(11); |
| - | if (x == 1) {clearDisplay(); | + | displ(x); |
| - | if (x == 2) {clearDisplay(); | + | |
| - | if (x == 3) {clearDisplay(); | + | |
| - | if (x == 4) {clearDisplay(); | + | |
| - | if (x == 5) {clearDisplay(); | + | |
| - | if (x == 6) {clearDisplay(); | + | |
| - | if (x == 7) {clearDisplay(); | + | |
| - | if (x == 8) {clearDisplay(); | + | |
| - | if (x == 9) {clearDisplay(); | + | |
| if (x > 9) {x = 0;} | if (x > 9) {x = 0;} | ||
| + | |||
| + | | ||
| + | | ||
| } | } | ||
| + | |||
| + | void displ (int num) { | ||
| + | int j = 0; | ||
| + | digitalWrite(a, | ||
| + | digitalWrite(b, | ||
| + | digitalWrite(c, | ||
| + | digitalWrite(d, | ||
| + | digitalWrite(e, | ||
| + | digitalWrite(f, | ||
| + | digitalWrite(g, | ||
| + | digitalWrite(h, | ||
| + | } | ||
| + | } | ||
| </ | </ | ||
| - | На первый | + | |
| - | В начале программы мы инициализируем | + | В основном цикле программы мы обрабатываем нажатие кнопки и считаем количество нажатий, при чем счетчик нажатий увеличивается при |
| - | Далее следуют одиннадцать функций очень похожих друг на друга. При выполнении функций '' | + | Для отображения символа используется пользовательская функция '' |
| - | В функции '' | + | |
| - | В функции '' | + | |
| - | Благодаря тому, что | + | |
| ==== Дополнительное задание ==== | ==== Дополнительное задание ==== | ||
| Строка 163: | Строка 81: | ||
| </ | </ | ||
| - | === Задание повышенной сложности === | ||
| - | <WRAP center round tip 60%> | ||
| - | Напиши программу с аналогичным результатом используя массивы | ||
| - | </ | ||