Хелпикс

Главная

Контакты

Случайная статья





Рис. 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]



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.