#define TrigPin 14
#define EchoPin 27
int G=21, Y=19, R=18;
float duration_uS, distance_cm;
void setup() {
  Serial.begin (115200);
  pinMode(TrigPin, OUTPUT);
  pinMode(EchoPin, INPUT);
  pinMode(G, OUTPUT);
  pinMode(Y, OUTPUT);
  pinMode(R, OUTPUT);
}
void loop() {
  digitalWrite(TrigPin, HIGH);                          // สร้างสัญญาณ pulse 10-microsecond ให้ขา TrigPin
  delayMicroseconds(10);                                // รอ 1/1,000,000 sec
  digitalWrite(TrigPin, LOW);
  duration_uS = pulseIn(EchoPin, HIGH);                 // วัดระยะเวลาของสัญญาณ pulse จากขา EchoPin
  distance_cm = 0.0173681 * duration_uS;                // แปลงอัตราความเร็วของเสียงในอากาศเป็นระยะทาง 2-400 cm
  Serial.print("distance: ");
  Serial.print(distance_cm);
  Serial.println(" cm");
  if (distance_cm > 60) {
    digitalWrite(G,HIGH);
    digitalWrite(Y,LOW);
    digitalWrite(R,LOW);
  } else if (distance_cm >= 40 & distance_cm <= 60) {
    digitalWrite(G,LOW);
    digitalWrite(Y,HIGH);
    digitalWrite(R,LOW);
  } else {
    digitalWrite(G,LOW);
    digitalWrite(Y,LOW);
    digitalWrite(R,HIGH);
  }
  delay(500);
}