| Lichteffekte via Funk(Funkfernbedienung, Funkempfänger, Arduino, 433 MHz)Die Schaltung „Lichteffekte via Funk“ besteht aus neun Komponenten. Neben einer Funkfernbedienung wirken hier ein
Funkempfänger, Arduino Nano und drei Leuchtdioden mit drei Vorwiderständen mit. Das Experiment ist schnell definiert. Mit
einer Funkfernbedienung sollen mithilfe eines Funkempfängers und Arduino Nano drei Leuchtdioden zum Leuchten gebracht werden.
Damit die Übung als „Lichteffekte“ bezeichnet werden kann, sollen die Leuchtdioden, je nach gedrückter Taste an der Fernbedienung,
einzeln oder gruppenweise nach verschiedenen Mustern zum Leuchten gebracht werden. FunkfernbedienungBei der Funkfernbedienung handelt es sich um ein deleyCON Gerät (Typ MK2402), das problemlos im Baumarkt oder
online (Amazon, Ebay etc.) erworben werden kann. Grundsätzlich werden mit der Fernbedienung Funksteckdosen geschaltet. Das Gerät
stellt vier Schaltkanäle mit je zwei Drucktasten (ON, OFF) zur Verfügung.
Funkfernbedienung delayCON Verpackungsschild Arduino NanoArduino Nano empfängt mithilfe des Empfänger-Moduls die Funksignale von der Fernbedienung und schaltet entsprechend
die Leuchtdioden ein bzw. aus. FunkempfängerBei dem Funkempfänger handelt es sich um ein fertiges elektronisches Modul, das Funksignale im Sendebereich von 433 MHz empfangen kann. Das Modul kann zusammen mit einem Sender kostengünstig online erworben werden. Die Module sind für einen Sendeempfangsbereich von einigen Metern ausgelegt. Durch Anlöten von einer Antenne kann die Reichweite erhöht werden. Der Empfänger arbeitet mit 5 VDC. Die Empfangsempfindlichkeit liegt bei -10 dB. Die Abmessungen betragen 30 x 14 mm. Funkempfänger mit angelöteter Antenne Funkempfänger Rückseite Signale der Fernbedienung auslesenBevor die Fernbedienung für unsere Zwecke eingesetzt werden kann, muss festgestellt werden, was sie sendet.
Zu diesem Zweck wird der Funkempfänger mit Arduino verbunden und Arduino mit passendem Programm ausgestattet. In dieser
Phase des Experimentes kommt der serielle Monitor zum Einsatz.
Der Schaltplan Die Testschaltung Die Bibliothek RCSwitch.h enthält unter anderem das Beispielprogramm ReceiveDemo_Simple, das wir hier verwenden. // ***********************************************************// Testprogramm Funk-Empfang // ReceiveDemo_Simple // *********************************************************** #include <RCSwitch.h> RCSwitch mySwitch = RCSwitch(); void setup() { Serial.begin(9600); mySwitch.enableReceive(0); } void loop() { if (mySwitch.available()) { Serial.print("Received "); Serial.print( mySwitch.getReceivedValue() ); Serial.print(" / "); Serial.print( mySwitch.getReceivedBitlength() ); Serial.print("bit "); Serial.print("Protocol: "); Serial.println( mySwitch.getReceivedProtocol() ); mySwitch.resetAvailable(); } } Nachdem das Programm hochgeladen wurde, kann man die Resultate auf dem seriellen Monitor betrachten. Damit die Ergebnisse auf dem Monitor erscheinen können, muss natürlich eine Taste auf der Funkfernbedienung betätigt werden. Jeder Taste ist eine andere Code-Zahl zugeordnet. Diese Zahlen werden zu späterem Zeitpunkt in dem Hauptprogramm verwendet. Ergebnisse auf dem seriellen Monitor Leuchtdioden via Funk schaltenSobald der Funkcode der Funksignale bekannt ist, kann man sich dem eigentlichen Programm (Sketch) widmen und die Leuchtdioden zum Leuchten bringen. Das Programm wird in vier Teile, die als Unterprogramme aufgefasst werden, unterteilt. In jedem Unterprogramm werden die drei Leuchtdioden nach anderem Muster zum Blinken gebracht. Die Rolle des Auslösers übernimmt die Funkfernbedienung, die bei jedem Tastendruck ein Funk-Signal versendet. // ***********************************************************************************************// Lichteffekte via Funk // Funksignale empfangen und auswerten // Sketch Arduino Nano // Arduino IDE 1.8.19 // *********************************************************************************************** #include <RCSwitch.h> // Bibliothek einbinden RCSwitch mySwitch = RCSwitch(); int LED_Rot = 3; // Digitaler Ausgang 3 / Rote LED int LED_Gruen = 4; // Digitaler Ausgang 4 / Grüne LED int LED_Blau = 5; // Digitaler Ausgang 5 / Blaue LED int LED_NR; // *********************************************************************************************** void setup() { mySwitch.enableReceive(0); pinMode (LED_Rot, OUTPUT); // Pins 3, 4 und 5 als Ausgänge pinMode (LED_Gruen, OUTPUT); pinMode (LED_Blau, OUTPUT); } // *********************************************************************************************** void loop() { if (mySwitch.available()) { // Funksingnal liegt an? long FCode = mySwitch.getReceivedValue(); // Funkcode lesen if (FCode == 83029) { LED_Muster_1(); } // Taste 1 - ON if (FCode == 86101) { LED_Muster_2(); } // Taste 2 - ON if (FCode == 70741) { LED_Muster_3(); } // Taste 3 - ON if (FCode == 21589) { LED_Muster_4(); } // Taste 4 - ON if (FCode == 83028) { LEDs_AUS (); } // Taste 1 - OFF if (FCode == 86100) { LEDs_AUS (); } // Taste 2 - OFF if (FCode == 70740) { LEDs_AUS (); } // Taste 3 - OFF if (FCode == 21588) { LEDs_AUS (); } // Taste 4 - OFF delay (1000); mySwitch.resetAvailable(); // Auslesen abgeschlossen (Reset) } } // *********************************************************************************************** void LED_Muster_1 () { // LED-Muster 1 (Unterprogramm) LED_NR++; // Mit jedem Tastendruck wird die nächste LEDs_AUS (); // LED eingechaltet if (LED_NR == 1) { digitalWrite (LED_Rot, HIGH); } if (LED_NR == 2) { digitalWrite (LED_Gruen, HIGH); } if (LED_NR == 3) { digitalWrite (LED_Blau, HIGH); LED_NR = 0; } } // *********************************************************************************************** void LED_Muster_2 () { // LED-Muster 2 (Unterprogramm) for (int i=0; i<20; i++) { // Alle drei LEDs blinken gleichzeitig digitalWrite (LED_Rot, HIGH); digitalWrite (LED_Gruen, HIGH); digitalWrite (LED_Blau, HIGH); delay (200); LEDs_AUS (); delay (200); } } // *********************************************************************************************** void LED_Muster_3 () { // LED-Muster 3 (Unterprogramm) for (int i=0; i<10; i++) { // Die LEDs blinkeln mehrmals nacheinander for (int j=0; j<5; j++) { digitalWrite (LED_Rot, HIGH); delay (100); digitalWrite (LED_Rot, LOW); delay (100); } for (int j=0; j<5; j++) { digitalWrite (LED_Gruen, HIGH); delay (100); digitalWrite (LED_Gruen, LOW); delay (100); } for (int j=0; j<5; j++) { digitalWrite (LED_Blau, HIGH); delay (100); digitalWrite (LED_Blau, LOW); delay (100); } } } // *********************************************************************************************** void LED_Muster_4 () { // LED-Muster 4 (Unterprogramm) for (int i=0; i<20; i++) { // Die LEDs blinken nacheinander nur einmal digitalWrite (LED_Rot, HIGH); delay (100); digitalWrite (LED_Rot, LOW); digitalWrite (LED_Gruen, HIGH); delay (100); digitalWrite (LED_Gruen, LOW); digitalWrite (LED_Blau, HIGH); delay (100); digitalWrite (LED_Blau, LOW); } } // *********************************************************************************************** void LEDs_AUS () { // Alle LEDs abschalten digitalWrite (LED_Rot, LOW); digitalWrite (LED_Gruen, LOW); digitalWrite (LED_Blau, LOW); } // ***********************************************************************************************
|
Google-Suche auf MEINE-SCHALTUNG.de : |