#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27 ,16,2);
int LED_G = 13;
int LED_Y = 12;
int LED_R = 11;
int LED_G1 = 10;
int LED_Y1 = 9;
int LED_R1 = 8;
int LED_G2 = 7;
int LED_Y2 = 6;
int LED_R2 = 5;
int LED_G3 = 4;
int LED_Y3 = 3;
int LED_R3 = 2;
int S1 = A0;
int S2 = A1;
int S3 = A2;
int X = 0;
int Y = 0;
void setup()
{
pinMode(LED_G,OUTPUT);
pinMode(LED_Y,OUTPUT);
pinMode(LED_R,OUTPUT);
pinMode(LED_G1,OUTPUT);
pinMode(LED_Y1,OUTPUT);
pinMode(LED_R1,OUTPUT);
pinMode(LED_G2,OUTPUT);
pinMode(LED_Y2,OUTPUT);
pinMode(LED_R2,OUTPUT);
pinMode(LED_G3,OUTPUT);
pinMode(LED_Y3,OUTPUT);
pinMode(LED_R3,OUTPUT);
pinMode(S1, INPUT_PULLUP);
pinMode(S2, INPUT_PULLUP);
pinMode(S3, INPUT_PULLUP);
pinMode(1, OUTPUT);
pinMode(0, OUTPUT);
pinMode(X, OUTPUT);
pinMode(Y, OUTPUT);
}
void loop (){
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(3,0);//กำหนดเคอร์เซอร์อยู่ตัวอักษรตำแหน่งที่4 แถวที่1 เตรียมพิมพ์ข้อความ
lcd.print("CHOOSE MODE");//พิมพ์ข้อความ "CHOOSE MODE"
lcd.setCursor(1,1);//กำหนดเคอร์เซอร์อยู่ตัวอักษรตำแหน่งที่2 แถวที่2 เตรียมพิมพ์ข้อความ
lcd.print("................");//พิมพ์ข้อความ "................"
digitalWrite(LED_R, LOW);
digitalWrite(LED_R1, LOW);
digitalWrite(LED_R2, LOW);
digitalWrite(LED_R3, LOW);
delay(3000);
X = digitalRead(S1);
if(X == 0){////โหมดA Auto
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(3,0);//กำหนดเคอร์เซอร์อยู่ตัวอักษรตำแหน่งที่4 แถวที่1 เตรียมพิมพ์ข้อความ
lcd.print("MODE A");//พิมพ์ข้อความ "MODE A"
lcd.setCursor(3,1);//กำหนดเคอร์เซอร์อยู่ตัวอักษรตำแหน่งที่4 แถวที่2 เตรียมพิมพ์ข้อความ
lcd.print("AUTO MODE");//พิมพ์ข้อความ "AUTO MODE"
digitalWrite(LED_G, HIGH);
digitalWrite(LED_R1, HIGH);
digitalWrite(LED_R2, HIGH);
digitalWrite(LED_R3, HIGH);
delay(3000);
digitalWrite(LED_G, LOW);
digitalWrite(LED_Y, HIGH);
delay(1000);
digitalWrite(LED_Y, LOW);
digitalWrite(LED_R, HIGH);
delay(1000);
digitalWrite(LED_G1, HIGH);
digitalWrite(LED_R1, LOW);
delay(3000);
digitalWrite(LED_G1, LOW);
digitalWrite(LED_R, HIGH);
digitalWrite(LED_Y1, HIGH);
delay(1000);
digitalWrite(LED_Y1, LOW);
digitalWrite(LED_R, HIGH);
digitalWrite(LED_R1, HIGH);
delay(1000);
digitalWrite(LED_G2, HIGH);
digitalWrite(LED_R2, LOW);
delay(3000);
digitalWrite(LED_G2, LOW);
digitalWrite(LED_Y2, HIGH);
delay(1000);
digitalWrite(LED_Y2, LOW);
digitalWrite(LED_R2, HIGH);
delay(1000);
digitalWrite(LED_G3, HIGH);
digitalWrite(LED_R3, LOW);
delay(3000);
digitalWrite(LED_G3, LOW);
digitalWrite(LED_Y3, HIGH);
delay(1000);
digitalWrite(LED_Y3, LOW);
digitalWrite(LED_R3, HIGH);
digitalWrite(LED_R, HIGH);
delay(1000);
digitalWrite(LED_R, LOW);
return 0;
}
else if(X == 1){////โหมดB
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(3,0);//กำหนดเคอร์เซอร์อยู่ตัวอักษรตำแหน่งที่4 แถวที่1 เตรียมพิมพ์ข้อความ
lcd.print("MODE B");//พิมพ์ข้อความ "MODE B"
lcd.setCursor(3,1);//กำหนดเคอร์เซอร์อยู่ตัวอักษรตำแหน่งที่4 แถวที่2 เตรียมพิมพ์ข้อความ
lcd.print("CHOOSE A WAY");//พิมพ์ข้อความ "CHOOSE A WAY"
delay(3000);
X = digitalRead(S2);
Y = digitalRead(S3);
if((X == 0) && (Y == 0)){////แยกที่ 1
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(3,0);//กำหนดเคอร์เซอร์อยู่ตัวอักษรตำแหน่งที่4 แถวที่1 เตรียมพิมพ์ข้อความ
lcd.print("MODE B");//พิมพ์ข้อความ "MODE B"
lcd.setCursor(3,1);//กำหนดเคอร์เซอร์อยู่ตัวอักษรตำแหน่งที่4 แถวที่2 เตรียมพิมพ์ข้อความ
lcd.print("WAY 1");//พิมพ์ข้อความ "WAY 1"
digitalWrite(LED_G, HIGH);
digitalWrite(LED_R1, HIGH);
digitalWrite(LED_R2, HIGH);
digitalWrite(LED_R3, HIGH);
delay(3000);
digitalWrite(LED_G, LOW);
digitalWrite(LED_Y, HIGH);
delay(1000);
digitalWrite(LED_Y, LOW);
digitalWrite(LED_R, HIGH);
delay(1000);
digitalWrite(LED_R, LOW);
delay(3000);
return 0;
}
X = digitalRead(S2);
Y = digitalRead(S3);
if((X == 0) && (Y == 1)){////แยกที่ 2
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(3,0);//กำหนดเคอร์เซอร์อยู่ตัวอักษรตำแหน่งที่4 แถวที่1 เตรียมพิมพ์ข้อความ
lcd.print("MODE B");//พิมพ์ข้อความ "MODE B"
lcd.setCursor(3,1);//กำหนดเคอร์เซอร์อยู่ตัวอักษรตำแหน่งที่4 แถวที่2 เตรียมพิมพ์ข้อความ
lcd.print("WAY 2");//พิมพ์ข้อความ "WAY 2"
digitalWrite(LED_G1, HIGH);
digitalWrite(LED_R, HIGH);
digitalWrite(LED_R2, HIGH);
digitalWrite(LED_R3, HIGH);
delay(3000);
digitalWrite(LED_G1, LOW);
digitalWrite(LED_Y1, HIGH);
delay(1000);
digitalWrite(LED_Y1, LOW);
digitalWrite(LED_R1, HIGH);
delay(1000);
digitalWrite(LED_R1, LOW);
delay(3000);
return 0;
}
X = digitalRead(S2);
Y = digitalRead(S3);
if((X == 1) && (Y == 0)){////แยกที่ 3
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(3,0);//กำหนดเคอร์เซอร์อยู่ตัวอักษรตำแหน่งที่4 แถวที่1 เตรียมพิมพ์ข้อความ
lcd.print("MODE B");//พิมพ์ข้อความ "MODE B"
lcd.setCursor(3,1);//กำหนดเคอร์เซอร์อยู่ตัวอักษรตำแหน่งที่4 แถวที่2 เตรียมพิมพ์ข้อความ
lcd.print("WAY 3");//พิมพ์ข้อความ "WAY 3"
digitalWrite(LED_G2, HIGH);
digitalWrite(LED_R, HIGH);
digitalWrite(LED_R1, HIGH);
digitalWrite(LED_R3, HIGH);
delay(3000);
digitalWrite(LED_G2, LOW);
digitalWrite(LED_Y2, HIGH);
delay(1000);
digitalWrite(LED_Y2, LOW);
digitalWrite(LED_R2, HIGH);
delay(1000);
digitalWrite(LED_R2, LOW);
delay(3000);
return 0;
}
X = digitalRead(S2);
Y = digitalRead(S3);
if((X == 1) && (Y == 1)){////แยกที่ 4
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(3,0);//กำหนดเคอร์เซอร์อยู่ตัวอักษรตำแหน่งที่5 แถวที่1 เตรียมพิมพ์ข้อความ
lcd.print("MODE B");//พิมพ์ข้อความ "MODE B"
lcd.setCursor(3,1);//กำหนดเคอร์เซอร์อยู่ตัวอักษรตำแหน่งที่5 แถวที่2 เตรียมพิมพ์ข้อความ
lcd.print("WAY 4");//พิมพ์ข้อความ "WAY 4"
digitalWrite(LED_G3, HIGH);
digitalWrite(LED_R, HIGH);
digitalWrite(LED_R1, HIGH);
digitalWrite(LED_R2, HIGH);
delay(3000);
digitalWrite(LED_G3, LOW);
digitalWrite(LED_Y3, HIGH);
delay(1000);
digitalWrite(LED_Y3, LOW);
digitalWrite(LED_R3, HIGH);
delay(1000);
digitalWrite(LED_R3, LOW);
delay(3000);
return 0;
}
}
}