LeventeDaradici

Simple Traffic Lights - ARDUINO

Apr 22nd, 2021 (edited)
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.10 KB | None | 0 0
  1. #include <SoftwareSerial.h>
  2. #include <LiquidCrystal.h>
  3.  
  4. const int rs =12, en = 11, d4 = 5, d5 = 4, d6 =3, d7 = 2;
  5. LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
  6.  
  7. #define RED 10
  8. #define YELLOW 9
  9. #define GREEN 8
  10.  
  11. void setup()
  12. {
  13.     pinMode(RED, OUTPUT);
  14.     pinMode(YELLOW, OUTPUT);
  15.     pinMode(GREEN, OUTPUT);
  16.     Serial.begin(9600);
  17.     lcd.begin(16,2);
  18. }
  19.  
  20. void loop()
  21. {
  22.     int COUNTER = 0;
  23.     int REMAININGTIME = 0;
  24.  
  25.     int REDTIME = 20;
  26.     int YELLOWTIME = 5;
  27.     int GREENTIME = 20;
  28.  
  29.     digitalWrite(RED, LOW);
  30.     digitalWrite(YELLOW, LOW);
  31.     digitalWrite(GREEN, HIGH);
  32.         for (COUNTER = 0; COUNTER < GREENTIME; COUNTER++)
  33.         {
  34.           REMAININGTIME = GREENTIME - COUNTER;
  35.           lcd.setCursor(0,0);
  36.           lcd.print("GREEN for ");
  37.           if (REMAININGTIME > 9) lcd.setCursor(10,0);
  38.           if (REMAININGTIME < 10) lcd.setCursor(11,0);
  39.           lcd.print(REMAININGTIME);
  40.           lcd.setCursor(8,1);
  41.           lcd.print("seconds.");
  42.           lcd.display();
  43.           if (REMAININGTIME <= YELLOWTIME)
  44.           {
  45.             digitalWrite(YELLOW, HIGH);
  46.             digitalWrite(GREEN, HIGH);
  47.             digitalWrite(RED, LOW);
  48.           }
  49.           Serial.println(REMAININGTIME);
  50.           delay(1000);
  51.           lcd.noDisplay();
  52.           lcd.clear();
  53.         }
  54.     digitalWrite(RED, HIGH);
  55.     digitalWrite(YELLOW, LOW);
  56.     digitalWrite(GREEN, LOW);
  57.         for (COUNTER = 0; COUNTER < REDTIME; COUNTER++)
  58.         {
  59.           REMAININGTIME = REDTIME - COUNTER;
  60.           lcd.setCursor(0,0);
  61.           lcd.print("RED for ");
  62.           if (REMAININGTIME > 9) lcd.setCursor(8,0);
  63.           if (REMAININGTIME < 10) lcd.setCursor(9,0);
  64.           lcd.print(REMAININGTIME);
  65.           lcd.setCursor(8,1);
  66.           lcd.print("seconds.");
  67.           lcd.display();
  68.           if (REMAININGTIME <= YELLOWTIME)
  69.           {
  70.             digitalWrite(YELLOW, HIGH);
  71.             digitalWrite(RED, HIGH);
  72.             digitalWrite(GREEN, LOW);
  73.           }
  74.           Serial.println(REMAININGTIME);
  75.           delay(1000);
  76.           lcd.noDisplay();
  77.           lcd.clear();
  78.         }
  79. }
Add Comment
Please, Sign In to add comment