Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // подключаем файл с нотами
- #include "pitches.h"
- int RcarPin1 = 13; // пин подключения красного света для машин
- int RcarPin2 = 7; // пин подключения красного света для машин
- int YcarPin1 = 12; // пин подключения жёлтого света для машин
- int YcarPin2 = 6; // пин подключения жёлтого света для машин
- int GcarPin1 = 11; // пин подключения зелёного света для машин
- int GcarPin2 = 5; // пин подключения зелёного света для машин
- int RpeoplePin1 = 10; // пин подключения красного света для пешеходов
- int RpeoplePin2 = 4; // пин подключения красного света для пешеходов
- int GpeoplePin1 = 9; // пин подключения зелёного света для пешеходов
- int GpeoplePin2 = 3; // пин подключения зелёного света для пешеходов
- int speakerPin = 8; // пин подключения динамика
- int buttonPin = 2; // пин подключения кнопки
- int buttonState = 0; // переменная для хранения состояния кнопки
- void setup() {
- pinMode(buttonPin, INPUT); // устанавливаем buttonPin в режим ввода
- for (int p = 3; p <=13; p++) {
- pinMode(p, OUTPUT); // устанавливаем пины с 6 по 11 (LED + динамик) в режим вывода
- }
- digitalWrite(GcarPin1, HIGH); // изначально горит зелёный машинам
- digitalWrite(GcarPin2, HIGH); // изначально горит зелёный машинам
- digitalWrite(RcarPin1, LOW);
- digitalWrite(RcarPin2, LOW);
- digitalWrite(YcarPin1, LOW);
- digitalWrite(YcarPin2, LOW);
- digitalWrite(RpeoplePin1, HIGH); // изначально горит красный пешеходам
- digitalWrite(RpeoplePin2, HIGH); // изначально горит красный пешеходам
- digitalWrite(GpeoplePin1, LOW);
- digitalWrite(GpeoplePin2, LOW);
- attachInterrupt(INT0, ChangeRejim, CHANGE);
- }
- void ChangeRejim() { // функция смены режима по кнопке
- if(digitalRead(buttonPin) == LOW && buttonState == 0)
- {
- buttonState = 1;
- }
- }
- void loop() {
- if (buttonState == 1) { // если нажата кнопка
- delay(3000); // ждём 3 секунды
- for (int i=0; i<3; i++) { // три раза моргаем зелёным для машин
- digitalWrite(GcarPin1, LOW);
- digitalWrite(GcarPin2, LOW);
- delay(500); // ждём 500 мс
- digitalWrite(GcarPin1, HIGH);
- digitalWrite(GcarPin2, HIGH);
- delay(500); // ждём 500 мс
- }
- digitalWrite(GcarPin1, LOW); // гасим зелёный для машин
- digitalWrite(GcarPin2, LOW); // гасим зелёный для машин
- delay(50); // ждём 50 мс
- digitalWrite(YcarPin1, HIGH); // зажигаем жёлтый для машин
- digitalWrite(YcarPin2, HIGH); // зажигаем жёлтый для машин
- delay(3000); // ждём 3 секунды
- digitalWrite(YcarPin1, LOW); // гасим жёлтый для машин
- digitalWrite(YcarPin2, LOW); // гасим жёлтый для машин
- delay(50); // ждём 50 мс
- digitalWrite(RcarPin1, HIGH); // зажигаем красный для машин
- digitalWrite(RcarPin2, HIGH); // зажигаем красный для машин
- digitalWrite(RpeoplePin1, LOW); // гасим красный для пешеходов
- digitalWrite(RpeoplePin2, LOW); // гасим красный для пешеходов
- digitalWrite(GpeoplePin1, HIGH); // зажигаем зелёный для пешеходов
- digitalWrite(GpeoplePin2, HIGH); // зажигаем зелёный для пешеходов
- for (int t = 0; t < 21; t++) { // запускаем обратный отсчёт
- tone(speakerPin, NOTE_G4, (500-15*t)); // включаем звуковое оповещение пешеходам
- if (t > 17) { // на последних 3-х секундах мигаем зелёным пешеходам
- digitalWrite(GpeoplePin1, LOW); // гасим зелёный для пешеходов
- digitalWrite(GpeoplePin2, LOW); // гасим зелёный для пешеходов
- delay(150); // ждём 150 мс
- digitalWrite(GpeoplePin1, HIGH); // зажигаем красный для пешеходов
- digitalWrite(GpeoplePin2, HIGH); // зажигаем красный для пешеходов
- }
- delay(1000); // ждём 1 секунду
- }
- digitalWrite(GpeoplePin1, LOW); // гасим зелёный для пешеходов
- digitalWrite(GpeoplePin2, LOW); // гасим зелёный для пешеходов
- digitalWrite(RpeoplePin1, HIGH); // зажигаем красный для пешеходов
- digitalWrite(RpeoplePin2, HIGH); // зажигаем красный для пешеходов
- delay(2000); // ждём 2 секунды
- digitalWrite(YcarPin1, HIGH); // зажигаем жёлтый + красный (уже горит) для машин
- digitalWrite(YcarPin2, HIGH); // зажигаем жёлтый + красный (уже горит) для машин
- delay(2000); // ждём 2 секунды
- digitalWrite(RcarPin1, LOW); // гасим красный для машин
- digitalWrite(RcarPin2, LOW); // гасим красный для машин
- digitalWrite(YcarPin1, LOW); // гасим жёлтый для машин
- digitalWrite(YcarPin2, LOW); // гасим жёлтый для машин
- digitalWrite(GcarPin1, HIGH); // зажигаем зелёный для машин
- digitalWrite(GcarPin2, HIGH); // зажигаем зелёный для машин
- buttonState = 0; // меняем состояние кнопки на "не нажата"
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement