Difference between revisions of "DIY-MedTech Arduino Basics - Team Tamberg"

From Hackteria Wiki
Jump to: navigation, search
(Vertiefung: LED schlauer schalten)
(Vertiefung: LED schlauer schalten)
Line 16: Line 16:
 
Wie kann man eine LED Lampe so schalten, dass sie beim ersten Knopfdruck an geht, und beim nächsten wieder aus?
 
Wie kann man eine LED Lampe so schalten, dass sie beim ersten Knopfdruck an geht, und beim nächsten wieder aus?
  
 +
Mit einer State Machine (Zustandsmaschine) kann man sich den Zustand merken:
 
[[File:LEDSwitchStateMachine.jpg]]
 
[[File:LEDSwitchStateMachine.jpg]]
 +
* 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
 +
 
<pre>
 
<pre>
 
int switchPin = 2;
 
int switchPin = 2;

Revision as of 11:58, 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

Wie kann man eine LED Lampe so schalten, dass sie beim ersten Knopfdruck an geht, und beim nächsten wieder aus?

Mit einer State Machine (Zustandsmaschine) kann man sich den Zustand merken: LEDSwitchStateMachine.jpg

  • 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
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;
    }
}