-
Wybierz moduł IR: Na przykład moduł Grove IR Receiver.
-
Połączenie sprzętowe: Użyj interfejsu Grove lub przewodów połączeniowych, aby podłączyć moduł IR do odpowiednich pinów GPIO na M5StickC Plus2.
-
Wsparcie oprogramowania: Pisanie kodu w Arduino lub MicroPython do odczytu sygnałów IR. Biblioteki Arduino, takie jak IRremote, mogą łatwo dekodować popularne protokoły IR (np. protokół NEC).

Kluczowe cechy funkcji podczerwieni
/** * @file ir_nec.ino * @autor SeanKwok (shaoxiang@m5stack.com) * @brief Test IR NEC M5StickCPlus2 * @version 0.1 * @date 2023-12-09 * * * @Hardwares: M5StickCPlus2 * @Platform Wersja: Arduino M5Stack Board Manager v2.0.9 * @Zależna biblioteka: * 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 // Wyłącza ponowne uruchamianie odbiornika po każdym // send. Saves 450 bytes program memory and // 269 bytes RAM if receiving functions are // not used. #define WYSYŁAJ_PWM_PRZEZ_TIMER #define IR_TX_PIN 19 uint8_t sCommand = 0x34; uint8_t sPowtórzenia = 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(ZIELONY); //Text alignment middle_center means aligning the center of the text to the specified coordinate position. StickCP2.Display.setTextDatum(środek_środek); //Font Styles StickCP2.Display.setTextFont(&fonts::Orbitron_Light_24); //Font size StickCP2.Display.setTextSize(1); IrSender.begin(DISABLE_LED_FEEDBACK); // Rozpocznij z IR_SEND_PIN jako pinem nadawczym IrSender.setSendPin(IR_TX_PIN);//Ustawienia pinu nadawania sygnału podczerwieni } void loop() { Serial.println();//Wydrukuj pustą linię, aby sformatować wyjście i uczynić następujące informacje bardziej czytelnymi. Serial.print(F('Wyślij teraz: adres=0x1111, polecenie=0x'));//Wydrukuj ciąg znaków. Serial.print(sCommand, HEX);//Wyświetl w formacie szesnastkowym. Serial.print(F(', powtórzenia='));//Wskaż liczbę powtórzonych transmisji. Serial.print(sRepeats);//Liczba razy, kiedy polecenie jest wysyłane. Serial.println();//Wydrukuj kolejną pustą linię, aby uczynić wyjście bardziej uporządkowanym. StickCP2.Display.clear();//Aktualizuj wyświetlacz ekranu. //drawString A method used to draw a string at a specified position. StickCP2.Display.drawString('IR NEC WYŚLIJ', 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.szerokość() / 2, StickCP2.Display.height() / 2 + 40); Serial.println(F('Wyślij standard NEC z 16-bitowym adresem')); StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Narysuj koło. IrSender.sendNEC(0x1111, sCommand, sRepeats);//Wyślij sygnał podczerwieni zgodnie z protokołem NEC. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Zwiększ wartości wysyłania */ sCommand += 1;//Zwiększ wartość polecenia. delay(500);//Opóźnienie o 500 milisekund. StickCP2.Display.fillCircle(32, 105, 8, YELLOW);//Narysuj wypełnione koło. opóźnienie(500); }
1. IrSender.begin(DISABLE_LED_FEEDBACK);
IrSender.begin(DISABLE_LED_FEEDBACK); // Rozpocznij z IR_SEND_PIN jako pinem nadawczym
begin
obiektu IrSender
, aby zainicjować funkcję transmisji podczerwieni.-
DISABLE_LED_FEEDBACK
: To jest parametr używany do wyłączenia informacji zwrotnej LED. Jeśli informacja zwrotna jest włączona, dioda LED będzie migać podczas przesyłania sygnałów podczerwieni.
IrSender
będzie używać wstępnie ustawionego pinu transmisji podczerwieni (takiego jak IR_SEND_PIN
) do wysyłania sygnałów podczerwieni. Ta linia kodu aktywuje nadajnik podczerwieni i przygotowuje go do wysyłania sygnałów podczerwieni.2. IrSender.setSendPin(IR_TX_PIN);
IrSender.begin(DISABLE_LED_FEEDBACK); // Rozpocznij z IR_SEND_PIN jako pinem nadawczym
Wywołaj metodę setSendPin
obiektu IrSender
, aby ustawić pin transmisji sygnału podczerwieni na IR_TX_PIN
.
-
IR_TX_PIN
to zdefiniowany numer pinu, który określa dokładny pin używany do transmisji sygnałów podczerwieni.
Używając tej linii kodu, możesz dostosować pin transmisji podczerwieni zamiast używać domyślnego. Jest to szczególnie przydatne, gdy następują zmiany w połączeniach sprzętowych lub mapowaniu pinów.
3. Serial.print(F('Wyślij teraz: adres=0x1111, polecenie=0x'));
Serial.println();//Wydrukuj pustą linię, aby sformatować wyjście i uczynić następujące informacje bardziej czytelnymi. Serial.print(F('Wyślij teraz: adres=0x1111, polecenie=0x'));//Wydrukuj ciąg znaków. Serial.print(sCommand, HEX);//Wyświetl w formacie szesnastkowym. Serial.print(F(', powtórzenia='));//Wskaż liczbę powtórzonych transmisji. Serial.print(sRepeats);//Liczba razy, kiedy polecenie jest wysyłane. Serial.println();//Wydrukuj kolejną pustą linię, aby uczynić wyjście bardziej uporządkowanym.
-
Użyj
Serial.print()
, aby wydrukować ciąg znaków 'Send now: address=0x1111, command=0x'
. MakroF()
jest tutaj używane do przechowywania ciągu w pamięci Flash, co pomaga oszczędzać 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);
Wyświetl 'IR NEC SEND' za pomocą metody drawString
, aby wyrenderować ciąg znaków w określonej pozycji na ekranie.
-
StickCP2.Display.width() / 2
: To zapewnia, że ciąg jest wyśrodkowany poziomo na wyświetlaczu. -
StickCP2.Display.height() / 2 - 40
: To umieszcza ciąg 40 pikseli powyżej pionowego środka ekranu.
drawString
, aby pokazać informacje o adresie.-
StickCP2.Display.width() / 2
: Wyrównuje tekst poziomo na środku ekranu. -
StickCP2.Display.height() / 2
: Wyrównuje tekst pionowo, umieszczając go dokładnie na środku wyświetlacza.
Wyświetl informacje o poleceniu poprzez renderowanie ciągu 'CMD:0x' wraz z szesnastkową reprezentacją zmiennej sCommand
.
-
String(sCommand, HEX)
: Konwertuje zmiennąsCommand
na ciąg szesnastkowy. -
StickCP2.Display.width() / 2
: Wyrównuje tekst poziomo na środku wyświetlacza. -
StickCP2.Display.height() / 2 + 40
: Umieszcza tekst 40 pikseli poniżej pionowego środka ekranu.
5. Serial.println(F('Wyślij standard NEC z 16-bitowym adresem'));
Serial.println(F('Wyślij standard NEC z 16-bitowym adresem')); StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Narysuj koło.
Serial.println()
, aby wydrukować informacje na **monitorze szeregowym**, dodając nową linię na końcu, aby zapewnić, że następne wyjście zacznie się od nowej linii.-
F('Wyślij standard NEC z 16-bitowym adresem')
: MakroF()
przechowuje ciąg znaków 'Wyślij standard NEC z 16-bitowym adresem' w pamięci Flash (pamięć programu) zamiast w **RAM**, co pomaga oszczędzać pamięć. -
Wyjście 'Wyślij standardowy NEC z 16-bitowym adresem' wskazuje, że standardowy sygnał podczerwieni protokołu NEC jest przesyłany z **16-bitowym adresem**.
6. IrSender.sendNEC()
IrSender.sendNEC(0x1111, sCommand, sRepeats);//Wyślij sygnał podczerwieni zgodnie z protokołem NEC. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Zwiększ wartości wysyłania */
0x1111
: To jest adres sygnału podczerwieni, reprezentujący 16-bitową wartość adresu używaną do identyfikacji docelowego urządzenia lub miejsca przeznaczenia polecenia.sCommand
: To jest wartość polecenia, która ma zostać wysłana. Może to być 8-bitowa lub 16-bitowa wartość, określająca dokładną operację, którą powinno wykonać docelowe urządzenie.sRepeats
: Wskazuje liczbę powtórzeń sygnału, zwykle w celu zwiększenia niezawodności sygnału lub spełnienia określonych wymagań urządzenia sterowanego.IrSender.sendNEC(0x1111, sCommand, sRepeats);//Wyślij sygnał podczerwieni zgodnie z protokołem NEC. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Zwiększ wartości wysyłania */
-
0x1111
: To jest adres urządzenia sygnału podczerwieni, używany do identyfikacji konkretnego urządzenia. -
0x2223
: To jest kod polecenia wysyłany do urządzenia, określający operację do wykonania. -
sRepeats
: Reprezentuje liczbę powtórzeń sygnału, zazwyczaj w celu zapewnienia niezawodności sygnału lub spełnienia wymagań docelowego urządzenia.
Łatwe programowanie
Elastyczne scenariusze zastosowań
Wstępnie skonfigurowany pin podczerwieni