Progetto per principianti M5Stack: implementa una funzione di controllo remoto
Funzioni LED spiegate
M5StickC Plus2 è dotato di un LED di alimentazione programmabile che può essere codificato per un semplice controllo on/off o effetti lampeggianti. Il LED può essere utilizzato per indicare lo stato dell'alimentazione e, insieme ad altri moduli sensore, come indicazione dello stato del dispositivo. La programmabilità di questo LED offre un'ampia gamma di scenari applicativi per promemoria intelligenti o semplici sistemi di allarme.
Analisi di esempio
StickCP2.Power.setLed(1) viene utilizzato per accendere il LED di alimentazione di M5StickC Plus2.
Di conseguenza, StickCP2.Power.setLed(0) viene utilizzato per spegnere il LED. Questa funzione viene spesso utilizzata per l'indicazione dello stato, ad esempio se l'alimentazione è accesa o spenta, se il dispositivo funziona correttamente o per fornire una semplice indicazione di segnalazione.
impostazione nulla() { // Retrieves device configuration. cfg automatico = M5.config(); // Initializes the M5StickC Plus2. StickCP2.begin(cfg); // Rotates the display StickCP2.Display.setRotation(1); // sets text color to green StickCP2.Display.setTextColor(VERDE); // 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 di alimentazione", StickCP2.Display.width() / 2, StickCP2.Display.height() / 2); } ciclo vuoto() { // inside power red led control //Turns on the power LED. StickCP2.Power.setLed(1); // Waits 1 second. ritardo(1000); // Turns off the LED. Il valore predefinito è 0; //Waits 1 second. delay(1000); }
Per una spiegazione della funzione infrarossi vedere: Guida per principianti M5Stack: funzionalità a infrarossi PLUS2
Realizzazione della funzione di controllo remoto
Passaggio 1: riconoscimento del segnale a infrarossi del telecomando
-
Hardware richiesto:
-
Connessioni hardware:
Arduino UNO | ---> | Ricevitore IR |
5V | ---> | VCC |
GPIO 11 | ---> | IN |
TERRA | ---> | TERRA |
-
Installare la biblioteca
-
Puoi procedere e installare la libreria IRremote nell'IDE di Arduino. Questa libreria ti aiuterà a generare segnali IR conformi agli standard.
-
Apri l'IDE Arduino, seleziona Strumenti -> Gestore libreria, cerca IRremote e installalo.
-
Scrivi e ricevi codice infrarosso
#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 risultati; impostazione nulla() { // Initialize serial communications Inizio seriale(115200); // Start IR reception irrecv.abilitaIRIn(); Serial.println("Ricevitore IR pronto"); } ciclo vuoto() { if (irrecv.decode(&risultati)) { // IR signal detected Serial.print("Codice IR ricevuto: "); // Print the received IR signal Serial.println(risultati.valore, HEX); // Receive the next signal irrecv.riprendi(); } ritardo(100); }
-
Fai clic su Strumenti -> Porta per masterizzare.
-
La masterizzazione è completata, inizia a inviare segnali infrarossi
-
Fai clic su Strumenti -> Monitor seriale per monitorare il segnale IR.
Passaggio 2: Spiegazione del progetto di controllo LED
-
Premi il pulsante A (StickCP2.BtnA.wasPressed()): accendi il LED utilizzando
StickCP2.Power.setLed(1);
. -
Premi il pulsante B (StickCP2.BtnB.wasPressed()): spegni il LED utilizzando
StickCP2.Power.setLed(0);
.
if
conditions per rilevare quando viene premuto il pulsante A o il pulsante B. Ciò fornisce un modo reattivo per attivare o disattivare il LED utilizzando semplici interazioni con i pulsanti, rendendolo un progetto facile con cui iniziare.
M5Stack Plus2 implementa le funzioni di controllo remoto
IrSender.sendNEC()
per controllare diversi dispositivi secondo necessità.#define DISABLE_CODE_FOR_RECEIVER #definisci SEND_PWM_BY_TIMER #definisci IR_TX_PIN 19 #include "M5StickCPlus2.h" #include impostazione nulla() { cfg automatico = 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(VERDE); //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); // Inizia con IR_SEND_PIN come pin di invio IrSender.setSendPin(IR_TX_PIN);//Impostazioni pin di trasmissione del segnale a infrarossi } ciclo vuoto() { se (StickCP2.BtnA.wasPressed()) { // Send IR code for power button IrSender.sendNEC(0x25AE7EE3, 32); // Esempio di codice NEC per la TV (è necessario sostituirlo con il codice effettivo) StickCP2.Display.clear(); StickCP2.Display.drawString("Segnale di alimentazione inviato", StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 - 40); ritardo(5000); // Inviato ogni 5 secondi } se (StickCP2.BtnB.wasPressed()) { // Send IR code for volume up button //IrSender.sendNEC(25AE7EE3, 32); // Send volume up signal StickCP2.Display.clear(); StickCP2.Display.drawString("Volume su inviato", StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 - 40); delay(5000); // Sent every 5 seconds } StickCP2.aggiornamento(); // Aggiorna lo stato del pulsante }