Du bist hier:
Arduino Sensor Schalter
1. Vorbereiten
Der Schalter ist der simpelst mögliche Arduino Sensor. Er kann eine Verbindung herstellen oder unterbrechen. Je nachdem, wie du ihn verlötest.
2. Programmieren
2.1. Mit einem Schalter eine LED direkt steuern:
Beachte den kleinen Unterschied (Bilder 1+2):
- beim ersten Beispiel wird der Schalter digital ausgelesen (kann nur Ein oder Aus sein)
- beim zweiten Beispiel wird der Schalter analog ausgelesen. (kann 0% oder 100% sein)
- Du erkennst den Unterschied am %-Zeichen in beiden Blöcken.
2.2. Einen Schalter abfragen, um eine LED zu steuern:
Folgendes Programm (Bild 3) fragt den Zustand des Schalters ab. Dies ermöglicht es, komplexere Vorgänge an seinen Zustand zu binden:
- Das Programm fragt: ist der Schalter gedrückt?
Das nächste Programm (Bild 4) schaltet die LED ebenfalls ein und aus..
- Es fragt: ist der Schalterwiderstand höher oder tiefer als 60%?
3. Aktivität
3.1. Mit dem Schalter eine LED einblenden lassen
Baue ein einfaches Möbel: Sideboard, Wandschränklein, Tischmöbel, Schatulle. Rüste dieses mit einer Innenbeleuchtung aus.
Entwickle ein Programm, welches eine LED ↗ oder einen Neopixl Stripe ↗ einblenden lässt, wenn ein Schalter ↗ gedrückt (losgelassen) wird. Siehe folgendes Video:
3.2. Problem aufteilen
Teile die Aufgaben, die dein Mikrocontroller lösen muss, in Teilaufgaben auf:
- Ein Schalter soll abgefragt werden: wenn-Frage (klick für Info)
- Eine Aktion soll ausgeführt werden: zähle-von-bis-Schleife (klick für Info)
Folgende PGLU-Hardware ist dazu notwendig:
- Schalter ↗ (oder Reed-Kontakt ↗) als Sensor
- LEDs ↗ (oder Neopixel Stripe ↗) als Aktor
- Dieses Programm ist noch etwas dumm: Es weiss nicht was es tun soll, wenn die LED fertig eingeblendet ist. Daher beginnt der Blendvorgang bei geöffneter Tür immer wieder von neuem. Nicht gut :-(
- Teste dieses Programm im PGLU-Simulator, wo du diese "Dummheit" gut nachvollziehen kannst.
3.3. Flexibler sein, dank Spiel mit Variablen
Hier eine bessere Lösung für den sensorgesteuerten Dimmer, welche ohne zähle-von-bis Schleife auskommt. Dank der Variable "Helligkeit" kann der Blend-Vorgang gestoppt werden, wenn die volle Helligkeit erreicht ist. Sie funktioniert nach dem Prinzip Helligkeit = Helligkeit + 1.
- Tipp I: Eine Variable ist ein Gefäss, welches eine austauschbare Zahl enthält
- Tipp II: siehe 2.3 Alternative Programmierung der zähle-von-bis Schleife
3.4. Was passiert, wenn die Tür wieder geschlossen wird?
In der Welt der Programmierung gilt es, jede mögliche Situation vorauszusehen: z.B. was passiert, wenn die Tür wieder geschlossen wird, bevor die LED fertig eingeblendet ist?
Dieses Programm knüpft an das "Spiel mit Variablen" an und steuert die Variable "Helligkeit" je nach Zustand der Tür auf verschiedene Arten.
- Es erhöht diese Variable alle 10ms um 1%, sobald die Tür geöffnet wird
- Es vermindert diese Variable alle 10ms um 1%, sobald die Tür geschlossen wird
- Es fragt: Ist die Variable schon bei 100%? Dann lasse sie dort.. deine LED soll/kann ja nie heller als 100% leuchten
- Es fragt: Ist die Variable tiefer als 0%? Dann lasse sie dort.. deine LED kann ja nicht dunkler als 0% leuchten
- Du kannst das Programm auch im Simulator testen
- Es ist schon recht viel. Versuch es Zeile für Zeile zu verstehen.
- Wozu ist der Block "pausiere 10 ms" gut? Nimm ihn einfach mal raus, dann verstehst du es!
4. Challenge
4.1. Erweiterungen für die Möbelbeleuchtung
Erweitere deine Möbel Innenbeleuchtung nach deinem Geschmack:
- Setze Neopixel Stripes ein (hier kaufen ↗)
- Programmiere einen Farbverlauf:
- beim Öffnen: dunkel-nacht-blau
- wenn offen: hell-sonnig-warmweiss
- Programmiere ein Lauflicht:
- Beim Öffnen blenden die LEDs von der linken Seite her ein
- Kreiere irgend eine tolle Lightshow, wenn die Tür bedient wird
- Dein Möbel besitzt eine Glastüre?
- Das obenstehende Programm kann bereits die LED ausblenden, sobald die Tür wieder geschlossen wird.
- ...
4.2. Weitere Anwendungen
Das PGLU-Projekt Roboter Auto ist der Klassiker unter den Projekten und eignet sich hervorragend für den Einstieg in die Robotik.
- Zum Projekt Roboter Auto ↗
- Idee: einfachen Spurhalteassistenten programmieren ↗
- Webrecherche: Automatisiertes Fahren ↗