#include<probot.h>// Robot başlatma - bir kez çalışırvoidrobotInit(){Serial.begin(115200);Serial.println("🚀 Robot başlatıldı!");// LED pinini çıkış olarak ayarlapinMode(LED_BUILTIN,OUTPUT);Serial.println("📡 WiFi bağlantısı kuruluyor...");Serial.println("🎮 Driver Station hazır!");}// Her döngüde çalışır (tüm modlarda)voidrobotPeriodic(){// Robot durumu izlemestaticunsignedlonglastPrint=0;if(millis()-lastPrint>5000){// 5 saniyede birSerial.printf("📊 Durum: %s | RAM: %d bytes | Uptime: %lu ms\n",robot.getMode()==RobotMode::AUTONOMOUS?"AUTO":robot.getMode()==RobotMode::TELEOP?"TELEOP":"DISABLED",ESP.getFreeHeap(),millis());lastPrint=millis();}}
// Autonomous mod başlangıcı - mod değiştiğinde bir kez çalışırvoidautoInit(){Serial.println("🤖 Autonomous mod başladı!");Serial.println("⏱️ 30 saniye otonom hareket...");}// Autonomous döngüsü - sürekli çalışırvoidautoLoop(){// Basit blink pattern - 500ms aralıklarlastaticunsignedlonglastBlink=0;staticboolledState=false;if(millis()-lastBlink>500){ledState=!ledState;digitalWrite(LED_BUILTIN,ledState?LOW:HIGH);// ESP32'de LOW = ONlastBlink=millis();Serial.printf("🔄 Auto Blink: %s\n",ledState?"ON":"OFF");}// Autonomous süre kontrolü (MEB yarışması: 30 saniye)staticunsignedlongautoStartTime=0;if(autoStartTime==0){autoStartTime=millis();}if(millis()-autoStartTime>30000){// 30 saniyeSerial.println("⏰ Autonomous süresi doldu!");// Gerçek yarışmada otomatik teleop'a geçiş yapılır}}
// Teleop mod başlangıcıvoidteleopInit(){Serial.println("🎮 Teleop mod başladı!");Serial.println("🕹️ Joystick kontrolü aktif...");digitalWrite(LED_BUILTIN,HIGH);// LED'i kapat}// Teleop döngüsü - joystick kontrolüvoidteleopLoop(){// Gamepad bağlantısını kontrol etif(!gamepad.isConnected()){// Bağlantı yoksa yavaş blinkstaticunsignedlonglastBlink=0;staticboolledState=false;if(millis()-lastBlink>1000){// 1 saniyeledState=!ledState;digitalWrite(LED_BUILTIN,ledState?LOW:HIGH);lastBlink=millis();}return;}// Joystick kontrolü ile LEDif(gamepad.getButton(Button::A)){digitalWrite(LED_BUILTIN,LOW);// A tuşu = LED ONSerial.println("🔴 A tuşu basıldı - LED ON");}elseif(gamepad.getButton(Button::B)){digitalWrite(LED_BUILTIN,HIGH);// B tuşu = LED OFFSerial.println("⚫ B tuşu basıldı - LED OFF");}// X tuşu ile hızlı blinkif(gamepad.getButton(Button::X)){staticunsignedlonglastFastBlink=0;staticboolfastLedState=false;if(millis()-lastFastBlink>100){// 100msfastLedState=!fastLedState;digitalWrite(LED_BUILTIN,fastLedState?LOW:HIGH);lastFastBlink=millis();}}// Y tuşu ile çok hızlı blinkif(gamepad.getButton(Button::Y)){staticunsignedlonglastVeryFastBlink=0;staticboolveryFastLedState=false;if(millis()-lastVeryFastBlink>50){// 50msveryFastLedState=!veryFastLedState;digitalWrite(LED_BUILTIN,veryFastLedState?LOW:HIGH);lastVeryFastBlink=millis();}}// Analog stick ile LED parlaklığı (PWM)floatleftY=gamepad.getLeftY();if(abs(leftY)>0.1){// Dead zoneintbrightness=map(abs(leftY*255),0,255,0,255);analogWrite(LED_BUILTIN,255-brightness);// ESP32'de ters mantıkSerial.printf("💡 LED Parlaklığı: %d/255\n",brightness);}}
🚀 Robot başlatıldı!
📡 WiFi bağlantısı kuruluyor...
WiFi AP başlatıldı: probot_A1B2C3
IP Adresi: 192.168.4.1
🎮 Driver Station hazır!
📊 Durum: DISABLED | RAM: 234567 bytes | Uptime: 5000 ms
⏸️ Robot devre dışı!
🤖 Autonomous mod başladı!
⏱️ 30 saniye otonom hareket...
🔄 Auto Blink: ON
🔄 Auto Blink: OFF
⏰ Autonomous süresi doldu!
🎮 Teleop mod başladı!
🕹️ Joystick kontrolü aktif...
🔴 A tuşu basıldı - LED ON
⚫ B tuşu basıldı - LED OFF
💡 LED Parlaklığı: 128/255