Valgusfoor

авторы Jekaterina Guzek, Anna Oleks

Изучаемые функции и компоненты

  • pinMode() – установка режима работы пинов (вход/выход)
  • digitalWrite() – подача сигнала HIGH/LOW на пин
  • delay() – задержка выполнения кода

Используемые компоненты:

  • Arduino UNO
  • 5 светодиодов (красный, жёлтый, зелёный для автомобилей; красный и зелёный для пешеходов)
  • 5 резисторов (220 Ом)
  • Макетная плата (breadboard)
  • Соединительные провода (jumper wires)

Схема соединения:

Проект имитирует работу настоящего перекрёстка:

  • Светофор переключается между дневным и ночным режимом.
  • В дневном режиме 3 раза проигрывается сценарий движения для машин и пешеходов.
  • В ночном режиме мигает только жёлтый свет для автомобилей.

Программа написана в Arduino IDE:

// C++ code
//
void setup()
{
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
}

void loop(){
 for(int i = 0; i < 3; i++){
  // car red
  	digitalWrite(13, HIGH);
  	digitalWrite(12, LOW);  
  	digitalWrite(11, LOW);
  
  //people green
  	digitalWrite(10, LOW);
  	digitalWrite(9, HIGH);
  	delay(5000); 
  
  // people green
  	for(int i = 0; i<3; i++){ //моргание три раза
    	digitalWrite(9, LOW);
    	delay(500);
  		digitalWrite(9, HIGH);
    	delay(500);
  	}
  
  //car yellow
  	digitalWrite(13, LOW);
  	digitalWrite(12, HIGH);  
  	digitalWrite(11, LOW);
  
  // peole last
  	digitalWrite(10, HIGH);
  	digitalWrite(9, LOW);
  	delay(2000);
  
  // car green
  	digitalWrite(13, LOW);
  	digitalWrite(12, LOW);  
  	digitalWrite(11, HIGH);
  
  // people red
  	digitalWrite(10, HIGH);
  	digitalWrite(9, LOW);
  	delay(4000);
  
  // car green
  	for(int i = 0; i<3; i++){ //моргание три раза
    	digitalWrite(11, LOW);
    	delay(500);
  		digitalWrite(11, HIGH);
    	delay(500);
        digitalWrite(11, LOW);
  	}
  
  //car yellow
  	digitalWrite(13, LOW);
  	digitalWrite(12, HIGH);
    delay(2000);
  	digitalWrite(11, LOW);
    
 }
  
  for(int i = 0; i < 10; i++){
  // night
  //yellow
  	digitalWrite(12, HIGH);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
  	delay(1000);
  	digitalWrite(12, LOW);
  	delay(1000);
  
  }

}

Далее переносим наш проект в Arduino IDE –> там заменили код прописали переменные, для удобства.

const int RED_auto = 13;
const int YELLOW_auto = 12;
const int GREEN_auto = 11;
const int RED_peop = 10;
const int GREEN_peop = 9;

void setup()
{
  pinMode(RED_auto, OUTPUT);
  pinMode(YELLOW_auto, OUTPUT);
  pinMode(GREEN_auto, OUTPUT);
  pinMode(RED_peop, OUTPUT);
  pinMode(GREEN_peop, OUTPUT);
}

void loop(){
 for(int i = 0; i &lt; 3; i++){
  // car red
  	digitalWrite(RED_auto, HIGH);
  	digitalWrite(YELLOW_auto, LOW);  
  	digitalWrite(GREEN_auto, LOW);
  
  //people green
  	digitalWrite(RED_peop, LOW);
  	digitalWrite(GREEN_peop, HIGH);
  	delay(5000); 
  
  // people green
  	for(int i = 0; i&lt;3; i++){ //моргание три раза
    	digitalWrite(GREEN_peop, LOW);
    	delay(500);
  		digitalWrite(GREEN_peop, HIGH);
    	delay(500);
  	}
  
  //car yellow
  	digitalWrite(RED_auto, LOW);
  	digitalWrite(YELLOW_auto, HIGH);  
  	digitalWrite(GREEN_auto, LOW);
  
  // peole last
  	digitalWrite(RED_peop, HIGH);
  	digitalWrite(GREEN_peop, LOW);
  	delay(2000);
  
  // car green
  	digitalWrite(RED_auto, LOW);
  	digitalWrite(YELLOW_auto, LOW);  
  	digitalWrite(GREEN_auto, HIGH);
  
  // people red
  	digitalWrite(RED_peop, HIGH);
  	digitalWrite(GREEN_peop, LOW);
  	delay(4000);
  
  // car green
  	for(int i = 0; i&lt;3; i++){ //моргание три раза
    	digitalWrite(GREEN_auto, LOW);
    	delay(500);
  		digitalWrite(GREEN_auto, HIGH);
    	delay(500);
        digitalWrite(GREEN_auto, LOW);
  	}
  
  //car yellow
  	digitalWrite(RED_auto, LOW);
  	digitalWrite(YELLOW_auto, HIGH);
    delay(2000);
  	digitalWrite(GREEN_auto, LOW);
    
 }
  
  for(int i = 0; i &lt; 5; i++){
  // night
  //yellow
  	digitalWrite(YELLOW_auto, HIGH);
    digitalWrite(GREEN_peop, LOW);
    digitalWrite(RED_peop, LOW);
  	delay(1000);
  	digitalWrite(YELLOW_auto, LOW);
  	delay(1000);
    
  }
  
}

Процесс работы:

Проект имитирует работу настоящего перекрёстка:

  • Светофор переключается между дневным и ночным режимом.
  • В дневном режиме 3 раза проигрывается сценарий движения для машин и пешеходов.
  • В ночном режиме мигает только жёлтый свет для автомобилей.

Дневной режим

  1. Автомобильный светофор: верхние лампы — красный, жёлтый, зелёный.
  2. Пешеходный светофор: нижние две лампы — зелёный, красный.
  3. Цикл начинается с красного сигнала для авто и зелёного — для пешеходов.
  4. Зелёный пешеходный мигает три раза, потом выключается.
  5. Одновременно гаснет красный для авто, и включается жёлтый.
  6. Через 2 секунды — зелёный для авто.
  7. В конце фазы — зелёный для авто мигает трижды, после чего переключается на жёлтый.
  8. Снова включается красный для авто и зелёный для пешеходов.

Ночной режим (один для всех)

В ночное время у светофора машины получают только мигающий жёлтый сигнал. А пешеходный светофор в это время отдыхает — не работает вовсе.

Видео работы светофора:

Возможности использования в повседневной жизни

  • Модель для изучения правил дорожного движения
  • Демонстрация работы светофора в школах и кружках
  • Вариант проекта для начального уровня по робототехнике