-
Valitse IR-moduuli: Esimerkiksi Grove IR Receiver -moduuli.
-
Laitteistoyhteys: Käytä Grove-liitäntää tai hyppylankoja yhdistääksesi IR-moduulin sopiviin GPIO-nastohin M5StickC Plus2:ssa.
-
Ohjelmistotuki: Kirjoita koodi Arduinolla tai MicroPythonilla lukeaksesi IR-signaaleja. Arduino-kirjastot, kuten IRremote, voivat helposti dekoodata yleisiä IR-protokollia (esim. NEC-protokolla).

Infrapunaominaisuuden keskeiset piirteet
/** * @file ir_nec.ino * @tekijä SeanKwok (shaoxiang@m5stack.com) * @tiivistelmä M5StickCPlus2 IR NEC -testi * @version 0.1 * @date 2023-12-09 * * * @Laitteistot: M5StickCPlus2 * @Alustan versio: Arduino M5Stack Board Manager v2.0.9 * @Riippuva kirjasto: * 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 // Estää vastaanottimen uudelleenkäynnistyksen jokaisen jälkeen // 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 sKomento = 0x34; uint8_t sToistot = 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); // Aloita käyttämällä IR_SEND_PIN lähetyspinninä IrSender.setSendPin(IR_TX_PIN);//Infrapunasignaalin lähetyspinnin asetukset } void loop() { Serial.println();//Tulosta tyhjä rivi muotoillaksesi tulosteen ja selkeyttääksesi seuraavia tietoja. Serial.print(F('Send now: address=0x1111, command=0x'));//Tulosta merkkijono. Serial.print(sCommand, HEX);//Näytä heksadesimaalimuodossa. Serial.print(F(', repeats='));//Ilmaisee toistettujen lähetyskertojen määrän. Serial.print(sRepeats);//Komentojen lähetyskertojen määrä. Serial.println();//Tulosta toinen tyhjä rivi, jotta tuloste on järjestelmällisempi. StickCP2.Display.clear();//Päivitä näytön näyttö. //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);//Piirrä ympyrä. IrSender.sendNEC(0x1111, sCommand, sRepeats);//Lähetä infrapunasignaali NEC-protokollan mukaisesti. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Lähetä arvot kasvavina */ sCommand += 1;//Lisää komentoa yhdellä. delay(500);//Viive 500 millisekuntia. StickCP2.Display.fillCircle(32, 105, 8, YELLOW);//Piirrä täytetty ympyrä. delay(500); }
1. IrSender.begin(DISABLE_LED_FEEDBACK);
IrSender.begin(DISABLE_LED_FEEDBACK); // Aloita käyttämällä IR_SEND_PIN lähetyspinninä
begin
-metodia IrSender
-oliosta alustamaan infrapunalähetyksen toiminto.-
DISABLE_LED_FEEDBACK
: Tämä on parametri, jota käytetään LED-palauteen poistamiseen käytöstä. Jos palaute on käytössä, LED vilkkuu infrapunasignaalien lähetyksen aikana.
IrSender
käyttää ennalta määriteltyä infrapunalähetyspinniä (kuten IR_SEND_PIN
) infrapunasignaalien lähettämiseen. Tämä koodirivi aktivoi infrapunalähettimen ja valmistaa sen lähettämään infrapunasignaaleja.2. IrSender.setSendPin(IR_TX_PIN);
IrSender.begin(DISABLE_LED_FEEDBACK); // Aloita käyttämällä IR_SEND_PIN lähetyspinninä
Kutsu setSendPin
-metodia IrSender
-oliosta asettaaksesi infrapunasignaalin lähetyspinnin arvoksi IR_TX_PIN
.
-
IR_TX_PIN
on määritelty pinninumero, joka määrittää tarkasti sen pinnin, jota käytetään infrapunasignaalien lähettämiseen.
Käyttämällä tätä koodiriviä voit mukauttaa infrapunalähetyksen pinnin sen sijaan, että käyttäisit oletuspinniä. Tämä on erityisen hyödyllistä, kun laitteistoyhteydet tai pinnien kartoitus muuttuvat.
3. Serial.print(F('Lähetä nyt: osoite=0x1111, komento=0x'));
Serial.println();//Tulosta tyhjä rivi muotoillaksesi tulosteen ja selkeyttääksesi seuraavia tietoja. Serial.print(F('Send now: address=0x1111, command=0x'));//Tulosta merkkijono. Serial.print(sCommand, HEX);//Näytä heksadesimaalimuodossa. Serial.print(F(', repeats='));//Ilmaisee toistettujen lähetyskertojen määrän. Serial.print(sRepeats);//Komentojen lähetyskertojen määrä. Serial.println();//Tulosta toinen tyhjä rivi, jotta tuloste on järjestelmällisempi.
-
Käytä
Serial.print()
-funktiota tulostaaksesi merkkijonon 'Send now: address=0x1111, command=0x'
. Tässä käytetäänF()
-makroa tallentamaan merkkijono Flash-muistiin, mikä auttaa säästämään RAM-muistia.
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);
Näytä 'IR NEC SEND' käyttäen drawString
-metodia merkkijonon renderöimiseksi määritettyyn kohtaan näytöllä.
-
StickCP2.Display.width() / 2
: Tämä varmistaa, että merkkijono on keskitetty vaakasuunnassa näytölle. -
StickCP2.Display.height() / 2 - 40
: Tämä asettaa merkkijonon 40 pikseliä pystysuoran keskikohdan yläpuolelle näytöllä.
drawString
-metodia osoitetietojen näyttämiseen.-
StickCP2.Display.width() / 2
: Keskittää tekstin vaakasuunnassa näytölle. -
StickCP2.Display.height() / 2
: Keskittää tekstin pystysuunnassa, asettaen sen näytön keskelle.
Näytä komentotiedot renderöimällä merkkijono 'CMD:0x' yhdessä sCommand
-muuttujan heksadesimaalisen esityksen kanssa.
-
String(sCommand, HEX)
: MuuntaasCommand
-muuttujan heksadesimaalimuotoiseksi merkkijonoksi. -
StickCP2.Display.width() / 2
: Keskittää tekstin vaakasuunnassa näytölle. -
StickCP2.Display.height() / 2 + 40
: Asettaa tekstin 40 pikseliä pystysuoran keskikohdan alapuolelle näytöllä.
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);//Piirrä ympyrä.
Serial.println()
-funktiota tulostaaksesi tietoa **sarjamonitoriin**, lisäten rivinvaihdon lopuksi varmistaaksesi, että seuraava tuloste alkaa uudelta riviltä.-
F('Send standard NEC with 16 bit address')
:F()
-makro tallentaa merkkijonon 'Lähetä standardi NEC 16-bittisellä osoitteella' Flash-muistiin (ohjelman tallennustilaan) RAM-muistin sijaan, mikä auttaa säästämään muistia. -
Tuloste 'Lähetä standardi NEC 16-bittisellä osoitteella' tarkoittaa, että lähetetään standardin NEC-protokollan infrapunasignaali **16-bittisellä osoitteella**.
6. IrSender.sendNEC()
IrSender.sendNEC(0x1111, sCommand, sRepeats);//Lähetä infrapunasignaali NEC-protokollan mukaisesti. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Lähetä arvot kasvavina */
0x1111
: Tämä on infrapunasignaalin osoite, joka edustaa 16-bittistä osoitearvoa kohdelaitteen tai komennon kohteen tunnistamiseen.sCommand
: Tämä on lähetettävä komentoa arvo. Se voi olla 8-bittinen tai 16-bittinen arvo, joka määrittää tarkasti, mitä toimintoa kohdelaitteen tulee suorittaa.sRepeats
: Ilmaisee kuinka monta kertaa signaali toistetaan, yleensä parantamaan signaalin luotettavuutta tai täyttämään ohjattavan laitteen erityisvaatimukset.IrSender.sendNEC(0x1111, sCommand, sRepeats);//Lähetä infrapunasignaali NEC-protokollan mukaisesti. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Lähetä arvot kasvavina */
-
0x1111
: Tämä on infrapunasignaalin laitteen osoite, jota käytetään tietyn laitteen tunnistamiseen. -
0x2223
: Tämä on komentokoodi, joka lähetetään laitteelle ja määrittää suoritettavan toiminnon. -
sRepeats
: Edustaa signaalin toistokertojen määrää, yleensä varmistamaan signaalin luotettavuus tai täyttämään kohdelaitteen vaatimukset.
Helppo ohjelmointi
Joustavat sovellustilanteet
Esikonfiguroitu infrapunapinni