0 Daumen
547 Aufrufe

Aufgabe:

Zeichne ein Flussdiagramm für die folgende Funktion (Quadrieren einer Zahl):

- Das Programm startet im Eingabemodus. Im Eingabemodus wird über das mehrmalige kurze (kleiner 200ms) Drücken eines Tasters eine Zahl A eingeben. Wird der Taster lange gedrückt so wechselt das Programm in den Ausgabemodus.

- Falls die Zahl A=20 erreicht oder bei A=0 die Taste lang gedrückt wird, dann leuchtet die LED einmal lange für eine Sekunde (Soll dem Benutzer anzeigen, dass er eine Fehlbedienung gemacht hat), und die Zahl A wird wieder auf 0 gesetzt und die LED geht wieder aus → Start von vorne.

- Im Ausgabemodus blinkt eine LED genau A*A mal, und zwar mit einer Blinkfrequenz von 5Hz. Nach dem letzten Mal Blinken wechselt das Programm zurück in den Eingabemodus und A wird wieder auf 0 gesetzt. Wird im Ausgabemodus (Also während des Blinkens) der Taster gedrückt (egal ob kurz/lang), kehrt das Programm sofort in den Eingabemodus zurück und A wird wieder auf 0 gesetzt und die LED geht wieder aus.


Hinweis: Eine Verzweigung mit der Bedingung „Taster lange gedrückt?“ kann es im Flussdiagram nicht geben! Wie sollte man das denn in Software realisieren? Ihr müsst daher die Zeitmessung und die Abfrage zwischen Drücken und Loslassen irgendwie im Flussdiagramm darstellen. Den Befehl millis() kennt das Flussdiagramm nicht, aber eventuell könnt ihr seine Funktion im Flussdiagramm beschreiben oder nachbauen. Oder es fällt Euch eine andere Idee ein, wie man die Drückzeit messen kann.

Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Da ich keine Bilder oder dynamische Inhalte generieren kann, beschreibe ich, wie ein solches Flussdiagramm aufgebaut werden könnte. Die Beschreibung erfolgt in einer strukturierten Art und Weise, die du dann in eine visuelle Form überführen kannst, etwa mit Zeichensoftware oder speziellen Tools für Flussdiagramme.

Start

- Beginn: Ein Startsymbol markiert den Beginn des Programms.

Initialisierung

- A = 0 setzen: Initialisiere die Variable A mit 0. Dies repräsentiert den Startwert der Eingabe.

- Warten auf Tastendruck: Hier prüfen, ob die Taste gedrückt wurde. Zweig in zwei Möglichkeiten:
- Kurzer Druck: A inkrementieren.
- Langer Druck: Wechsel in den Ausgabemodus (wenn möglich, basierend auf der Zeit, die der Button gedrückt gehalten wird, ohne die Funktion millis() zu verwenden, könntest du eine Zählschleife implementieren, die bis zum Loslassen des Tasters zählt und entscheidet, ob es sich um einen kurzen oder langen Druck handelt).

Eingabemodus

- A inkrementieren: Bei einem kurzen Tastendruck, inkrementiere A um 1.
- Nach jedem Schritt zurück zur "Warten auf Tastendruck"-Prüfung.

- A prüfen: Wenn A = 20 oder A = 0 und der Taster wird lang gedrückt, LED für eine Sekunde lang einschalten (als Fehlersignal), dann A = 0 setzen und zurück zum Anfang.

Ausgabemodus

- Prüfung "Taster gedrückt": Wenn der Taster zu irgendeinem Zeitpunkt im Ausgabemodus gedrückt wird (egal ob kurz oder lang), zurück in den Eingabemodus wechseln durch A = 0 setzen und LED ausschalten.

- Blinkzyklus: LED A*A mal mit einer Frequenz von 5 Hz blinken lassen. Dazu könnte man eine Schleife verwenden, die von 0 bis A*A zählt und für jedes Blinken wartet.

- Blinken: Einschalten der LED, kurze Pause (100 ms), Ausschalten der LED, kurze Pause (100 ms).

- Wechsel zurück in den Eingabemodus: Nach dem Ausführen der Blinksequenz A = 0 setzen und zurück zum Start des Eingabemodus.

Ende

- Ende der Ausführung: Symbol, das das Ende des Programms anzeigt, nachdem A zurückgesetzt wurde und das Programm wieder auf Tastendrücke wartet.

Der Schlüssel zu diesem Flussdiagramm wäre, wirkungsvoll zwischen kurzem und langem Tastendruck unterscheiden zu können, ohne direkt auf Funktionen wie millis() zurückgreifen zu können, was impliziert, dass eine alternative Methode zur Zeitmessung im Diagramm skizziert oder angedeutet werden muss, vielleicht durch wiederholte Prüfung des Tasterstatus in einer begrenzten Schleife, um zu bestimmen, ob es sich um einen kurzen oder langen Druck handelt. Denk daran, dass die genauen Details davon abhängen, wie du die Logik in Software umsetzen würdest, und dies ist nur ein hochleveliger Überblick dafür, wie das Flussdiagramm strukturiert sein könnte.
Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community