Wie sieht der Programmablaufplan einer Ampel bei akustischen Signal bei Grün aus?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

Bild zum Beitrag

/*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);
}
 - (Auto und Motorrad, programmieren, Elektrotechnik)

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:

Bild zum Beitrag

 - (Auto und Motorrad, programmieren, Elektrotechnik)

Tolllol531 
Fragesteller
 19.11.2021, 17:29

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

0
Tolllol531 
Fragesteller
 19.11.2021, 17:30
@Tolllol531

Ich hab mir paar Videos angesehen aber nicht wirklich viel verstanden

0
Elumania  19.11.2021, 17:59
@Tolllol531

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.

0
Elumania  20.11.2021, 19:16
@Tolllol531

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.

0
Tolllol531 
Fragesteller
 21.11.2021, 10:19
@Elumania

Noch eine Frage weißt du wie und wo man alles am arduino anschließen muss

0
Elumania  21.11.2021, 10:21
@Tolllol531

Selbstverständlich weiß ich das! :D Die Ampel ist ja nur ein kleinere Einstiegsversion in das Arduinothema

0
Rakimkush  23.11.2021, 17:54

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

0
Elumania  23.11.2021, 17:56
@Rakimkush

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.

0
Rakimkush  23.11.2021, 19:56
@Elumania

ja Aber habe so etwas ähnliches gerade in der Schule deswegen habe ich nachgeschaut und gefragt danke für die Antwort

0
Elumania  23.11.2021, 19:58
@Rakimkush

Ah ok, wenn du ein bisschen Hilfe brauchst können wir auch zusammenarbeiten. Arduino macht mir immer viel Spaß.

0
Rakimkush  23.11.2021, 20:05
@Elumania

Wie sieht denn der vollständige Programmablaufplan aus den brauche ich

0
Elumania  23.11.2021, 20:24
@Rakimkush

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.

0
Elumania  23.11.2021, 20:55
@Rakimkush

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?

0