M5AtomS3 IR driver case program. This case uses the Arduino-IRremote - Lib to implement NEC coding.
/**
* @file ir_nec.ino
* @author SeanKwok (shaoxiang@m5stack.com)
* @brief M5AtomS3 IR NEC test
* @version 0.1
* @date 2023-12-13
*
*
* @Hardwares: M5AtomS3
* @Platform Version: Arduino M5Stack Board Manager v2.0.9
* @Dependent Library:
* M5GFX: https://github.com/m5stack/M5GFX
* M5Unified: https://github.com/m5stack/M5Unified
* M5AtomS3: https://github.com/m5stack/M5AtomS3
* IRremote: https://github.com/Arduino-IRremote/Arduino-IRremote
*/
#define DISABLE_CODE_FOR_RECEIVER // Disables restarting receiver after each
// send. Saves 450 bytes program memory and
// 269 bytes RAM if receiving functions are
// not used.
#define SEND_PWM_BY_TIMER
#define IR_TX_PIN 4
#include "M5AtomS3.h"
#include <IRremote.hpp> // include the library
uint8_t sCommand = 0x34;
uint8_t sRepeats = 0;
void setup() {
auto cfg = M5.config();
AtomS3.begin(cfg);
AtomS3.Display.setTextColor(GREEN);
AtomS3.Display.setTextDatum(middle_center);
AtomS3.Display.setFont(&fonts::FreeMono9pt7b);
AtomS3.Display.setTextSize(1);
IrSender.begin(DISABLE_LED_FEEDBACK); // Start with IR_SEND_PIN as send pin
IrSender.setSendPin(IR_TX_PIN);
}
void loop() {
Serial.println();
Serial.print(F("Send now: address=0x1111, command=0x"));
Serial.print(sCommand, HEX);
Serial.print(F(", repeats="));
Serial.print(sRepeats);
Serial.println();
AtomS3.Display.clear();
AtomS3.Display.drawString("IR NEC SEND", AtomS3.Display.width() / 2,
AtomS3.Display.height() / 2 - 40);
AtomS3.Display.drawString("ADDR:0x1111", AtomS3.Display.width() / 2,
AtomS3.Display.height() / 2);
AtomS3.Display.drawString("CMD:0x" + String(sCommand, HEX),
AtomS3.Display.width() / 2,
AtomS3.Display.height() / 2 + 40);
Serial.println(F("Send standard NEC with 16 bit address"));
AtomS3.Display.fillCircle(10, 105, 8, GREEN);
IrSender.sendNEC(0x1111, sCommand, sRepeats);
// IrSender.sendOnkyo(0x1111, 0x2223, sRepeats);
/*
* Increment send values
*/
sCommand += 1;
delay(500);
AtomS3.Display.fillCircle(10, 105, 8, YELLOW);
delay(500);
}