robot modül 3 de engelden kaçan robot hazır kodunu denedim hiç olmadı. gemini ile 3 kez denedim anca oldu böyle ortaokul öğrencisi kod mu yazacak mblock kodları ile olsa tasarlardı. hani öğreten hoca vardır birşey demem ama birde mblock ile yapılabilir rahatlıkla niye kod yapmışlar. yarışmada böyle olacaksa bilemiyorum
int engelMesafe = 15; // Kareyi daha düzgün çizmesi için mesafeyi 15cm yapalım
int donusSure = 600; // 90 derece dönmesi için gereken süre (Bunu robotuna göre ayarla!)
int echoPin = 7;
int trigPin = 8;
long zaman;
long mesafe;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// MEBKIT PWM Frekans Ayarları
TCCR1B = TCCR1B & B11111000 | B00000010;
TCCR0B = TCCR0B & B11111000 | B00000010;
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
// İlk başta hatalı okuma yapmaması için kısa bir bekleme
delay(1000);
}
void loop() {
// Hassas Mesafe Ölçümü
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
zaman = pulseIn(echoPin, HIGH);
mesafe = (zaman / 29.1) / 2;
// Sensör hata yapıp 0 okursa bunu "engel yok" sayalım (veya mesafeyi uzak kabul edelim)
if (mesafe <= 0) mesafe = 100;
if (mesafe < engelMesafe) {
// --- ENGEL GÖRÜNCE 90 DERECE SOLA DÖN ---
// Sol tekerlek geri, Sağ tekerlek ileri (Olduğu yerde hızlı dönme)
analogWrite(5, 0);
analogWrite(6, 110);
analogWrite(9, 0);
analogWrite(10, 110);
delay(donusSure); // Bu süre sonunda robot 90 derece dönmüş olmalı
// Dönüş sonrası kısa bir an dur ki savrulmasın
analogWrite(6, 0);
analogWrite(10, 0);
delay(200);
}
else {
// --- ENGEL YOKSA DÜZ GİT ---
analogWrite(5, 150);
analogWrite(6, 0);
analogWrite(10, 150);
analogWrite(9, 0);
}
}