Advertisement
Guest User

Svetofor

a guest
Feb 7th, 2015
454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.74 KB | None | 0 0
  1. int RcarPin = 10; // пин подключения красного света для машин
  2. int YcarPin = 9; // пин подключения жёлтого света для машин
  3. int GcarPin = 8; // пин подключения зелёного света для машин
  4.  
  5. int RpeoplePin = 7; // пин подключения красного света для пешеходов
  6. int GpeoplePin = 6; // пин подключения зелёного света для пешеходов
  7.  
  8. int buttonPin = 2; // пин подключения кнопки
  9.  
  10. int buttonState = 0; // переменная для хранения состояния кнопки
  11.  
  12. void setup() {
  13.   pinMode(buttonPin, INPUT); // устанавливаем buttonPin в режим ввода
  14.  
  15.   for (int p = 6; p <=10; p++) {
  16.     pinMode(p, OUTPUT); // устанавливаем пины с 6 по 10 (LED) в режим вывода
  17.   }
  18.  
  19.   digitalWrite(GcarPin, HIGH); // изначально горит зелёный машинам
  20.   digitalWrite(RcarPin, LOW);
  21.   digitalWrite(YcarPin, LOW);
  22.  
  23.   digitalWrite(RpeoplePin, HIGH); // изначально горит красный пешеходам
  24.   digitalWrite(GpeoplePin, LOW);
  25.  
  26.   attachInterrupt(INT0, ChangeRejim, CHANGE);
  27.   }
  28.  
  29.   void ChangeRejim() { // функция смены режима по кнопке
  30.   if(digitalRead(buttonPin) == LOW && buttonState == 0)      
  31.     {
  32.       buttonState = 1;
  33.     }
  34.   }
  35.  
  36. void loop() {
  37.   if (buttonState == 1) { // если нажата кнопка
  38.     delay(3000); // ждём 3 секунды
  39.     for (int i=0; i<3; i++) { // три раза моргаем зелёным для машин
  40.       digitalWrite(GcarPin, LOW);
  41.         delay(500); // ждём 500 мс
  42.       digitalWrite(GcarPin, HIGH);
  43.         delay(500); // ждём 500 мс
  44.     }
  45.     digitalWrite(GcarPin, LOW); // гасим зелёный для машин
  46.       delay(50); // ждём 50 мс
  47.     digitalWrite(YcarPin, HIGH); // зажигаем жёлтый для машин
  48.       delay(3000); // ждём 3 секунды
  49.     digitalWrite(YcarPin, LOW); // гасим жёлтый для машин
  50.       delay(50); // ждём 50 мс
  51.     digitalWrite(RcarPin, HIGH); // зажигаем красный для машин
  52.     digitalWrite(RpeoplePin, LOW); // гасим красный для пешеходов
  53.     digitalWrite(GpeoplePin, HIGH); // зажигаем зелёный для пешеходов
  54.       for (int t = 0; t < 21; t++) { // запускаем обратный отсчёт
  55.           if (t > 17) { // на последних 3-х секундах мигаем зелёным пешеходам
  56.             digitalWrite(GpeoplePin, LOW); // гасим зелёный для пешеходов
  57.               delay(150); // ждём 150 мс
  58.             digitalWrite(GpeoplePin, HIGH); // зажигаем красный для пешеходов
  59.           }
  60.         delay(1000); // ждём 1 секунду
  61.       }
  62.     digitalWrite(GpeoplePin, LOW); // гасим зелёный для пешеходов
  63.     digitalWrite(RpeoplePin, HIGH); // зажигаем красный для пешеходов
  64.       delay(2000); // ждём 2 секунды
  65.     digitalWrite(YcarPin, HIGH); // зажигаем жёлтый + красный (уже горит) для машин
  66.       delay(2000); // ждём 2 секунды
  67.     digitalWrite(RcarPin, LOW); // гасим красный для машин
  68.     digitalWrite(YcarPin, LOW); // гасим жёлтый для машин
  69.     digitalWrite(GcarPin, HIGH); // зажигаем зелёный для машин
  70.    
  71.     buttonState = 0; // меняем состояние кнопки на "не нажата"
  72.   }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement