M5Stack-Anfängerprojekt: Implementieren Sie eine Fernbedienungsfunktion
LED-Funktionen erklärt
Der M5StickC Plus2 ist mit einer programmierbaren Power-LED ausgestattet, die für eine einfache Ein-/Aus-Steuerung oder Blinkeffekte codiert werden kann. Die LED kann zur Anzeige des Stromstatus und in Verbindung mit anderen Sensormodulen als Anzeige des Gerätestatus verwendet werden. Die Programmierbarkeit dieser LED ermöglicht vielfältige Einsatzszenarien für smarte Erinnerungen oder einfache Alarmsysteme.
Beispielanalyse
StickCP2.Power.setLed(1) wird verwendet, um die Power-LED des M5StickC Plus2 einzuschalten.
Dementsprechend wird StickCP2.Power.setLed(0) verwendet, um die LED auszuschalten. Diese Funktion wird häufig zur Statusanzeige verwendet, z. B. ob die Stromversorgung ein- oder ausgeschaltet ist, ob das Gerät ordnungsgemäß funktioniert, oder um eine einfache Signalanzeige zu geben.
void setup() { // Retrieves device configuration. auto cfg = M5.config(); // Initializes the M5StickC Plus2. StickCP2.begin(cfg); // Rotates the display StickCP2.Display.setRotation(1); // sets text color to green StickCP2.Display.setTextColor(GREEN); // centers the text StickCP2.Display.setTextDatum(middle_center); // uses the "Orbitron_Light_24" font StickCP2.Display.setTextFont(&fonts::Orbitron_Light_24); StickCP2.Display.setTextSize(1); // Displays the message "Power LED" at the screen’s center. StickCP2.Display.drawString("Power LED", StickCP2.Display.width() / 2, StickCP2.Display.height() / 2); } void schleife() { // inside power red led control //Turns on the power LED. StickCP2.Power.setLed(1); // Waits 1 second. Verzögerung (1000); // Turns off the LED. StickCP2.Power.setLed(0); //Waits 1 second. delay(1000); }
Eine Erläuterung der Infrarotfunktion finden Sie unter: M5Stack-Einsteigerhandbuch: PLUS2-Infrarotfunktionen
Realisierung der Fernbedienungsfunktion
Schritt 1: Infrarot-Signalerkennung der Fernbedienung
-
Erforderliche Hardware:
-
Hardware-Anschlüsse:
Arduino UNO | ---> | IR-Empfänger |
5V | ---> | VCC |
GPIO 11 | ---> | IN |
GND | ---> | GND |
-
Installieren die Bibliothek
-
Sie können die IRremote-Bibliothek in der Arduino IDE installieren. Diese Bibliothek hilft Ihnen bei der Generierung standardkonformer IR-Signale.
-
Öffnen Sie die Arduino IDE, wählen Sie Extras -> Bibliotheksmanager, suchen Sie nach IRremote und installieren Sie es.
-
Infrarot-Empfangscode schreiben
#include // Defines the pins to which the IR receiver sensor is connected Konstante int RECV_PIN = 11; //Creating IR Receiving Objects IRrecv irrecv(RECV_PIN); // Create the decoding result object decode_results-Ergebnisse; void setup() { // Initialize serial communications Seriell.begin(115200); // Start IR reception irrecv.enableIRIn(); Serial.println("IR-Empfänger bereit"); } void schleife() { if (irrecv.decode(&results)) { // IR signal detected Serial.print("IR-Code empfangen:"); // Print the received IR signal Serial.println(results.value, HEX); // Receive the next signal irrecv.resume(); } Verzögerung (100); }
-
Klicken Sie zum Brennen auf Extras -> Port.
-
Der Brennvorgang ist abgeschlossen. Beginnen Sie mit dem Senden von Infrarotsignalen
-
Klicken Sie auf Extras -> Serieller Monitor, um das IR-Signal zu überwachen.
Schritt 2: Erläuterung des LED-Steuerungsprojekts
-
Drücken Sie Taste A (StickCP2.BtnA.wasPressed()): Schalten Sie die LED mit
StickCP2.Power.setLed(1);
ein. -
Drücken Sie Taste B (StickCP2.BtnB.wasPressed()): Schalten Sie die LED mit
StickCP2.Power.setLed(0);
aus.
if
-Bedingungen, um zu erkennen, wann Knopf A oder Knopf B gedrückt wird. Dies bietet eine reaktionsschnelle Möglichkeit, die LED mithilfe einfacher Tasteninteraktionen umzuschalten, was den Einstieg in das Projekt erleichtert.
M5Stack Plus2 implementiert Fernbedienungsfunktionen
IrSender.sendNEC()
um verschiedene Geräte je nach Bedarf zu steuern.#define DISABLE_CODE_FOR_RECEIVER #define SEND_PWM_BY_TIMER #IR_TX_PIN 19 definieren #include "M5StickCPlus2.h" #include void setup() { auto cfg = M5.config(); //To understand the underlying logic of the initialization with begin(), you can refer to the Dependent Library. StickCP2.begin(cfg); //Display rotation directions StickCP2.Display.setRotation(1); // The color of the text displayed on the screen. StickCP2.Display.setTextColor(GREEN); //Text alignment middle_center means aligning the center of the text to the specified coordinate position. StickCP2.Display.setTextDatum(middle_center); //Font Styles StickCP2.Display.setTextFont(&fonts::Orbitron_Light_24); //Font size StickCP2.Display.setTextSize(1); IrSender.begin(DISABLE_LED_FEEDBACK); // Beginnen Sie mit IR_SEND_PIN als Sende-Pin IrSender.setSendPin(IR_TX_PIN);//Infrarotsignal-Übertragungs-Pin-Einstellungen } void schleife() { if (StickCP2.BtnA.wasPressed()) { // Send IR code for power button IrSender.sendNEC(0x25AE7EE3, 32); // Beispiel-NEC-Code für TV (muss durch tatsächlichen Code ersetzt werden) StickCP2.Display.clear(); StickCP2.Display.drawString("Power Signal Sent", StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 - 40); Verzögerung (5000); // Wird alle 5 Sekunden gesendet } if (StickCP2.BtnB.wasPressed()) { // Send IR code for volume up button //IrSender.sendNEC(25AE7EE3, 32); // Send volume up signal StickCP2.Display.clear(); StickCP2.Display.drawString("Lautstärke erhöhen gesendet", StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 - 40); delay(5000); // Sent every 5 seconds } StickCP2.update(); // Schaltflächenstatus aktualisieren }