-
Seleccione un módulo IR: Por ejemplo, el módulo Grove IR Receiver.
-
Conexión de hardware: Use la interfaz Grove o cables puente para conectar el módulo IR a los pines GPIO apropiados en el M5StickC Plus2.
-
Soporte de software: Escribe código en Arduino o MicroPython para leer las señales IR. Las bibliotecas de Arduino, como IRremote, pueden decodificar fácilmente los protocolos IR comunes (por ejemplo, protocolo NEC).

Características clave de la función infrarroja
/** * @file ir_nec.ino * @autor SeanKwok (shaoxiang@m5stack.com) * @brief Prueba IR NEC de M5StickCPlus2 * @version 0.1 * @date 2023-12-09 * * * @Hardwares: M5StickCPlus2 * @Platform Versión: Arduino M5Stack Board Manager v2.0.9 * Biblioteca @Dependent: * 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 // Desactiva el reinicio del receptor después de cada // send. Saves 450 bytes program memory and // 269 bytes RAM if receiving functions are // not used. #define ENVIAR_PWM_POR_TIMER #define IR_TX_PIN 19 uint8_t sCommand = 0x34; uint8_t sRepeticiones = 0; configuración vacía() { 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(VERDE); //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); // Comenzar con IR_SEND_PIN como pin de envío IrSender.setSendPin(IR_TX_PIN);//Configuración del pin de transmisión de señal infrarroja } bucle vacío() { Serial.println();//Imprime una línea en blanco para formatear la salida y hacer que la información siguiente sea más clara. Serial.print(F('Enviar ahora: dirección=0x1111, comando=0x'));//Imprimir una cadena. Serial.print(sCommand, HEX);//Mostrar en formato hexadecimal. Serial.print(F(', repeticiones='));//Indicar el número de transmisiones repetidas. Serial.print(sRepeats);//El número de veces que se envía el comando. Serial.println();//Imprime otra línea en blanco para hacer que la salida sea más organizada. StickCP2.Display.clear();//Actualizar la pantalla. //drawString A method used to draw a string at a specified position. StickCP2.Display.drawString('IR NEC ENVIAR', StickCP2.Display.width() / 2, StickCP2.Display.height() / 2 - 40); StickCP2.Display.drawString('DIR: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('Enviar NEC estándar con dirección de 16 bits')) StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Dibujar un círculo. IrSender.sendNEC(0x1111, sCommand, sRepeats);//Enviar una señal infrarroja siguiendo el protocolo NEC. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Incrementar valores de envío */ sCommand += 1;//Incrementa el valor del comando. delay(500);//Retraso de 500 milisegundos. StickCP2.Display.fillCircle(32, 105, 8, YELLOW);//Dibujar un círculo relleno. retraso(500); }
1. IrSender.begin(DESACTIVAR_RETROALIMENTACIÓN_LED);
IrSender.begin(DISABLE_LED_FEEDBACK); // Comenzar con IR_SEND_PIN como pin de envío
begin
del objeto IrSender
para inicializar la función de transmisión infrarroja.-
DISABLE_LED_FEEDBACK
: Este es un parámetro utilizado para desactivar la retroalimentación LED. Si la retroalimentación está activada, el LED parpadeará mientras se transmiten señales infrarrojas.
IrSender
utilizará un pin de transmisión infrarroja preestablecido (como IR_SEND_PIN
) para enviar señales infrarrojas. Esta línea de código activa el transmisor infrarrojo y lo prepara para enviar señales infrarrojas.2. IrSender.setSendPin(IR_TX_PIN);
IrSender.begin(DISABLE_LED_FEEDBACK); // Comenzar con IR_SEND_PIN como pin de envío
Llama al método setSendPin
del objeto IrSender
para configurar el pin de transmisión de la señal infrarroja a IR_TX_PIN
.
-
IR_TX_PIN
es un número de pin definido que especifica el pin exacto utilizado para transmitir señales infrarrojas.
Al usar esta línea de código, puedes personalizar el pin de transmisión infrarroja en lugar de usar el predeterminado. Esto es especialmente útil cuando hay cambios en las conexiones de hardware o el mapeo de pines.
3. Serial.print(F('Enviar ahora: dirección=0x1111, comando=0x'));
Serial.println();//Imprime una línea en blanco para formatear la salida y hacer que la información siguiente sea más clara. Serial.print(F('Enviar ahora: dirección=0x1111, comando=0x'));//Imprimir una cadena. Serial.print(sCommand, HEX);//Mostrar en formato hexadecimal. Serial.print(F(', repeticiones='));//Indicar el número de transmisiones repetidas. Serial.print(sRepeats);//El número de veces que se envía el comando. Serial.println();//Imprime otra línea en blanco para hacer que la salida sea más organizada.
-
Usa
Serial.print()
para imprimir la cadena 'Send now: address=0x1111, command=0x'
. La macroF()
se utiliza aquí para almacenar la cadena en la memoria Flash, ayudando a conservar la 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);
Mostrar 'IR NEC SEND' usando el método drawString
para renderizar la cadena en una posición especificada en la pantalla.
-
StickCP2.Display.width() / 2
: Esto asegura que la cadena esté centrada horizontalmente en la pantalla. -
StickCP2.Display.height() / 2 - 40
: Esto coloca la cadena 40 píxeles por encima del centro vertical de la pantalla.
drawString
para mostrar la información de la dirección.-
StickCP2.Display.width() / 2
: Centra el texto horizontalmente en la pantalla. -
StickCP2.Display.height() / 2
: Centra el texto verticalmente, colocándolo justo en el medio de la pantalla.
Mostrar información del comando representando la cadena 'CMD:0x' junto con la representación hexadecimal de la variable sCommand
.
-
String(sCommand, HEX)
: Convierte la variablesCommand
en una cadena hexadecimal. -
StickCP2.Display.width() / 2
: Centra el texto horizontalmente en la pantalla. -
StickCP2.Display.height() / 2 + 40
: Coloca el texto 40 píxeles por debajo del centro vertical de la pantalla.
5. Serial.println(F('Enviar NEC estándar con dirección de 16 bits'))
Serial.println(F('Enviar NEC estándar con dirección de 16 bits')) StickCP2.Display.fillCircle(32, 105, 8, GREEN);//Dibujar un círculo.
Serial.println()
para imprimir información en el **monitor serial**, añadiendo un salto de línea al final para asegurar que la siguiente salida comience en una nueva línea.-
F('Enviar NEC estándar con dirección de 16 bits')
: La macroF()
almacena la cadena 'Enviar NEC estándar con dirección de 16 bits' en la memoria Flash (almacenamiento del programa) en lugar de en la **RAM**, ayudando a conservar memoria. -
La salida 'Enviar NEC estándar con dirección de 16 bits' indica que se está transmitiendo una señal infrarroja con protocolo NEC estándar con una **dirección de 16 bits**.
6. IrSender.sendNEC()
IrSender.sendNEC(0x1111, sCommand, sRepeats);//Enviar una señal infrarroja siguiendo el protocolo NEC. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Incrementar valores de envío */
0x1111
: Esta es la dirección de la señal infrarroja, que representa un valor de dirección de 16 bits utilizado para identificar el dispositivo objetivo o el destino del comando.sCommand
: Este es el valor del comando que se enviará. Puede ser un valor de 8 bits o 16 bits, especificando la operación exacta que el dispositivo objetivo debe realizar.sRepeats
: Indica el número de veces que se repite la señal, generalmente para mejorar la fiabilidad de la señal o cumplir con requisitos específicos del dispositivo que se controla.IrSender.sendNEC(0x1111, sCommand, sRepeats);//Enviar una señal infrarroja siguiendo el protocolo NEC. // IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);//Send an infrared signal following the Onkyo protocol. /* * Incrementar valores de envío */
-
0x1111
: Esta es la dirección del dispositivo de la señal infrarroja, utilizada para identificar un dispositivo específico. -
0x2223
: Este es el código de comando enviado al dispositivo, especificando la operación a realizar. -
sRepeats
: Representa el número de veces que se repite la señal, típicamente para asegurar la fiabilidad de la señal o cumplir con los requisitos del dispositivo objetivo.
Programación fácil
Escenarios de Aplicación Flexibles
Pin infrarrojo preconfigurado