int buttonState;
#include <ESP32Servo.h>
Servo myservo;
int pos = 90;
#include <LiquidCrystal.h>
LiquidCrystal lcd(33, 32, 25, 23, 22, 21);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(12, OUTPUT); // Grün
pinMode(13, OUTPUT); // Gelb
pinMode(14, OUTPUT); // Rot
pinMode(18, OUTPUT); // Fussgänger Grün
pinMode(19, OUTPUT); // Fussgänger Rot
pinMode(15, INPUT_PULLUP); // Knopf
pinMode(27, OUTPUT); // Ton
myservo.attach(26); // Servo
lcd.begin(16,2); // LCD Screen
lcd.print(" Dont Walk!"); // LCD Erste Ausgabe
}
void AmpelZuRot() { // Ampel zu Rot wechseln
digitalWrite(12, LOW);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
digitalWrite(14, HIGH);
delay(2000);
}
void FussgaengerAmpel() { // Fussgängerampel mit Ton und Schranke umschalten
digitalWrite(19, LOW);
digitalWrite(18, HIGH);
myservo.write(0);
lcd.clear();
lcd.print(" Walk!");
tone(27, 31, 1000);
delay(200);
lcd.clear();
lcd.print(" ...3...");
tone(27, 31, 1000);
delay(200);
lcd.clear();
lcd.print(" ...2...");
tone(27, 31, 1000);
delay(200);
lcd.clear();
lcd.print(" ...1...");
tone(27, 31, 1000);
myservo.write(90);
lcd.clear();
lcd.print(" Dont Walk!");
digitalWrite(18, LOW);
digitalWrite(19, HIGH);
delay(2000);
}
void AmpelZuGruen() { // Ampel zu Grün wechseln
digitalWrite(14, LOW);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
digitalWrite(12, HIGH);
digitalWrite(19, HIGH);
buttonState = digitalRead(15); // Wenn der Knopf gedrückt wird, mache das:
if (buttonState == LOW) {
delay(1000);
AmpelZuRot();
FussgaengerAmpel();
AmpelZuGruen();
}
}