Difference between revisions of "DIY-MedTech Arduino Basics - Team Tamberg"
From Hackteria Wiki
(→Vertiefung: LED schlauer schalten) |
(→Vertiefung: LED schlauer schalten) |
||
Line 14: | Line 14: | ||
===Vertiefung: LED schlauer schalten=== | ===Vertiefung: LED schlauer schalten=== | ||
− | + | <quote>Wie kann man eine LED Lampe so schalten, dass sie beim ersten Knopfdruck an geht, und beim nächsten wieder aus?</quote> | |
Mit einer State Machine (Zustandsmaschine) kann man sich den Zustand (hier s0, s1, s2, s3) merken: | Mit einer State Machine (Zustandsmaschine) kann man sich den Zustand (hier s0, s1, s2, s3) merken: |
Revision as of 12:04, 14 February 2018
Arduino Basics mit @tamberg im Rahmen von Medizintechnik DIY
Arduino Tutorial
http://www.tamberg.org/chopen/2017/LoRaWANIoTWorkshop.pdf
- Arduino Programmierumgebung (IDE) einrichten p.12, 13
- Text schicken (Serial Output) vom Arduino zum Computer p.16, 17
- LED blinken (Digital Output), p.24, 25
- Schalter lesen (Digital Input), p.27, 28
- LED schalten, p.29
- Licht messen (Analog Input), p.31, 32
- Servo steuern (PWM Output), p.36, 37
- Servo mit Licht steuern, p.38
Vertiefung: LED schlauer schalten
<quote>Wie kann man eine LED Lampe so schalten, dass sie beim ersten Knopfdruck an geht, und beim nächsten wieder aus?</quote>
Mit einer State Machine (Zustandsmaschine) kann man sich den Zustand (hier s0, s1, s2, s3) merken:
- Zustand s0: bei Switch Input LOW => bleibe in Zustand s0, bei HIGH => gehe zu Zustand s1
- Zustand s1: bei Switch Input HIGH => bleibe in Zustand s1, bei LOW => gehe zu Zustand s2; schalte LED ein
- Zustand s2: bei Switch Input LOW => bleibe in Zustand s2, bei HIGH => gehe zu Zustand s3
- Zustand s3: bei Switch Input HIGH => bleibe in Zustand s3, bei LOW => gehe zu Zustand s0; schalte LED aus
Im Programm benutzen wir eine if (...) {...} else if (...) {...}
Bedingung, um die State Machine zu bauen.
Den aktuellen Zustand speichern wir in der Variable state
, Übergänge in denselben Zustand, z.B. s2 => s2 lassen wir einfach weg.
int switchPin = 2; int ledPin = 13; int state = 0; void setup () { Serial.begin(9600); pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); } void loop () { int switchValue = digitalRead(switchPin); Serial.println(state); if ((state == 0) && (switchValue == HIGH)) { state = 1; } else if ((state == 1) && (switchValue == LOW)) { digitalWrite(ledPin, HIGH); state = 2; } else if ((state == 2) && (switchValue == HIGH)) { state = 3; } else if ((state == 3) && (switchValue == LOW)) { digitalWrite(ledPin, LOW); state = 0; } }