Witam, mam następujący problem napisałem kod na arduino uno r3 sterujący robotem omijającym przeszkod. Wszystko fajnie działa, oprócz funkcji if. Program pobiera dane z czujnika odległości ultradźwiękowego i zapisuje je w zmiennej( odczyt jest prawidłowy sprawdziłem) funkcja if ma za zadanie porównać wartość tej zmiennej z 20 i jeśli jest mniejsza wyłączyć prawy silnik i tego mim tego, że odczyt jest mniejszy nadal kręcą się dwa silniki. W czym problem jakiś mój głupi błąd w programie czy coś innego.
#define trig 8
#define echo 9
int lp=2;
int lt=3;
int pp=4;
int pt=5;
int dist;
void setup() {
pinMode(lp, OUTPUT);
pinMode(lt, OUTPUT);
pinMode(pp, OUTPUT);
pinMode(pt, OUTPUT);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
Serial.begin(9600);
}
void przod() {
digitalWrite(lp, HIGH);
digitalWrite(lt, LOW);
digitalWrite(pp, HIGH);
digitalWrite(pt, LOW);
}
void tyl() {
digitalWrite(lp, LOW);
digitalWrite(lt, HIGH);
digitalWrite(pp, LOW);
digitalWrite(pt, HIGH);
}
void hamulec() {
digitalWrite(lp, LOW);
digitalWrite(lt, LOW);
digitalWrite(pp, LOW);
digitalWrite(pt, LOW);
}
void prawo() {
digitalWrite(lp, HIGH);
digitalWrite(lt, LOW);
digitalWrite(pp, LOW);
digitalWrite(pt, LOW);
}
void lewo() {
digitalWrite(lp, LOW);
digitalWrite(lt, LOW);
digitalWrite(pp, HIGH);
digitalWrite(pt, LOW);
}
void loop() {
przod();
int czas;
digitalWrite(8, HIGH);
delayMicroseconds(1000);
digitalWrite(8, LOW);
czas = pulseIn(9, HIGH);
dist = (czas/2) / 29.1;
Serial.println(dist);
if(dist<20) {
lewo();
}
}
__________
Komentarz dodany przez: Treker
Kod programu, dla lepszej czytelności, należy umieszczać w tagach .
Proszę to poprawić.