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 25: Line 25:
 
Im Programm benutzen wir eine <code>if (...) {...} else if (...) {...}</code> Bedingung, um die State Machine zu bauen.
 
Im Programm benutzen wir eine <code>if (...) {...} else if (...) {...}</code> Bedingung, um die State Machine zu bauen.
  
Die Zustände speichern wir in der Variable <code>state</code>.  
+
Den aktuellen Zustand speichern wir in der Variable <code>state</code>.  
 
<pre>
 
<pre>
 
int switchPin = 2;
 
int switchPin = 2;

Revision as of 11:01, 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 (hier s0, s1, s2, s3) 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

Im Programm benutzen wir eine if (...) {...} else if (...) {...} Bedingung, um die State Machine zu bauen.

Den aktuellen Zustand speichern wir in der Variable state.

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