////////////////////////////////////////////// // RemoteXY include library // ////////////////////////////////////////////// #define REMOTEXY_MODE__WIFI_CLOUD #include #include #include #include #include #include // RemoteXY connection settings #define REMOTEXY_WIFI_SSID "WI_FI" #define REMOTEXY_WIFI_PASSWORD "YOURPASSWORD" #define REMOTEXY_CLOUD_SERVER "cloud.remotexy.com" #define REMOTEXY_CLOUD_PORT 6376 #define REMOTEXY_CLOUD_TOKEN "cda5e7167a8af520f36a66c4415034a6" #define REMOTEXY_ACCESS_PASSWORD "1234" #pragma pack(push, 1) uint8_t const PROGMEM RemoteXY_CONF_PROGMEM[] = { 255,3,0,3,0,71,0,19,0,0,0,88,73,65,79,69,83,80,51,50, 74,73,65,78,0,31,1,106,200,1,1,4,0,10,27,11,46,46,48,4, 26,31,79,78,0,31,79,70,70,0,65,33,68,39,39,112,13,8,119,93, 20,77,6,94,26,129,13,151,83,34,64,17,76,97,98,101,108,0 }; struct { uint8_t pushSwitch_01; uint8_t editTime_01_hour; uint8_t editTime_01_minute; uint8_t led_01_r; uint8_t led_01_g; uint8_t led_01_b; uint8_t connect_flag; } RemoteXY; #pragma pack(pop) ///////////////////////////////////////////// // OLED CONFIG // ///////////////////////////////////////////// #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_ADDR 0x3C #define SDA_PIN D4 #define SCL_PIN D5 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); ///////////////////////////////////////////// // PIN // ///////////////////////////////////////////// #define PIN_R D3 #define PIN_G D2 #define PIN_B D1 #define PIN_SERVO D7 Servo miServo; ///////////////////////////////////////////// // SETUP // ///////////////////////////////////////////// void setup() { RemoteXY_Init (); // RGB pinMode(PIN_R, OUTPUT); pinMode(PIN_G, OUTPUT); pinMode(PIN_B, OUTPUT); // Servo miServo.attach(PIN_SERVO); // OLED Wire.begin(SDA_PIN, SCL_PIN); display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 0); display.println("Sistema iniciado"); display.display(); } ///////////////////////////////////////////// // LOOP // ///////////////////////////////////////////// void loop() { RemoteXY_Handler (); // ====== NEW LOGIC RGB ====== static uint8_t lastState = 0; static int colorIndex = 0; // Detectar cambio OFF -> ON if (RemoteXY.pushSwitch_01 == 1 && lastState == 0) { colorIndex++; if (colorIndex > 5) colorIndex = 0; } lastState = RemoteXY.pushSwitch_01; // CONTROL RGB if (RemoteXY.pushSwitch_01 == 1) { switch (colorIndex) { case 0: // RED analogWrite(PIN_R, 255); analogWrite(PIN_G, 0); analogWrite(PIN_B, 0); break; case 1: // GREEN analogWrite(PIN_R, 0); analogWrite(PIN_G, 255); analogWrite(PIN_B, 0); break; case 2: // BLUE analogWrite(PIN_R, 0); analogWrite(PIN_G, 0); analogWrite(PIN_B, 255); break; case 3: // YELLOW analogWrite(PIN_R, 255); analogWrite(PIN_G, 255); analogWrite(PIN_B, 0); break; case 4: // Morado analogWrite(PIN_R, 255); analogWrite(PIN_G, 0); analogWrite(PIN_B, 255); break; case 5: // Cyan analogWrite(PIN_R, 0); analogWrite(PIN_G, 255); analogWrite(PIN_B, 255); break; } } else { // turn off RGB analogWrite(PIN_R, 0); analogWrite(PIN_G, 0); analogWrite(PIN_B, 0); } // 🎮 CONTROL SERVO if (RemoteXY.pushSwitch_01 == 1) { miServo.write(90); } else { miServo.write(0); } // 🖥️ OLED display.clearDisplay(); display.setCursor(0,0); display.println("WEEK11 JIAN"); display.setCursor(0,15); display.print("BUTTON: "); display.println(RemoteXY.pushSwitch_01 ? "ON" : "OFF"); display.setCursor(0,30); display.print("RGB:"); display.print(colorIndex); display.println(""); display.setCursor(0,45); display.print("Hora: "); display.print(RemoteXY.editTime_01_hour); display.print(":"); display.println(RemoteXY.editTime_01_minute); display.display(); RemoteXY_delay(100); }