-
Selecteer een IR module: Bijvoorbeeld de Grove IR Receiver module.
-
Hardwareverbinding: Gebruik de Grove-interface of jumperdraden om de IR-module aan te sluiten op de juiste GPIO pinnen op de M5StickC Plus2.
-
Software-ondersteuning: Schrijf code in Arduino of MicroPython om de IR-signalen te lezen. Arduino-bibliotheken, zoals IRremote, kunnen veelvoorkomende IR-protocollen (bijv. NEC-protocol) eenvoudig decoderen.

Belangrijkste kenmerken van de infraroodfunctie
/** * @file ir_nec.ino * @auteur SeanKwok (shaoxiang@m5stack.com) * @brief M5StickCPlus2 IR NEC test * @version 0.1 * @date 2023-12-09 * * * @Hardwares: M5StickCPlus2 * @Platform Versie: Arduino M5Stack Board Manager v2.0.9 * @Afhankelijke Bibliotheek: * 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 // Schakelt het opnieuw starten van de ontvanger na elke uit // send. Saves 450 bytes program memory and // 269 bytes RAM if receiving functions are // not used. #define VERSTUUR_PWM_VIA_TIMER #define IR_TX_PIN 19 uint8_t sCommand = 0x34; uint8_t sRepeats = 0; lege 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(GROEN); //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 met IR_SEND_PIN als zendpin IrSender.setSendPin(IR_TX_PIN);//Instellingen voor infrarood signaal zendpin } lege lus() { Serial.println();//Print een lege regel om de uitvoer te formatteren en de volgende informatie duidelijker te maken. Serial.print(F('Verzend nu: adres=0x1111, commando=0x'));//Print een string. Serial.print(sCommand, HEX);//Weergeven in hexadecimale notatie. Serial.print(F(', herhalingen='));//Geef het aantal herhaalde transmissies aan. Serial.print(sRepeats);//Het aantal keren dat het commando wordt verzonden. Serial.println();//Print nog een lege regel om de uitvoer overzichtelijker te maken. StickCP2.Display.clear();//Schermweergave bijwerken. //drawString A method used to draw a string at a specified position. StickCP2.Display.drawString('IR NEC VERZENDEN', 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.breedte() / 2, StickCP2.Display.height() / 2 + 40); Serial.println(F('Stuur standaard NEC met 16-bits adres')) StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Teken een cirkel. IrSender.sendNEC(0x1111, sCommand, sRepeats);//Verzend een infraroodsignaal volgens het NEC-protocol. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Verhoog verzendwaarden */ sCommand += 1;//Verhoog de opdrachtwaarde met 1. delay(500);//Vertraging van 500 milliseconden. StickCP2.Display.fillCircle(32, 105, 8, YELLOW);//Teken een gevulde cirkel. vertraging(500); }
1. IrSender.begin(DISABLE_LED_FEEDBACK);
IrSender.begin(DISABLE_LED_FEEDBACK); // Start met IR_SEND_PIN als zendpin
begin
-methode van het IrSender
-object aan om de infraroodtransmissiefunctie te initialiseren.-
DISABLE_LED_FEEDBACK
: Dit is een parameter die wordt gebruikt om LED-feedback uit te schakelen. Als feedback is ingeschakeld, knippert de LED tijdens het verzenden van infraroodsignalen.
IrSender
een vooraf ingestelde infrarood transmissie pin gebruiken (zoals IR_SEND_PIN
) om infrarood signalen te verzenden. Deze regel code activeert de infrarood zender en bereidt deze voor om infrarood signalen te verzenden.2. IrSender.setSendPin(IR_TX_PIN);
IrSender.begin(DISABLE_LED_FEEDBACK); // Start met IR_SEND_PIN als zendpin
Roep de setSendPin
-methode van het IrSender
-object aan om de infraroodsignaaltransmissiepin in te stellen op IR_TX_PIN
.
-
IR_TX_PIN
is een gedefinieerd pinnummer dat de exacte pin specificeert die wordt gebruikt om infraroodsignalen te verzenden.
Door deze regel code te gebruiken, kunt u de infraroodtransmissiepin aanpassen in plaats van de standaard te gebruiken. Dit is vooral handig wanneer er wijzigingen zijn in hardwareverbindingen of pinmapping.
3. Serial.print(F('Nu verzenden: adres=0x1111, commando=0x'));
Serial.println();//Print een lege regel om de uitvoer te formatteren en de volgende informatie duidelijker te maken. Serial.print(F('Verzend nu: adres=0x1111, commando=0x'));//Print een string. Serial.print(sCommand, HEX);//Weergeven in hexadecimale notatie. Serial.print(F(', herhalingen='));//Geef het aantal herhaalde transmissies aan. Serial.print(sRepeats);//Het aantal keren dat het commando wordt verzonden. Serial.println();//Print nog een lege regel om de uitvoer overzichtelijker te maken.
-
Gebruik
Serial.print()
om de string 'Send now: address=0x1111, command=0x'
af te drukken. DeF()
macro wordt hier gebruikt om de string op te slaan in Flash-geheugen, wat helpt om RAM te besparen.
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);
Geef 'IR NEC SEND' weer met de drawString
-methode om de tekenreeks op een opgegeven positie op het scherm weer te geven.
-
StickCP2.Display.width() / 2
: Dit zorgt ervoor dat de tekst horizontaal gecentreerd wordt op het scherm. -
StickCP2.Display.height() / 2 - 40
: Dit plaatst de tekst 40 pixels boven het verticale midden van het scherm.
drawString
methode om de adresinformatie te tonen.-
StickCP2.Display.width() / 2
: Centreert de tekst horizontaal op het scherm. -
StickCP2.Display.height() / 2
: Centreert de tekst verticaal, waardoor deze precies in het midden van het scherm wordt geplaatst.
Toon commando-informatie door de string 'CMD:0x' weer te geven samen met de hexadecimale weergave van de sCommand
variabele.
-
String(sCommand, HEX)
: Zet de variabelesCommand
om naar een hexadecimale tekenreeks. -
StickCP2.Display.width() / 2
: Centreert de tekst horizontaal op het scherm. -
StickCP2.Display.height() / 2 + 40
: Plaatst de tekst 40 pixels onder het verticale midden van het scherm.
5. Serial.println(F('Stuur standaard NEC met 16-bits adres'))
Serial.println(F('Stuur standaard NEC met 16-bits adres')) StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Teken een cirkel.
Serial.println()
om informatie naar de **seriële monitor** te printen, waarbij aan het einde een nieuwe regel wordt toegevoegd om ervoor te zorgen dat de volgende uitvoer op een nieuwe regel begint.-
F('Verzend standaard NEC met 16-bits adres')
: DeF()
macro slaat de string 'Verzend standaard NEC met 16-bits adres' op in Flash-geheugen (programmageheugen) in plaats van **RAM**, wat helpt om geheugen te besparen. -
De uitvoer 'Stuur standaard NEC met 16-bits adres' geeft aan dat een standaard NEC-protocol infraroodsignaal wordt verzonden met een **16-bits adres**.
6. IrSender.sendNEC()
IrSender.sendNEC(0x1111, sCommand, sRepeats);//Verzend een infraroodsignaal volgens het NEC-protocol. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Verhoog verzendwaarden */
0x1111
: Dit is het adres van het infraroodsignaal, dat een 16-bits adreswaarde vertegenwoordigt die wordt gebruikt om het doelapparaat of de bestemmingsopdracht te identificeren.sCommand
: Dit is de commando waarde die verzonden moet worden. Het kan een 8-bit of 16-bit waarde zijn, die de exacte bewerking specificeert die het doelapparaat moet uitvoeren.sRepeats
: Geeft het aantal keren aan dat het signaal wordt herhaald, meestal om de signaalbetrouwbaarheid te verbeteren of te voldoen aan specifieke eisen van het apparaat dat wordt aangestuurd.IrSender.sendNEC(0x1111, sCommand, sRepeats);//Verzend een infraroodsignaal volgens het NEC-protocol. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Verhoog verzendwaarden */
-
0x1111
: Dit is het apparaatadres van het infraroodsignaal, gebruikt om een specifiek apparaat te identificeren. -
0x2223
: Dit is de commando code die naar het apparaat wordt gestuurd, waarin de bewerking wordt gespecificeerd die moet worden uitgevoerd. -
sRepeats
: Vertegenwoordigt het aantal keren dat het signaal wordt herhaald, meestal om de betrouwbaarheid van het signaal te waarborgen of te voldoen aan de vereisten van het doelsysteem.
Eenvoudig programmeren
Flexibele Toepassingsscenario's
Vooraf geconfigureerde infrarode pin