Используя модуль «Светофор», соберем имитацию дорожного светофора, работающего по нажатию кнопки и отсчитывающий секунды.
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,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}}; 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,OUTPUT); pinMode(keyPin,INPUT); digitalWrite(pinRed,HIGH); displ(0); } int x = 0; int button_old = 0; boolean btnStatus = false; void loop() { int mTime = 1000; if(x == 0) { digitalWrite(pinRed, HIGH); digitalWrite(pinYellow, LOW); digitalWrite(pinGreen, LOW); displ(x); mTime = 20; btnStatus = true; } if((x <= 3) and (x > 0)) { digitalWrite(pinGreen, LOW); delay(500); digitalWrite(pinGreen, HIGH); mTime = 500; x--; } if((x <= 10) and (x >= 4)) { digitalWrite(pinRed, LOW); digitalWrite(pinYellow, LOW); digitalWrite(pinGreen, HIGH); x--; } if((x <= 15) and (x >= 11)) { digitalWrite(pinYellow, HIGH); x--; } if((x <= 20) and (x >= 16)) { x--; } if((digitalRead(keyPin) == LOW)&&(button_old == 1)&&(btnStatus == true)) { x = 20; btnStatus = false; } if(x >= 10) displ(x-10); else displ(x); button_old = digitalRead(keyPin); delay(mTime); } 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; }
В программе при нажатии кнопки устанавливаем переменную счетчика в 20 сек, и при каждом цикле начинаем ее уменьшать на единицу, условные блоки проверяют состояние счетчика и соответственно выполняют заложенные в них инструкции.
Создайте свой вариант светофора, например добавьте к схеме светодиоды для пешеходного светофора.