-
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_PIN
je 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ěnnousCommand
na 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