Engelden kaçan robotum doğru çalışmıyor. Ultrasonik sensör ile mesafe ölçümünde sorun yaşıyor gibi görünüyor çünkü robot bazen engelleri algılamıyor ya da yanlış tarafa dönüyor. Kodumda ya da bağlantılarımda bir sorun olabilir mi? Bu tür sorunları çözmek için hangi adımları izlemeliyim? Örnek bir kod ya da devre şeması varsa paylaşabilir misiniz?
Bu tür sorunlar genelde sensör hizası veya motor kontrol algoritmasından kaynaklanır. Ultrasonik sensörün doğru bir şekilde hizalandığından emin olun ve aşağıdaki kodu deneyin:
C++:
int trigPin = 9;
int echoPin = 10;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
int distance = duration * 0.034 / 2;
Serial.println(distance);
if (distance < 15) {
// Motorları durdur veya yön değiştir
}
delay(100);
}
Ultrasonik sensörün bağlantılarını kontrol edin ve sensörün düzgün bir şekilde çalıştığından emin olun. Ayrıca sensörün okuma hızını artırmayı deneyin.
Bu tür sorunlar genelde sensör hizası veya motor kontrol algoritmasından kaynaklanır. Ultrasonik sensörün doğru bir şekilde hizalandığından emin olun ve aşağıdaki kodu deneyin:
C++:
int trigPin = 9;
int echoPin = 10;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
int distance = duration * 0.034 / 2;
Serial.println(distance);
if (distance < 15) {
// Motorları durdur veya yön değiştir
}
delay(100);
}