Projet M5Stack Beginner : implémenter une fonction de contrôle à distance
Fonctions des LED expliquées
Le M5StickC Plus2 est équipé d'une LED d'alimentation programmable qui peut être codée pour un simple contrôle marche/arrêt ou des effets clignotants. La LED peut être utilisée pour indiquer l'état de l'alimentation et, en conjonction avec d'autres modules de capteurs, comme indication de l'état de l'appareil. La programmabilité de cette LED offre une large gamme de scénarios d'application pour des rappels intelligents ou des systèmes d'alarme simples.
Exemple d'analyse
StickCP2.Power.setLed(1) est utilisé pour allumer le voyant d'alimentation du M5StickC Plus2.
En conséquence, StickCP2.Power.setLed(0) est utilisé pour éteindre la LED. Cette fonction est souvent utilisée pour indiquer l'état, par exemple si l'alimentation est allumée ou éteinte, si l'appareil fonctionne correctement ou pour effectuer une simple indication de signalisation.
configuration vide() { // 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(VERT); // 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("LED d'alimentation", StickCP2.Display.width() / 2, StickCP2.Display.height() / 2); } boucle vide() { // inside power red led control //Turns on the power LED. StickCP2.Power.setLed(1); // Waits 1 second. délai(1000); // Turns off the LED. StickCP2.Power.setLed(0); //Waits 1 second. delay(1000); }
Pour une explication de la fonction infrarouge, voir : Guide du débutant M5Stack : capacités infrarouges PLUS2
Réalisation de la fonction de télécommande
Étape 1 : Reconnaissance du signal infrarouge de la télécommande
-
Matériel requis :
-
Connexions matérielles :
Arduino UNO | ---> | Récepteur IR |
5V | ---> | CCV |
GPIO 11 | ---> | DANS |
GND | ---> | GND |
-
Installer la bibliothèque
-
Vous pouvez continuer et installer la bibliothèque IRremote dans l'IDE Arduino. Cette bibliothèque vous aidera à générer des signaux IR conformes aux normes.
-
Ouvrez l'IDE Arduino, sélectionnez Outils -> Library Manager, recherchez IRremote et installez-le.
-
Écrire un code infrarouge de réception
#include // Defines the pins to which the IR receiver sensor is connected const int RECV_PIN = 11; //Creating IR Receiving Objects IRrecv irrecv(RECV_PIN); // Create the decoding result object decode_results résultats ; configuration vide() { // Initialize serial communications Série.begin(115200); // Start IR reception irrecv.enableIRIn(); Serial.println("Récepteur IR prêt"); } boucle vide() { if (irrecv.decode(&results)) { // IR signal detected Serial.print("Code IR reçu : "); // Print the received IR signal Serial.println(results.value, HEX); // Receive the next signal irrecv.resume(); } retard(100); }
-
Cliquez sur Outils -> Port pour graver.
-
La gravure est terminée, commencez à envoyer des signaux infrarouges
-
Cliquez sur Outils -> Serial Monitor pour surveiller le signal IR.
Étape 2 : Explication du projet de contrôle LED
-
Appuyez sur le bouton A (StickCP2.BtnA.wasPressed()) : Allumez la LED à l'aide de
StickCP2.Power.setLed(1);
. -
Appuyez sur le bouton B (StickCP2.BtnB.wasPressed()) : éteignez la LED à l'aide de
StickCP2.Power.setLed(0);
.
if
pour détecter le moment où le bouton A ou le bouton B est enfoncé. Cela fournit un moyen réactif d’activer la LED à l’aide de simples interactions de boutons, ce qui en fait un projet facile à démarrer.
M5Stack Plus2 implémente des fonctions de contrôle à distance
IrSender.sendNEC()
pour contrôler différents appareils selon vos besoins.#définir DISABLE_CODE_FOR_RECEIVER #define SEND_PWM_BY_TIMER #define IR_TX_PIN 19 #include "M5StickCPlus2.h" #include configuration vide() { 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(VERT); //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); // Commencez par IR_SEND_PIN comme code PIN d'envoi IrSender.setSendPin(IR_TX_PIN);//Paramètres de la broche de transmission du signal infrarouge } boucle vide() { si (StickCP2.BtnA.wasPressed()) { // Send IR code for power button IrSender.sendNEC(0x25AE7EE3, 32); // Exemple de code NEC pour TV (à remplacer par le code réel) StickCP2.Display.effacer(); StickCP2.Display.drawString("Signal d'alimentation envoyé", StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 - 40); retard (5000); // Envoyé toutes les 5 secondes } si (StickCP2.BtnB.wasPressed()) { // Send IR code for volume up button //IrSender.sendNEC(25AE7EE3, 32); // Send volume up signal StickCP2.Display.clear(); StickCP2.Display.drawString("Augmentation du volume envoyé", StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 - 40); delay(5000); // Sent every 5 seconds } StickCP2.update(); // Mettre à jour l'état du bouton }