-
Välj en IR-modul: Till exempel Grove IR Receiver-modulen.
-
Hårdvaruanslutning: Använd Grove-gränssnittet eller hopkopplingskablar för att ansluta IR-modulen till lämpliga GPIO-stift på M5StickC Plus2.
-
Programvarustöd: Skriv kod i Arduino eller MicroPython för att läsa IR-signalerna. Arduino-bibliotek, såsom IRremote, kan enkelt avkoda vanliga IR-protokoll (t.ex. NEC-protokollet).

Nyckelfunktioner för infraröd funktion
/** * @file ir_nec.ino * @author SeanKwok (shaoxiang@m5stack.com) * @brief M5StickCPlus2 IR NEC-test * @version 0.1 * @date 2023-12-09 * * * @Hardwares: M5StickCPlus2 * @Platform Version: Arduino M5Stack Board Manager v2.0.9 * @Dependent Library: * M5GFX: https://github.com/m5stack/M5GFX * M5Unified: https://github.com/m5stack/M5Unified * M5StickCPlus2: https://github.com/m5stack/M5StickCPlus2 * IRremote: https://github.com/Arduino-IRremote/Arduino-IRremote */ #define DISABLE_CODE_FOR_RECEIVER // Inaktiverar omstart av mottagaren efter varje // send. Saves 450 bytes program memory and // 269 bytes RAM if receiving functions are // not used. #define SEND_PWM_BY_TIMER #define IR_TX_PIN 19 uint8_t sCommand = 0x34; uint8_t sRepeats = 0; 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); // Starta med IR_SEND_PIN som sändningspinne IrSender.setSendPin(IR_TX_PIN);//Inställningar för infraröd signal sändningspinne } void loop() { Serial.println();//Skriv ut en tom rad för att formatera utdata och göra följande information tydligare. Serial.print(F('Send now: address=0x1111, command=0x'));//Skriv ut en sträng. Serial.print(sCommand, HEX);//Visa i hexadecimalt format. Serial.print(F(', repeats='));//Anger antalet upprepade sändningar. Serial.print(sRepeats);//Antalet gånger kommandot skickas. Serial.println();//Skriv ut en tom rad till för att göra utdata mer organiserad. StickCP2.Display.clear();//Uppdatera skärmens visning. //drawString A method used to draw a string at a specified position. StickCP2.Display.drawString('IR NEC SEND', StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 - 40); StickCP2.Display.drawString('ADDR:0x1111', StickCP2.Display.width() / 2, StickCP2.Display.height() / 2); StickCP2.Display.drawString('CMD:0x' + String(sCommand, HEX), StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 + 40); Serial.println(F('Send standard NEC with 16 bit address')); StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Rita en cirkel. IrSender.sendNEC(0x1111, sCommand, sRepeats);//Skicka en infraröd signal enligt NEC-protokollet. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Öka sändningsvärden */ sCommand += 1;//Öka kommando värdet med ett. delay(500);//Fördröjning i 500 millisekunder. StickCP2.Display.fillCircle(32, 105, 8, YELLOW);//Rita en fylld cirkel. delay(500); }
1. IrSender.begin(DISABLE_LED_FEEDBACK);
IrSender.begin(DISABLE_LED_FEEDBACK); // Starta med IR_SEND_PIN som sändningspinne
begin
-metoden på IrSender
-objektet för att initiera den infraröda sändningsfunktionen.-
DISABLE_LED_FEEDBACK
: Detta är en parameter som används för att inaktivera LED-feedback. Om feedback är aktiverat kommer LED-lampan att blinka medan infraröda signaler sänds.
IrSender
en förinställd infraröd sändningspinne (såsom IR_SEND_PIN
) för att sända infraröda signaler. Denna kodrad aktiverar den infraröda sändaren och förbereder den för att sända infraröda signaler.2. IrSender.setSendPin(IR_TX_PIN);
IrSender.begin(DISABLE_LED_FEEDBACK); // Starta med IR_SEND_PIN som sändningspinne
Anropa setSendPin
-metoden på IrSender
-objektet för att ställa in infraröd signal sändningspinne till IR_TX_PIN
.
-
IR_TX_PIN
är ett definierat pinnummer som specificerar exakt vilken pinne som används för att sända infraröda signaler.
Genom att använda denna kodrad kan du anpassa infraröd sändningspinne istället för att använda standardpinnen. Detta är särskilt användbart när det sker förändringar i hårdvaruanslutningar eller pin-konfiguration.
3. Serial.print(F('Skicka nu: adress=0x1111, kommando=0x'));
Serial.println();//Skriv ut en tom rad för att formatera utdata och göra följande information tydligare. Serial.print(F('Send now: address=0x1111, command=0x'));//Skriv ut en sträng. Serial.print(sCommand, HEX);//Visa i hexadecimalt format. Serial.print(F(', repeats='));//Anger antalet upprepade sändningar. Serial.print(sRepeats);//Antalet gånger kommandot skickas. Serial.println();//Skriv ut en tom rad till för att göra utdata mer organiserad.
-
Använd
Serial.print()
för att skriva ut strängen 'Send now: address=0x1111, command=0x'
. MakrotF()
används här för att lagra strängen i Flash-minnet, vilket hjälper till att spara RAM.
StickCP2.Display.drawString(' ', , );
//drawString A method used to draw a string at a specified position. StickCP2.Display.drawString('IR NEC SEND', StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 - 40); StickCP2.Display.drawString('ADDR:0x1111', StickCP2.Display.width() / 2, StickCP2.Display.height() / 2); StickCP2.Display.drawString('CMD:0x' + String(sCommand, HEX), StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 + 40);
Visa 'IR NEC SEND' med drawString
-metoden för att rendera strängen på en angiven position på skärmen.
-
StickCP2.Display.width() / 2
: Detta säkerställer att strängen är centrerad horisontellt på displayen. -
StickCP2.Display.height() / 2 - 40
: Detta placerar strängen 40 pixlar ovanför den vertikala mitten av skärmen.
drawString
-metoden för att visa adressinformationen.-
StickCP2.Display.width() / 2
: Centrerar texten horisontellt på skärmen. -
StickCP2.Display.height() / 2
: Centrerar texten vertikalt och placerar den mitt på skärmen.
Visa kommandoinformation genom att rendera strängen 'CMD:0x' tillsammans med den hexadecimala representationen av variabeln sCommand
.
-
String(sCommand, HEX)
: Konverterar variabelnsCommand
till en hexadecimals sträng. -
StickCP2.Display.width() / 2
: Centrerar texten horisontellt på displayen. -
StickCP2.Display.height() / 2 + 40
: Placerar texten 40 pixlar under den vertikala mitten av skärmen.
5. Serial.println(F('Send standard NEC with 16 bit address'));
Serial.println(F('Send standard NEC with 16 bit address')); StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Rita en cirkel.
Serial.println()
för att skriva ut information till **seriell monitor**, och lägger till en radbrytning i slutet för att säkerställa att nästa utskrift börjar på en ny rad.-
F('Send standard NEC with 16 bit address')
: MakrotF()
lagrar strängen 'Send standard NEC with 16 bit address' i Flash-minnet (programlagring) istället för **RAM**, vilket hjälper till att spara minne. -
Utdata 'Skicka standard NEC med 16-bitars adress' indikerar att en standard NEC-protokoll infraröd signal sänds med en **16-bitars adress**.
6. IrSender.sendNEC()
IrSender.sendNEC(0x1111, sCommand, sRepeats);//Skicka en infraröd signal enligt NEC-protokollet. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Öka sändningsvärden */
0x1111
: Detta är adressen för infraröd signal, som representerar ett 16-bitars adressvärde som används för att identifiera mål-enheten eller kommandomottagaren.sCommand
: Detta är kommandovärdet som ska skickas. Det kan vara ett 8-bitars eller 16-bitars värde som specificerar den exakta åtgärd som mål-enheten ska utföra.sRepeats
: Anger antalet gånger signalen upprepas, vanligtvis för att förbättra signalens tillförlitlighet eller uppfylla specifika krav från den enhet som styrs.IrSender.sendNEC(0x1111, sCommand, sRepeats);//Skicka en infraröd signal enligt NEC-protokollet. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Öka sändningsvärden */
-
0x1111
: Detta är enhetens adress för den infraröda signalen, som används för att identifiera en specifik enhet. -
0x2223
: Detta är kommando-koden som skickas till enheten och specificerar åtgärden som ska utföras. -
sRepeats
: Representerar antalet gånger signalen upprepas, vanligtvis för att säkra signalens tillförlitlighet eller uppfylla kraven från mål-enheten.
Enkel programmering
Flexibla användningsscenarier
Förkonfigurerad infraröd pinne