In der vergangenen Woche haben wir eine mögliche Lösung für eine Zähleinrichtung der Geldeingabe für den Kaffeeautoamten betrachtet.
Heute soll es nun um die Getränkeausgabe gehen.
Je nach Getränk muss ein anderer Preis berechnet. Dieser Preis wird dann vom Guthaben abgezogen.
Unser Kaffeeautomat bietet 3 Getränke
- Kaffee 30 Ct
- Espresso 40 Ct
- Cappuchino 50 Ct
Die Wahl des Getränks soll über die Buchstaben „k“ für Kaffee, „e“ für Espresso und „c“ für Cappuchino über die Tastatur erfolgen.
Nach der Wahl des Getränks wird das Getränk in der Maschine produziert und der Preis vom Guthaben, das vorher eingezahlt wurde, abgezogen.
Eine möglich Lösung, die ich im heutigen Video zeige, realisiert die Anforderung wieder über eine switch-case Anweisung.
Die Lösung ist noch ziemlich rudimentär und nicht sehr benutzerfreundlich. Prinzipiell funktioniert unser kleines Programm aber schon ganz gut. Wenn Du Lust hast, kannst Du das Programm vielleicht noch an einigen Stellen verbessern.
In der nächsten Folge werden wir eine Frage von Tim aufgreifen. Und zwar benötigen wir eine Möglichkeit, einzelne Bits zu setzen und zu löschen, wenn beispielsweise gleichzeitig eine 10 Ct – und eine 50 Ct- Münze eingeworfen wurde.
Ein wichtiger Hinweis:
Durch die printf()-Ausgabe wird der Programmcode schnell sehr groß. Mein Beispielprogramm kratzt schon knapp an das 2K-Limit.
Hier jusst Du also aufpassen. Wenn Dein Programm größer als 2 kByte werden sollte, wird es nicht auf den kostenfreien Simulator ausgeführt.
Dann solltest Du versuchen, an der einen oder anderen Stelle die printf()-Anweisungen zu kürzen.
Hier noch einmal der C-Code aus dem Video.
c=getchar(); switch (c) { case 'k': if (Betrag<30) { printf("Kaffee kostet 30 Cent\n"); printf("Restbetrag: %d Cent\n", Betrag); printf("Bitte werfen Sie (mindestens) %d Cent ein\n",30-Betrag); break; } printf("\nSie haben Kaffee gewählt\n"); printf("Restbetrag: %d Cent\n", Betrag-=30); c=0; break; case 'e': if (Betrag<40) { printf("Espresso kostet 40 Cent\n"); printf("Restbetrag: %d Cent\n", Betrag); printf("Bitte werfen Sie (mindestens) %d Cent ein\n",40-Betrag); break; } printf("\nSie haben Espresso gewählt\n"); printf("Restbetrag: %d Cent\n", Betrag-=40); c=0; break; case 'c': if (Betrag<50) { printf("Cappuchino kostet 50 Cent\n"); printf("Restbetrag: %d Cent\n", Betrag); printf("Bitte werfen Sie (mindestens) %d Cent ein\n",50-Betrag); break; } printf("\nSie haben Cappuchino gewählt\n"); printf("Restbetrag: %d Cent\n", Betrag-=50); c=0; break; }
Dieser Artikel ist Teil des Mikrocontroller-Kurses auf ET-Tutorials.de.
[ >> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses .]