Рис. 1. Выбираю нужные детали.
Шаг 1. Подбираю материалы и проверяю резисторы.
Рис. 1. Выбираю нужные детали.
Мне понадобилось
¾ Плата Arduino Uno (1 шт)
¾ Красный светодиод (2 шт)
¾ Зелёный светодиод (2 шт)
¾ Жёлтый светодиод (1 шт)
¾ Резистор 330 Ом (5 шт)
¾ Резистор 10 кОм (1 шт)
¾ Пьезозвонок (1 шт)
¾ Кнопка на замыкание (1 шт)
¾ Макетная плата (1 шт)
¾ Провода
Рис. 2. Необходимые элементы.
Шаг 2. Собираю схему.
Рис. 3. Схема и собранный аппарат.
Шаг 3. Пишем программу.
//Программа пешеходного светофора #define carRed 12 //красный для машин #define carYellow 11 //желтый для машин #define carGreen 10 //зеленый для машин #define pedRed 9 //пешеходный красный #define pedGreen 8 //пешеходный зеленый #define button 2 // вывод кнопки #define speakerPin 13 //вывод звукового сигнала
int crossTime = 5000; //5 секунд для пешеходов int pauseTime = 5000; //5 секунд c последнего нажатия unsigned long changeTime ; // время с последнего нажатия кнопки
void setup () { pinMode(carRed, OUTPUT); //все выводы светодиодов на выход pinMode(carYellow, OUTPUT); pinMode(carGreen, OUTPUT); pinMode(pedRed, OUTPUT); pinMode(pedGreen, OUTPUT); pinMode(button, INPUT_PULLUP); //вывод кнопки на вход c подтяжкой
digitalWrite(carGreen,HIGH); //сначала горим зеленым для машин digitalWrite(pedRed, HIGH); //и красным для пешеходов }
void loop(){ int state = digitalRead(button); //проверяем кнопку // если нажата, проверяем, что с последнего нажатия кнопки //прошло не менее pauseTime if(state==HIGH && (millis() - changeTime) > pauseTime) { changeLights(); //вызываем функцию переключения цветов } }
void changeLights() { //переключение цветов digitalWrite(carGreen,LOW); //зеленый для машин выключаем digitalWrite(carYellow,HIGH); // желтый для машин включаем delay(2000); //ждем 2 секунды
digitalWrite(carYellow,LOW); //желтый для машин выключаем digitalWrite(carRed,HIGH); //красный для машин включаем delay(1000); //ждем секунду
digitalWrite(pedRed,LOW); //выключаем красный для пешеходов digitalWrite(pedGreen,HIGH); //включаем зеленый для пешеходов tone(speakerPin, 1000); //звуковая сигнализация - можно переходить delay(crossTime); //разрешенное время перехода crossTime
//далее мигаем зеленым 5 секунд+прерывистый звуковой сигнал for (int x=0; x<10; x++){ digitalWrite(pedGreen,HIGH); tone(speakerPin, 1500); //меняем тональность delay(250); digitalWrite(pedGreen,LOW); noTone(speakerPin); //звук сигнал выкл delay(250); }
digitalWrite(pedRed, HIGH); //включаем красный для пешеходов delay(100); //пауза
digitalWrite(carGreen,HIGH); //зеленый для машин digitalWrite(carRed,LOW); //красный для машин
changeTime = millis(); //запоминаем текушее количество миллисекунд } [9]
|