/********* Pleasedontcode.com **********
Pleasedontcode thanks you for automatic code generation! Enjoy your code!
- Terms and Conditions:
You have a non-exclusive, revocable, worldwide, royalty-free license
for personal and commercial use. Attribution is optional; modifications
are allowed, but you're responsible for code maintenance. We're not
liable for any loss or damage. For full terms,
please visit pleasedontcode.com/termsandconditions.
- Project: IR Transmitter
- Source Code NOT compiled for: ESP32 DevKit V1
- Source Code created on: 2025-09-24 19:45:42
********* Pleasedontcode.com **********/
/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
/* Напиши скетч который будет перебирать и отправлять */
/* на IR transmitter сигналы включения большинства */
/* марок телевизоров (желательно чтобы любой */
/* телевизор при наведении на него устройства */
/* включился/отключился). потом расскажи как */
/* подключить трансмиттер */
/****** END SYSTEM REQUIREMENTS *****/
/* START CODE */
/****** DEFINITION OF LIBRARIES *****/
#include
/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);
void testAllTVbrands();
void sendBrandPower(int index);
enum Protocol { NEC_PROTOCOL, SONY_PROTOCOL, SAMSUNG_PROTOCOL, LG_PROTOCOL };
struct TVCode {
const char* brand;
Protocol protocol;
uint32_t data;
uint16_t nbits;
};
// List of known TV brands and their power codes (best effort for common models)
static const TVCode tvCodes[] = {
{"Samsung", SAMSUNG_PROTOCOL, 0xE0E040BF, 32},
{"LG", NEC_PROTOCOL, 0x20DF10EF, 32},
{"Sony", SONY_PROTOCOL, 0xA90, 12}
};
static const size_t numBrands = sizeof(tvCodes)/sizeof(tvCodes[0]);
const int IR_LED_PIN = 4; // GPIO connected to IR LED
IRsend irsend(IR_LED_PIN);
unsigned long lastTestMillis = 0;
const unsigned long TEST_INTERVAL = 15000; // 15 seconds between test cycles
void setup(void)
{
// put your setup code here, to run once:
Serial.begin(115200);
while(!Serial) ;
irsend.begin();
Serial.println("IR TX transmitter ready");
}
void loop(void)
{
unsigned long now = millis();
if (now - lastTestMillis >= TEST_INTERVAL) {
testAllTVbrands();
lastTestMillis = now;
}
}
void testAllTVbrands()
{
Serial.println("Sending power codes for known brands...");
for (size_t i=0; i= (int)numBrands) return;
const TVCode& c = tvCodes[index];
Serial.print("Sending "); Serial.print(c.brand);
Serial.print(" power code using ");
switch (c.protocol) {
case NEC_PROTOCOL: Serial.println("NEC"); break;
case SONY_PROTOCOL: Serial.println("Sony"); break;
case SAMSUNG_PROTOCOL: Serial.println("Samsung"); break;
case LG_PROTOCOL: Serial.println("LG"); break;
default: Serial.println("Unknown"); break;
}
switch (c.protocol) {
case NEC_PROTOCOL: irsend.sendNEC(c.data, c.nbits); break;
case SONY_PROTOCOL: irsend.sendSony(c.data, c.nbits); break;
case SAMSUNG_PROTOCOL: irsend.sendSAMSUNG(c.data, c.nbits); break;
case LG_PROTOCOL: irsend.sendLG(c.data, c.nbits); break;
}
delay(60);
}
/* END CODE */