-
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ł podczerwieni do odpowiednich pinów GPIO urządzenia M5StickC Plus2.
-
Obsługa programowa: Napisz kod w Arduino lub MicroPython, aby odczytywać sygnały podczerwieni. Biblioteki Arduino, takie jak IRremote, mogą łatwo dekodować popularne protokoły podczerwieni, np. protokół NEC.

Najważniejsze cechy funkcji podczerwieni
/**
* @file ir_nec.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief Test IR NEC dla M5StickCPlus2
* @version 0.1
* @date 2023-12-09
*
*
* @Hardwares: M5StickCPlus2
* @Platform Version: Arduino M5Stack Board Manager v2.0.9
* @Dependent Library:
* 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
// wysyłane. Oszczędza 450 bajtów pamięci programu i
// 269 bajtów pamięci RAM, jeśli funkcje odbioru są
// nieużywane.
#define SEND_PWM_BY_TIMER
#define IR_TX_PIN 19
uint8_t sCommand = 0x34;
uint8_t sRepeats = 0;
void setup() {
auto cfg = M5.config();
// Aby poznać podstawową logikę inicjalizacji za pomocą begin(), zapoznaj się z biblioteką zależną.
StickCP2.begin(cfg);
// Kierunki obrotu wyświetlacza
StickCP2.Display.setRotation(1);
// Kolor tekstu wyświetlanego na ekranie.
StickCP2.Display.setTextColor(GREEN);
//Wyrównanie tekstu: middle_center oznacza wyrównanie środka tekstu do określonej pozycji współrzędnych.
StickCP2.Display.setTextDatum(middle_center);
//Style czcionki
StickCP2.Display.setTextFont(&fonts::Orbitron_Light_24);
//Rozmiar czcionki
StickCP2.Display.setTextSize(1);
IrSender.begin(DISABLE_LED_FEEDBACK); // Uruchom z IR_SEND_PIN jako pinem transmisji
IrSender.setSendPin(IR_TX_PIN);//Ustawienia pinu transmisji sygnału podczerwieni
}
void loop() {
Serial.println();//Wyświetl pustą linię, aby sformatować dane wyjściowe i ułatwić odczytanie kolejnych informacji.
Serial.print(F('Send now: address=0x1111, command=0x'));//Wyświetl ciąg znaków.
Serial.print(sCommand, HEX);//Wyświetl w formacie szesnastkowym.
Serial.print(F(', repeats='));//Wskaż liczbę powtórzonych transmisji.
Serial.print(sRepeats);//Liczba wysłań polecenia.
Serial.println();//Wyświetl kolejną pustą linię, aby uporządkować dane wyjściowe.
StickCP2.Display.clear();//Zaktualizuj wyświetlacz.
//drawString Metoda używana do rysowania ciągu znaków w określonym miejscu.
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);//Narysuj okrąg.
IrSender.sendNEC(0x1111, sCommand, sRepeats);//Wysyłanie sygnału podczerwieni zgodnie z protokołem NEC.
// IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Wysyłanie sygnału podczerwieni zgodnie z protokołem Onkyo.
/*
* Zwiększanie wartości wysyłanych danych
*/
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.
delay(500);
}
1. IrSender.begin(DISABLE_LED_FEEDBACK);
IrSender.begin(DISABLE_LED_FEEDBACK); // Uruchom z IR_SEND_PIN jako pinem transmisji
begin obiektu IrSender, aby zainicjować funkcję transmisji podczerwieni.-
DISABLE_LED_FEEDBACK: To parametr służący do wyłączenia sygnalizacji za pomocą diody LED. Gdy sygnalizacja jest włączona, dioda LED miga podczas transmisji sygnałów podczerwieni.
IrSender używa ustawionego pinu transmisji podczerwieni (np. IR_SEND_PIN) do wysyłania sygnałów podczerwieni. Ten wiersz kodu aktywuje nadajnik podczerwieni i przygotowuje go do wysyłania sygnałów.2. IrSender.setSendPin(IR_TX_PIN);
IrSender.begin(DISABLE_LED_FEEDBACK); // Uruchom z IR_SEND_PIN jako pinem transmisji
Wywołaj metodę setSendPin obiektu IrSender, aby ustawić pin transmisji sygnału podczerwieni na IR_TX_PIN.
-
IR_TX_PINto zdefiniowany numer pinu określający dokładny pin używany do wysyłania sygnałów podczerwieni.
Za pomocą tego wiersza kodu możesz dostosować pin transmisji podczerwieni zamiast używać domyślnego. Jest to szczególnie przydatne w przypadku zmian w połączeniach sprzętowych lub mapowaniu pinów.
3. Serial.print(F('Send now: address=0x1111, command=0x'));
Serial.println();//Wyświetl pustą linię, aby sformatować dane wyjściowe i ułatwić odczytanie kolejnych informacji.
Serial.print(F('Send now: address=0x1111, command=0x'));//Wyświetl ciąg znaków.
Serial.print(sCommand, HEX);//Wyświetl w formacie szesnastkowym.
Serial.print(F(', repeats='));//Wskaż liczbę powtórzonych transmisji.
Serial.print(sRepeats);//Liczba wysłań polecenia.
Serial.println();//Wyświetl kolejną pustą linię, aby uporządkować dane wyjściowe.
-
Użyj
Serial.print(), aby wyświetlić ciąg „Send now: address=0x1111, command=0x”. MakroF()służy tutaj do przechowywania ciągu w pamięci Flash, co pomaga oszczędzać pamięć RAM.
StickCP2.Display.drawString(' ', , );
//drawString Metoda używana do rysowania ciągu znaków w określonym miejscu.
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świetla „IR NEC SEND” za pomocą metody drawString, aby wyrenderować ciąg znaków w określonym miejscu na ekranie.
-
StickCP2.Display.width() / 2: Zapewnia wyśrodkowanie ciągu znaków w poziomie na wyświetlaczu. -
StickCP2.Display.height() / 2 - 40: Umieszcza ciąg znaków 40 pikseli powyżej środka w pionie ekranu.
drawString, aby pokazać informacje o adresie.-
StickCP2.Display.width() / 2: Wyśrodkowuje tekst w poziomie na ekranie. -
StickCP2.Display.height() / 2: Wyśrodkowuje tekst w pionie, umieszczając go dokładnie na środku wyświetlacza.
Wyświetla informacje o poleceniu, renderując ciąg znaków 'CMD:0x' wraz z szesnastkową reprezentacją zmiennej sCommand.
-
String(sCommand, HEX): Konwertuje zmiennąsCommandna ciąg znaków w formacie szesnastkowym. -
StickCP2.Display.width() / 2: Wyśrodkowuje tekst w poziomie na wyświetlaczu. -
StickCP2.Display.height() / 2 + 40: Umieszcza tekst 40 pikseli poniżej środka w pionie ekranu.
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);//Narysuj okrąg.
Serial.println(), aby wyświetlić informacje na **monitorze szeregowym**, dodając znak nowej linii na końcu, dzięki czemu następny wynik zacznie się w nowym wierszu.-
F('Send standard NEC with 16 bit address'): MakroF()przechowuje ciąg znaków „Send standard NEC with 16 bit address” w pamięci Flash (pamięci programu), a nie w **pamięci RAM**, pomagając oszczędzać pamięć. -
Dane wyjściowe „Send standard NEC with 16 bit address” wskazują, że przesyłany jest standardowy sygnał podczerwieni protokołu NEC z **16-bitowym adresem**.
6. IrSender.sendNEC()
IrSender.sendNEC(0x1111, sCommand, sRepeats);//Wysyłanie sygnału podczerwieni zgodnie z protokołem NEC.
// IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Wysyłanie sygnału podczerwieni zgodnie z protokołem Onkyo.
/*
* Zwiększanie wartości wysyłanych danych
*/
0x1111: to adres sygnału podczerwieni, reprezentujący 16-bitową wartość adresu używaną do identyfikowania urządzenia docelowego lub miejsca docelowego polecenia.sCommand: to wartość polecenia, która zostanie wysłana. Może być to wartość 8-bitowa lub 16-bitowa, określająca dokładną operację, którą powinno wykonać urządzenie docelowe.sRepeats: wskazuje liczbę powtórzeń sygnału, zwykle w celu zwiększenia niezawodności sygnału lub spełnienia określonych wymagań sterowanego urządzenia. IrSender.sendNEC(0x1111, sCommand, sRepeats);//Wysyłanie sygnału podczerwieni zgodnie z protokołem NEC.
// IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Wysyłanie sygnału podczerwieni zgodnie z protokołem Onkyo.
/*
* Zwiększanie wartości wysyłanych danych
*/
-
0x1111: to adres urządzenia sygnału podczerwieni, używany do identyfikowania konkretnego urządzenia. -
0x2223: to kod polecenia wysyłanego do urządzenia, określający operację, która ma zostać wykonana. -
sRepeats: określa liczbę powtórzeń sygnału, zazwyczaj w celu zapewnienia niezawodności sygnału lub spełnienia wymagań urządzenia docelowego.
Łatwe programowanie
Elastyczne scenariusze zastosowań
Wstępnie skonfigurowany pin podczerwieni
