diff --git a/Arduino_Grundlagen/06_Schalter/03_Schalter_Schaltplan.svg b/Arduino_Grundlagen/06_Schalter/03_Schalter_Schaltplan.svg deleted file mode 100644 index ff11fcd..0000000 --- a/Arduino_Grundlagen/06_Schalter/03_Schalter_Schaltplan.svg +++ /dev/null @@ -1,431 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - - - 2 - - - 1 - - - 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - D0/RX - - - - - D1/TX - - - - - D2 - - - - - D3 PWM - - - - - D4 - - - - - D5 PWM - - - - - D6 PWM - - - - - D7 - - - - - D8 - - - - - D9 PWM - - - - - D10 PWM/SS - - - - - D11 PWM/MOSI - - - - - D12/MISO - - - - - - - D13/SCK - - - - - ICSP2 MISO - - - - - ICSP2 SCK - - - - - ICSP2 MOSI - - - - - - - RESET - - - - - RESET2 - - - - - AREF - - - - - IOREF - - - - - A0 - - - - - A1 - - - - - A2 - - - - - A3 - - - - - - - - - - - A4/SDA - - - - - - - A5/SCL - - - - - N/C - - - - - - - - - - - - - - - - - GND - - - - - - - - - - - - - 3V3 - - - - - - - - - - - - - - - - - 5V - - - - - - - - - - - - - VIN - - - - - - - - Arduino - - - Uno - - - (Rev3) - - - ICSP - - - - - - - - - - - - - - - - - - - - 2 - - - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Part1 - - - - - - - LED1 - Red (633nm) - - - - - - - R1 - 220Ω - ±5% - - - - - - - S1 - - - - diff --git a/Arduino_Grundlagen/06_Schalter/03_Schalter.fzz b/Arduino_Grundlagen/06_Schalter/06_Schalter.fzz similarity index 100% rename from Arduino_Grundlagen/06_Schalter/03_Schalter.fzz rename to Arduino_Grundlagen/06_Schalter/06_Schalter.fzz diff --git a/Arduino_Grundlagen/06_Schalter/06_Schalter.ino b/Arduino_Grundlagen/06_Schalter/06_Schalter.ino index ca2eae1..e87b23a 100644 --- a/Arduino_Grundlagen/06_Schalter/06_Schalter.ino +++ b/Arduino_Grundlagen/06_Schalter/06_Schalter.ino @@ -1,3 +1,8 @@ +// Arduino Grundkurs des Z-Lab Bruchsal. +// Dies ist Übung 6: Ein Schalter +// Eine ausführliche Beschreibung mit Erklärungen findest du hier: +// https://git.digital-infinity.de/DigitalInfinity/Z-Lab/src/branch/main/Arduino_Grundlagen/06_Schalter +// Dort findest du auch eine Skizze für die Verkabelung const int buttonPin = 12; const int ledPin = 13; diff --git a/Arduino_Grundlagen/06_Schalter/03_Schalter_Steckplatine.svg b/Arduino_Grundlagen/06_Schalter/06_Schalter.svg similarity index 100% rename from Arduino_Grundlagen/06_Schalter/03_Schalter_Steckplatine.svg rename to Arduino_Grundlagen/06_Schalter/06_Schalter.svg diff --git a/Arduino_Grundlagen/06_Schalter/projekt_oeffnen.png b/Arduino_Grundlagen/06_Schalter/projekt_oeffnen.png new file mode 100644 index 0000000..1b6a0bd Binary files /dev/null and b/Arduino_Grundlagen/06_Schalter/projekt_oeffnen.png differ diff --git a/Arduino_Grundlagen/06_Schalter/readme.md b/Arduino_Grundlagen/06_Schalter/readme.md new file mode 100644 index 0000000..48328f7 --- /dev/null +++ b/Arduino_Grundlagen/06_Schalter/readme.md @@ -0,0 +1,103 @@ +TODO: Überarbeiten + +# Z-Lab Arduino-Grundkurs Übung 6: Ein Schalter (ein digitaler Sensor) + +In dieser Übung verwenden wir einen Schalter. + +Zuerst öffnen wir das Projekt über den gewohnten Weg. Der Name ist "05_Schalter" + +![Projekt öffnen](projekt_oeffnen.png) + +## Verkabeln wir den Piepser mit dem Arduino mit dem Arduino + +So muss da aussehen, wenn wir fertig sind: + + + +So und dann geht's wieder ans Programmieren. + +In der Datei 06_Schalter.ino finden wir (ohne die ganzen Kommentare) folgenden Quellcode: + +```c +const int buttonPin = 12; +const int ledPin = 13; + +int buttonState = 0; + +void setup() { + pinMode(ledPin, OUTPUT); + pinMode(buttonPin, INPUT); +} + +void loop() { + buttonState = digitalRead(buttonPin); + + if (buttonState == HIGH) { + digitalWrite(ledPin, HIGH); + } else { + digitalWrite(ledPin, LOW); + } +} +``` + +Auch hier hast du das meiste schon gesehen. +Wir haben hier aber unsere erste sogenannte Kontrollstruktur. +Kontrollstrukturen sorgen dafür, dass Programme unter bestimmten Bedingungen nur bestimmte Dinge machen oder oder nicht machen. +Wir erklären das gleich ganz genau :) + +## digitalRead() + +```c +buttonState = digitalRead(buttonPin); +``` + +Die Funktion digitalRead() liest einen digitalen Sensor aus. +Ein Schalter wie in unserem Beispiel gibt nur die 0 zurück, wenn er nicht gedrückt ist oder gibt die 1 zurück, wenn er gedrückt ist. +Dazwischen gibt es nicht. +Damit wir gleich wissen, ob der Knopf gedrückt ist oder nicht speichern wir das Ergebnis in der Variable "buttonState" ab, also Schalterstatus. + +## if else (und elseif) + +Jetzt verwenden wir die Variable "buttonState" und schauchen, ob der Knopf gedrückt ist. +Dazu gibt es if, else und (wird hier nicht verwendet elseif): + + +```c + if (buttonState == HIGH) { + digitalWrite(ledPin, HIGH); + } else { + digitalWrite(ledPin, LOW); + } +} +``` + +"if" heißt "wenn". Wenn also der buttonStage "HIGH" wie "an" ist dann soll das gemacht werden, was zwischen den geschwungenen Klammern steht, also die LED soll eingeschaltet werden. +"else", also "ansonsten" soll das gemacht werden, was in der zweiten Klammer steht. +Es gibt auch noch "elseif", das heißt so viel wie "ansonsten wenn". + +Um Dinge zu vergleichen gibt es viele verschiedene Möglichkeiten, sogenannte Operatoren. +Mit diesen kannst du z.B. schauen, ob irgendwas gleich, ungleich, größer oder kleiner als etwas anderes ist. +Hier sind ein paar dieser Operatoren: +* "==" prüft, ob etwas gleich ist +* "!=" prüft, ob etwas ungleich ist +* "<" prüft, ob der Wert links kleiner ist als der Wert rechts +* ">" prüft, ob der Wert links größer ist als der Wert rechts +* "<=" prüft, ob der Wert links kleiner oder gleich dem Wert rechts ist +* ">=" prüft, ob der Wert links größer oder gleich dem Wert rechts ist + + +## Und wie könnte es weiter gehen? +* Kannst du das Programm auch so abändern, dass die LED 5 Sekunden an bleibt, wenn der Knopf gedrückt wird? +
+ Hier klicken für Lösungsvorschläge - aber bitte erst selbst probieren! + + ```c + if (buttonState == HIGH) { + digitalWrite(ledPin, HIGH); + delay(5000); + } else { + digitalWrite(ledPin, LOW); + } + } + ``` +