-
Vyberte IR modul: Například modul Grove IR Receiver.
-
Hardwarové připojení: Použijte rozhraní Grove nebo propojovací vodiče k připojení IR modulu k příslušným GPIO pinům na M5StickC Plus2.
-
Podpora softwaru: Pište kód v Arduino nebo MicroPython pro čtení IR signálů. Arduino knihovny, jako například IRremote, mohou snadno dekódovat běžné IR protokoly (např. NEC protokol).

Klíčové vlastnosti infračervené funkce
/**
* @file ir_nec.ino
* @autor SeanKwok (shaoxiang@m5stack.com)
* @brief Test IR NEC pro M5StickCPlus2
* @version 0.1
* @date 2023-12-09
*
*
* @Hardwares: M5StickCPlus2
* @Platform Verze: Arduino M5Stack Board Manager v2.0.9
* @Závislá knihovna:
* 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 // Zakáže restartování přijímače po každém
// send. Saves 450 bytes program memory and
// 269 bytes RAM if receiving functions are
// not used.
#define SEND_PWM_POMOCÍ_TIMERU
#define IR_TX_PIN 19
uint8_t sCommand = 0x34;
uint8_t sOpakování = 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(ZELENÁ);
//Text alignment middle_center means aligning the center of the text to the specified coordinate position.
StickCP2.Display.setTextDatum(střed_střed);
//Font Styles
StickCP2.Display.setTextFont(&fonts::Orbitron_Light_24);
//Font size
StickCP2.Display.setTextSize(1);
IrSender.begin(DISABLE_LED_FEEDBACK); // Začít s IR_SEND_PIN jako vysílacím pinem
IrSender.setSendPin(IR_TX_PIN);//Nastavení pinu pro vysílání infračerveného signálu
}
void loop() {
Serial.println();//Vytiskne prázdný řádek pro formátování výstupu a zpřehlednění následujících informací.
Serial.print(F('Odeslat nyní: adresa=0x1111, příkaz=0x'));//Vytisknout řetězec.
Serial.print(sCommand, HEX);//Zobrazit v šestnáctkovém formátu.
Serial.print(F(', repeats='));//Uveďte počet opakovaných přenosů.
Serial.print(sRepeats);//Počet opakování příkazu.
Serial.println();//Vytiskněte další prázdný řádek pro lepší uspořádání výstupu.
StickCP2.Display.clear();//Aktualizovat zobrazení obrazovky.
//drawString A method used to draw a string at a specified position.
StickCP2.Display.drawString('IR NEC ODESLAT', 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('Odeslat standardní NEC s 16bitovou adresou'));
StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Nakreslit kruh.
IrSender.sendNEC(0x1111, sCommand, sRepeats);//Odeslat infračervený signál podle protokolu NEC.
// IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
/*
* Zvýšit odeslané hodnoty
*/
sCommand += 1;//Zvýšení hodnoty příkazu.
delay(500);//Prodleva 500 milisekund.
StickCP2.Display.fillCircle(32, 105, 8, YELLOW);//Nakreslete vyplněný kruh.
zpoždění(500);
}
1. IrSender.begin(DISABLE_LED_FEEDBACK);
IrSender.begin(DISABLE_LED_FEEDBACK); // Začít s IR_SEND_PIN jako vysílacím pinem
begin objektu IrSender pro inicializaci funkce infračerveného přenosu.-
DISABLE_LED_FEEDBACK: Toto je parametr používaný k deaktivaci LED zpětné vazby. Pokud je zpětná vazba povolena, LED bude blikat během vysílání infračervených signálů.
IrSender použije přednastavený pin pro infračervený přenos (například IR_SEND_PIN) k odesílání infračervených signálů. Tento řádek kódu aktivuje infračervený vysílač a připraví ho k odesílání infračervených signálů.2. IrSender.setSendPin(IR_TX_PIN);
IrSender.begin(DISABLE_LED_FEEDBACK); // Začít s IR_SEND_PIN jako vysílacím pinem
Zavolejte metodu setSendPin objektu IrSender, abyste nastavili pin pro přenos infračerveného signálu na IR_TX_PIN.
-
IR_TX_PINje definované číslo pinu, které určuje přesný pin používaný k vysílání infračervených signálů.
Použitím tohoto řádku kódu můžete přizpůsobit pin pro infračervený přenos místo použití výchozího. To je zvláště užitečné, když dojde ke změnám v hardwarových připojeních nebo mapování pinů.
3. Serial.print(F('Odeslat nyní: adresa=0x1111, příkaz=0x'));
Serial.println();//Vytiskne prázdný řádek pro formátování výstupu a zpřehlednění následujících informací.
Serial.print(F('Odeslat nyní: adresa=0x1111, příkaz=0x'));//Vytisknout řetězec.
Serial.print(sCommand, HEX);//Zobrazit v šestnáctkovém formátu.
Serial.print(F(', repeats='));//Uveďte počet opakovaných přenosů.
Serial.print(sRepeats);//Počet opakování příkazu.
Serial.println();//Vytiskněte další prázdný řádek pro lepší uspořádání výstupu.
-
Použijte
Serial.print()k vytištění řetězce 'Send now: address=0x1111, command=0x'. MakroF()je zde použito k uložení řetězce do Flash paměti, což pomáhá šetřit 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);
Zobrazte 'IR NEC SEND' pomocí metody drawString pro vykreslení řetězce na určené pozici na obrazovce.
-
StickCP2.Display.width() / 2: Tím se zajistí, že řetězec je horizontálně vycentrován na displeji. -
StickCP2.Display.height() / 2 - 40: Toto umístí řetězec 40 pixelů nad vertikální střed obrazovky.
drawString pro zobrazení informací o adrese.-
StickCP2.Display.width() / 2: Zarovná text vodorovně na střed obrazovky. -
StickCP2.Display.height() / 2: Vertikálně zarovná text do středu, umístí jej přímo doprostřed displeje.
Zobrazte informace o příkazu vykreslením řetězce 'CMD:0x' spolu s hexadecimální reprezentací proměnné sCommand.
-
String(sCommand, HEX): Převádí proměnnousCommandna hexadecimální řetězec. -
StickCP2.Display.width() / 2: Zarovná text horizontálně na displeji na střed. -
StickCP2.Display.height() / 2 + 40: Umístí text 40 pixelů pod vertikální střed obrazovky.
5. Serial.println(F('Odeslat standardní NEC s 16bitovou adresou'));
Serial.println(F('Odeslat standardní NEC s 16bitovou adresou'));
StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Nakreslit kruh.
Serial.println() k tisku informací do **sériového monitoru**, přičemž na konec přidáte nový řádek, aby další výstup začínal na novém řádku.-
F('Odeslat standardní NEC s 16bitovou adresou'): MakroF()ukládá řetězec 'Odeslat standardní NEC s 16bitovou adresou' do Flash paměti (programové paměti) místo do **RAM**, což pomáhá šetřit paměť. -
Výstup 'Odeslat standardní NEC s 16bitovou adresou' znamená, že je vysílán infračervený signál se standardním protokolem NEC s **16bitovou adresou**.
6. IrSender.sendNEC()
IrSender.sendNEC(0x1111, sCommand, sRepeats);//Odeslat infračervený signál podle protokolu NEC.
// IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
/*
* Zvýšit odeslané hodnoty
*/
0x1111: Toto je adresa infračerveného signálu, představující 16bitovou hodnotu adresy používanou k identifikaci cílového zařízení nebo cíle příkazu.sCommand: Toto je hodnota příkazu, která má být odeslána. Může to být 8bitová nebo 16bitová hodnota, která určuje přesnou operaci, kterou by měl cílový přístroj provést.sRepeats: Udává počet opakování signálu, obvykle za účelem zvýšení spolehlivosti signálu nebo splnění specifických požadavků ovládaného zařízení. IrSender.sendNEC(0x1111, sCommand, sRepeats);//Odeslat infračervený signál podle protokolu NEC.
// IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol.
/*
* Zvýšit odeslané hodnoty
*/
-
0x1111: Toto je adresa zařízení infračerveného signálu, používaná k identifikaci konkrétního zařízení. -
0x2223: Toto je kód příkazu odeslaný zařízení, který určuje operaci, která má být provedena. -
sRepeats: Představuje počet opakování signálu, obvykle za účelem zajištění spolehlivosti signálu nebo splnění požadavků cílového zařízení.
Snadné programování
Flexibilní aplikační scénáře
Přednastavený infračervený pin
