Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:aruno:exp17 [2020/07/02 18:47] – alexnik | products:aruno:exp17 [2020/07/06 14:13] (текущий) – alexnik | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ===== Эксперимент 17. Светофор ===== | ===== Эксперимент 17. Светофор ===== | ||
| + | |||
| + | Используя модуль " | ||
| + | |||
| + | ==== Схема эксперимента ==== | ||
| + | {{ : | ||
| + | {{ : | ||
| + | {{ : | ||
| + | // | ||
| + | |||
| + | {{ : | ||
| + | // | ||
| + | |||
| + | |||
| + | ==== Программный код эксперимента ==== | ||
| + | |||
| + | <file cpp Exp17[enable_line_numbers=" | ||
| + | const int a = 6; | ||
| + | const int b = 7; | ||
| + | const int c = 9; | ||
| + | const int d = 3; | ||
| + | const int e = 2; | ||
| + | const int f = 5; | ||
| + | const int g = 4; | ||
| + | const int h = 8; | ||
| + | const int keyPin = 10; | ||
| + | int data [11][8] = {{1, | ||
| + | {0, | ||
| + | {1, | ||
| + | {1, | ||
| + | {0, | ||
| + | {1, | ||
| + | {1, | ||
| + | {1, | ||
| + | {1, | ||
| + | {1, | ||
| + | {0, | ||
| + | |||
| + | const int pinRed = 13; | ||
| + | const int pinYellow = 12; | ||
| + | const int pinGreen = 11; | ||
| + | void displ(int); | ||
| + | |||
| + | void setup () { | ||
| + | for(int i = 2; i <= 13; i++) | ||
| + | pinMode(i, | ||
| + | pinMode(keyPin, | ||
| + | digitalWrite(pinRed, | ||
| + | displ(0); | ||
| + | } | ||
| + | |||
| + | int x = 0; | ||
| + | int button_old = 0; | ||
| + | boolean btnStatus = false; | ||
| + | void loop() { | ||
| + | int mTime = 1000; | ||
| + | if(x == 0) { | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | mTime = 20; | ||
| + | | ||
| + | } | ||
| + | if((x <= 3) and (x > 0)) { | ||
| + | | ||
| + | | ||
| + | | ||
| + | mTime = 500; | ||
| + | x--; | ||
| + | } | ||
| + | if((x <= 10) and (x >= 4)) { | ||
| + | | ||
| + | | ||
| + | | ||
| + | x--; | ||
| + | } | ||
| + | if((x <= 15) and (x >= 11)) { | ||
| + | | ||
| + | x--; | ||
| + | } | ||
| + | if((x <= 20) and (x >= 16)) { | ||
| + | x--; | ||
| + | } | ||
| + | | ||
| + | x = 20; | ||
| + | | ||
| + | } | ||
| + | if(x >= 10) | ||
| + | displ(x-10); | ||
| + | else | ||
| + | displ(x); | ||
| + | | ||
| + | | ||
| + | } | ||
| + | |||
| + | void displ(int num) { | ||
| + | int j = 0; | ||
| + | digitalWrite(a, | ||
| + | digitalWrite(b, | ||
| + | digitalWrite(c, | ||
| + | digitalWrite(d, | ||
| + | digitalWrite(e, | ||
| + | digitalWrite(f, | ||
| + | digitalWrite(g, | ||
| + | digitalWrite(h, | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | В программе при нажатии кнопки устанавливаем переменную счетчика в 20 сек, и при каждом цикле начинаем ее уменьшать на единицу, | ||
| + | |||
| + | ==== Дополнительное задание ==== | ||
| + | <WRAP center round tip 60%> | ||
| + | Создайте свой вариант светофора, | ||
| + | </ | ||