/********* 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 */