-
Vælg et IR-modul: For eksempel Grove IR Receiver-modulet.
-
Hardwareforbindelse: Brug Grove-interface eller jumperledninger til at forbinde IR-modulet til de relevante GPIO-ben på M5StickC Plus2.
-
Softwareunderstøttelse: Skriv kode i Arduino eller MicroPython for at læse IR-signalerne. Arduino-biblioteker, såsom IRremote, kan nemt afkode almindelige IR-protokoller (f.eks. NEC-protokol).

Nøglefunktioner ved 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 // Deaktiverer genstart af modtager efter hver // 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); // Start med IR_SEND_PIN som sendepin IrSender.setSendPin(IR_TX_PIN);//Indstillinger for infrarød signaludgangspin } void loop() { Serial.println();//Udskriv en tom linje for at formatere output og gøre følgende information klarere. Serial.print(F('Send now: address=0x1111, command=0x'));//Udskriv en streng. Serial.print(sCommand, HEX);//Vis i hexadecimalt format. Serial.print(F(', repeats='));//Angiv antallet af gentagne transmissioner. Serial.print(sRepeats);//Antallet af gange kommandoen sendes. Serial.println();//Udskriv en ekstra tom linje for at gøre output mere overskueligt. StickCP2.Display.clear();//Opdater skærmvisningen. //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 med 16 bit adresse')); StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Tegn en cirkel. IrSender.sendNEC(0x1111, sCommand, sRepeats);//Send et infrarødt signal efter NEC-protokollen. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Forøg sendeværdier */ sCommand += 1;//Forøg kommandoens værdi. delay(500);//Vent i 500 millisekunder. StickCP2.Display.fillCircle(32, 105, 8, YELLOW);//Tegn en udfyldt cirkel. delay(500); }
1. IrSender.begin(DISABLE_LED_FEEDBACK);
IrSender.begin(DISABLE_LED_FEEDBACK); // Start med IR_SEND_PIN som sendepin
begin
-metoden på IrSender
-objektet for at initialisere den infrarøde transmissionsfunktion.-
DISABLE_LED_FEEDBACK
: Dette er en parameter, der bruges til at deaktivere LED-feedback. Hvis feedback er aktiveret, vil LED'en blinke under transmission af infrarøde signaler.
IrSender
en forudindstillet infrarød transmissionspin (såsom IR_SEND_PIN
) til at sende infrarøde signaler. Denne kode aktiverer den infrarøde sender og forbereder den til at sende infrarøde signaler.2. IrSender.setSendPin(IR_TX_PIN);
IrSender.begin(DISABLE_LED_FEEDBACK); // Start med IR_SEND_PIN som sendepin
Kald setSendPin
-metoden på IrSender
-objektet for at sætte den infrarøde signaltransmissionspin til IR_TX_PIN
.
-
IR_TX_PIN
er et defineret pinnummer, der angiver den præcise pin, der bruges til at sende infrarøde signaler.
Ved at bruge denne kode kan du tilpasse den infrarøde transmissionspin i stedet for at bruge standarden. Dette er især nyttigt, når der sker ændringer i hardwareforbindelser eller pin-mapping.
3. Serial.print(F('Send nu: adresse=0x1111, kommando=0x'));
Serial.println();//Udskriv en tom linje for at formatere output og gøre følgende information klarere. Serial.print(F('Send now: address=0x1111, command=0x'));//Udskriv en streng. Serial.print(sCommand, HEX);//Vis i hexadecimalt format. Serial.print(F(', repeats='));//Angiv antallet af gentagne transmissioner. Serial.print(sRepeats);//Antallet af gange kommandoen sendes. Serial.println();//Udskriv en ekstra tom linje for at gøre output mere overskueligt.
-
Brug
Serial.print()
til at udskrive strengen 'Send now: address=0x1111, command=0x'
.F()
-makroen bruges her til at gemme strengen i Flash-hukommelsen, hvilket hjælper med at spare på 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);
Vis 'IR NEC SEND' ved hjælp af drawString
-metoden for at gengive strengen på en bestemt position på skærmen.
-
StickCP2.Display.width() / 2
: Dette sikrer, at strengen er centreret horisontalt på displayet. -
StickCP2.Display.height() / 2 - 40
: Dette placerer strengen 40 pixels over den vertikale midte af skærmen.
drawString
-metoden for at vise adresseinformationen.-
StickCP2.Display.width() / 2
: Centrerer teksten horisontalt på skærmen. -
StickCP2.Display.height() / 2
: Centrerer teksten vertikalt, så den placeres lige midt på skærmen.
Vis kommandoinformation ved at gengive strengen 'CMD:0x' sammen med den hexadecimale repræsentation af sCommand
-variablen.
-
String(sCommand, HEX)
: KonverterersCommand
-variablen til en hexadecimal streng. -
StickCP2.Display.width() / 2
: Centrerer teksten vandret på displayet. -
StickCP2.Display.height() / 2 + 40
: Placerer teksten 40 pixels under den lodrette midte af skærmen.
5. Serial.println(F('Send standard NEC med 16 bit adresse'));
Serial.println(F('Send standard NEC med 16 bit adresse')); StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Tegn en cirkel.
Serial.println()
til at udskrive information til **serial monitor**, og tilføj et linjeskift til sidst for at sikre, at næste output starter på en ny linje.-
F('Send standard NEC med 16 bit adresse')
:F()
-makroen gemmer strengen 'Send standard NEC med 16 bit adresse' i Flash-hukommelsen (programlager) i stedet for **RAM**, hvilket hjælper med at spare hukommelse. -
Outputtet 'Send standard NEC med 16 bit adresse' angiver, at et standard NEC-protokol infrarødt signal sendes med en **16-bit adresse**.
6. IrSender.sendNEC()
IrSender.sendNEC(0x1111, sCommand, sRepeats);//Send et infrarødt signal efter NEC-protokollen. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Forøg sendeværdier */
0x1111
: Dette er adressen for infrarødsignalet, som repræsenterer en 16-bit adresseværdi brugt til at identificere mål-enheden eller kommandomodtageren.sCommand
: Dette er kommandoens værdi, der skal sendes. Det kan være en 8-bit eller 16-bit værdi, som specificerer den nøjagtige handling, mål-enheden skal udføre.sRepeats
: Angiver antallet af gange signalet gentages, normalt for at forbedre signalets pålidelighed eller opfylde specifikke krav fra den enhed, der styres.IrSender.sendNEC(0x1111, sCommand, sRepeats);//Send et infrarødt signal efter NEC-protokollen. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Forøg sendeværdier */
-
0x1111
: Dette er enhedsadressen for det infrarøde signal, brugt til at identificere en specifik enhed. -
0x2223
: Dette er kommando-koden sendt til enheden, som specificerer den handling, der skal udføres. -
sRepeats
: Repræsenterer antallet af gange signalet gentages, typisk for at sikre signalpålidelighed eller opfylde kravene fra den målrettede enhed.
Nem programmering
Fleksible anvendelsesscenarier
Forudkonfigureret infrarød pin