Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
uc-welt:gscheiduino:10-batterie [2016/01/05 14:54] – [Zusätzliche Funktionen] Hannes Jochriem | uc-welt:gscheiduino:10-batterie [2016/01/06 17:43] – [Aufgabenstellung] Hannes Jochriem | ||
---|---|---|---|
Zeile 17: | Zeile 17: | ||
===== Zusätzliche Funktionen ===== | ===== Zusätzliche Funktionen ===== | ||
+ | |||
+ | ==== if-else if-else ==== | ||
Damit man die Aufgabe einfacher lösen kann erweitern wir vorher noch unser if-else-then-Statement. Es gibt nämlich nicht nur wenn-dann-sonst sondern diese Anweisung kann weiter verschachtelt werden: | Damit man die Aufgabe einfacher lösen kann erweitern wir vorher noch unser if-else-then-Statement. Es gibt nämlich nicht nur wenn-dann-sonst sondern diese Anweisung kann weiter verschachtelt werden: | ||
Zeile 37: | Zeile 39: | ||
Der Ablauf sieht also so aus: Wenn Bedingung1 zutrifft wird Code1 ausgeführt. Ist Bedingung1 **false** wird Code1 übersprungen und die nächste Abfrage wird gestartet: Wenn Bedingung2 **true** ist, wird Code2 ausgeführt. Wenn diese Bedingung auch nicht zutrifft, wird Code3 ausgeführt. | Der Ablauf sieht also so aus: Wenn Bedingung1 zutrifft wird Code1 ausgeführt. Ist Bedingung1 **false** wird Code1 übersprungen und die nächste Abfrage wird gestartet: Wenn Bedingung2 **true** ist, wird Code2 ausgeführt. Wenn diese Bedingung auch nicht zutrifft, wird Code3 ausgeführt. | ||
- | Zusätzlich lernen wir noch zwei kombinierte Vergleiche für die Bedingung: | + | ==== Variablen ==== |
- | ^ Operator ^ Funktion ^ | + | Zusätzlich lernen wir noch einen ganz wichtigen Punkt, wenn wir fortgeschrittene Programme wollen: **Variablen** |
- | | a >= b | Überprüft, ob a größer oder gleich b ist | | + | |
- | | a <= b | Überprüft, | + | |
- | Hier ein Beispiel: | + | Variablen sind etwas total tolles. Wie der Name schon sagt sind sie variabel, das heißt, ihr Wert ist nicht fest vorgegeben wie etwa bei einem #define. |
- | ^Bedingung^Ergebnis^ | + | Wir verwenden in unserem Beispiel eine Variable, um den Wert von analogRead zu speichern. |
- | | 10 < = 11 | true | | + | |
- | | 3 > = 4 | false | | + | |
- | | 42 < = 42 | true | | + | |
- | | 41 < = 42 | true | | + | |
- | Damit können | + | Damit wir die Variable verwenden |
+ | <code c> | ||
+ | int analogwert = 0; | ||
+ | </ | ||
+ | |||
+ | Nun wird für diese Variable ein Speicherbereich im RAM des Prozessors reserviert. Damit keine zufälligen Daten im Speicherbereich stehen belegen wir diesen bei der Definition mit dem Wert " | ||
+ | |||
+ | Nun können wir in unserem Code der Variable Werte zuweisen, das funktioniert so: | ||
+ | |||
+ | <code c> | ||
+ | analogwert = 123; // Der Wert 123 wird zugewiesen | ||
+ | analogwert = analogRead(ANALOGPIN); | ||
+ | |||
+ | // Der Wert kann auch gelesen werden: | ||
+ | if(analogwert < 100) | ||
+ | { | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <note tip>Wenn wir zum Beispiel einen Wandlerwert des Analogeingangs öfter im Code benötigen, können wir ihn ganz am Anfang unserer loop()-Funktion in die Variable schreiben und dann mit der Variable weiterarbeiten.</ | ||
+ | |||
+ | Der komplette Code sieht dann so aus: | ||
+ | |||
+ | <code c kapitel10_variable.ino> | ||
+ | #define LED_ROT 13 | ||
+ | #define LED_GRUEN 11 | ||
+ | #define ANALOGPIN A0 | ||
+ | |||
+ | int analogwert = 0; | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | pinMode(LED_ROT, | ||
+ | pinMode(LED_GRUEN, | ||
+ | pinMode(ANALOGPIN, | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | analogwert = analogRead(ANALOGPIN); | ||
+ | if(analogwert> | ||
+ | { | ||
+ | digitalWrite(LED_ROT, | ||
+ | digitalWrite(LED_GRUEN, | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | digitalWrite(LED_ROT, | ||
+ | digitalWrite(LED_GRUEN, | ||
+ | } | ||
+ | } | ||
+ | </ | ||
===== Aufgabenstellung ===== | ===== Aufgabenstellung ===== | ||
+ | Die Aufgabe lautet wie folgt: | ||
+ | |||
+ | * Wenn die Batterie leer ist, soll die rote LED leuchten | ||
+ | * Wenn die Batterie gebraucht ist, soll die gelbe LED leuchten | ||
+ | * Wenn die Batterie ok ist, soll die grüne LED leuchten | ||
+ | |||
+ | Wenn diese Aufgabe gelöst ist, können wir damit Batterien testen indem wir die zwei Kabel wie im Bild gezeigt an die Batterie halten. | ||
+ | |||
+ | Um das Ganze ohne Batterie zu testen, können wir auch wieder das Poti wie in [[uc-welt: | ||
+ | |||
+ | Zur Kontrolle gibt es hier wieder [[uc-welt: | ||
+ | |||
+ | Bei dieser Aufgabe und beim Schwellwertschalter von [[uc-welt: | ||
+ | |||
+ | [[uc-welt: |