-
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_PINer 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
