Wie sieht der Programmablaufplan einer Ampel bei akustischen Signal bei Grün aus?
Könnte mir den jemand bitte zeigen und wenn’s keine Umstände macht dann auch den Stromlaufplan?
2 Antworten
Ich habe einen Code für die Ampelschaltung geschrieben. Es gibt einen Summer für die seheingeschränkten Fußgänger bei ihrer Grünphase.
/*Ampelschaltung
a) Die Autoampel zeigt ständig grün an, die Fußgängerampel ständig rot.
b) Der Taster wird ständig ausgelesen.
c) Wurde der Taster gedrückt, so wechselt die Autoampel auf gelb
und anschließend auf rot.
d) Nach kurzer Pause beginnt die Grünphase für die Fußgänger
e) Gleichzeit geht der Summer an und signalisiert sehgeschädigten
Personen die Grünphase
f) Nach einer Zeit Sekunden hört der Summer auf.
g) Die Grünphase für Fußgänger ist beendet. Die Fußgänger haben wieder rotes Licht.
h) Die Ampel für Autos wechselt von Rot auf Gelb auf Grün.
*/
//Anzahl der Sekunden, die Fußgänger Zeit haben sollen die Straße zu überqueren
const int gruenphaseFussgaenger = 5000; //in Millisekunden
//Sicherheitszeit zwischen Ende der Grünphase für Fußgänger bis die
//Autoampel wieder auf Grün schaltet.
const int sicherheitszeitFussgaenger = 3000; //in Millisekunden
//Pinbelegung
int pinSummer = 3; //sollte ein ~ PWM Pin sein.
int pinTaster = 5;
int pinLEDgruenFussgaenger = 6;
int pinLEDrotFussgaenger = 7;
int pinLEDgruenAuto = 8;
int pinLEDgelbAuto = 9;
int pinLEDrotAuto = 10;
//Widerstand für LEDs ca. 220 Ohm
void setup()
{
pinMode(pinSummer, OUTPUT); //Auf Stromabgabe schalten
pinMode(pinTaster, INPUT); //Auf Eingang, also lesend schalten
digitalWrite(pinTaster, HIGH); // aktiviert den Pull- Up- Widerstand. Taster können so ohne extra Widerstand angeschlossen werden.
pinMode(pinLEDgruenFussgaenger, OUTPUT);
pinMode(pinLEDrotFussgaenger, OUTPUT);
pinMode(pinLEDgruenAuto, OUTPUT);
pinMode(pinLEDgelbAuto, OUTPUT);
pinMode(pinLEDrotAuto, OUTPUT);
Serial.begin(9600); //Serielle Schnittstelle zur Fehlersuche
}
void loop()
{ //a)
digitalWrite(pinLEDgruenAuto, HIGH);
digitalWrite(pinLEDrotFussgaenger, HIGH); //Fußgänger Rot
//b) Endlosschleife solange der Taster nicht gedrückt wurde.
while (digitalRead(pinTaster) == LOW) {
delay(5); //Zur Stabilität des Programms
}
//Warte bis der Taster wieder losgelassen wurde
while (digitalRead(pinTaster) == HIGH) {
delay(5); //Zur Stabilität des Programms
}
//c)
digitalWrite(pinLEDgruenAuto, LOW);
digitalWrite(pinLEDgelbAuto, HIGH);
delay(2000); // Wartezeit
digitalWrite(pinLEDgelbAuto, LOW);
digitalWrite(pinLEDrotAuto, HIGH);
//d)
delay(2500); // Wartezeit
digitalWrite(pinLEDrotFussgaenger, LOW); //Fußgänger Rot aus
digitalWrite(pinLEDgruenFussgaenger, HIGH); //Fußgänger grün an
//e)
tone(pinSummer, 100); //akustisches Signal ausgeben
delay(gruenphaseFussgaenger); // Wartezeit
//f)
noTone(pinSummer); //akustisches Signal beenden
digitalWrite(pinLEDgruenFussgaenger, LOW); //Fußgängergrün beenden
//g)
digitalWrite(pinLEDrotFussgaenger, HIGH); //Fußgänger Rot
delay(sicherheitszeitFussgaenger); // Wartezeit
//h)
digitalWrite(pinLEDgelbAuto, HIGH);
delay(1500); // Wartezeit
digitalWrite(pinLEDrotAuto, LOW);
digitalWrite(pinLEDgelbAuto, LOW);
}

Du hattest schon mal so eine Frage. Hattest du da Probleme? Was hast du schon geschafft? Du darfst gerne mit mir reden, dann kann ich dir auch besser helfen.
Nachtrag:

Wieso du? Du bist doch nicht der Fragesteller?
Ja der Ton muss da rein. Das ist nicht die vollständige Lösung, es ist ein weit fortgeschrittener Plan. Steht auch in einem Kommentar von mir.
Ah ok, wenn du ein bisschen Hilfe brauchst können wir auch zusammenarbeiten. Arduino macht mir immer viel Spaß.
Kommt doch drauf an was du machen willst. Hier könnte man einfach den einen Block erweitern zu
Summer an
15 Sekunden Pause
Summer aus
Diese Ampel hat jedoch momentan nur Lichter für die Autos. Ich weiß nicht ob die Fußgänger auch noch eine extra rot und grün Lampe bekommen sollen. Dann müsste man den Plan wieder weiter ergänzen.
Was ist dein Projekt? Deine letzte Frage war was mit Medikamentenpresse nicht mit Ampel.
Ich hätte den Vorschlag, dass wir einen Discord Server einrichten, wo man sich auch mal gegenseitig helfen kann und wo man besser erklären kann. Habt ihr Interesse? Könntest du einen einrichten, falls du das kannst?
Das Problem ist das ich eine Zeit lang nicht in der Schule war weil ich mein Bein gebrochen habe und mir jetzt Sörens vor dem Kopf geworfen wird und ich überhaupt keine Ahnung habe
Ich hab mir paar Videos angesehen aber nicht wirklich viel verstanden
Ich habe dir einen Programmablaufplan als Beispiel erstellt und in der Hauptanwort ergänzt. Den kann man natürlich noch verbessern. Die Rechtecke sind Vorgänge. Das rote Parallelogramm ist eine Benutzereingabe. Das gelbe sind Schleifen.
Eine Schleife besteht aus einem Schleifenkopf und einem Schleifenfuß. Im Schleifenkopf steht eine Bedingung drinnen. Ist die Bedingung erfüllt, dann wird die Schleife ausgeführt. Schau dir den Plan an und prüfe ob die Schritte logisch sind, ob dort noch etwas fehlt, oder vielleicht ob du etwas anders gestaltet hättest. Du kannst auch Fragen dazu stellen.
Sehr gut. Dann kannst du ja weiterentwickeln. Die Fußgänger bekommen auch noch eine rote und grüne LED und dann muss ja noch der Ton integriert werden von dem du geschrieben hast.
Noch eine Frage weißt du wie und wo man alles am arduino anschließen muss
Selbstverständlich weiß ich das! :D Die Ampel ist ja nur ein kleinere Einstiegsversion in das Arduinothema
Zu dem Programmablaufplan den du geschickt hast bei dem Vorgang muss ich da nicht den Ton reinschreiben da es ja um eine blindenampel geht mit Ton bei grün