Witam mam pewien problem dotyczący ifa w ifie.
Otóż robiłem robocika (arduino) na ultradźwiękowym czujniku odległości (przyjmujemy, że drogi które może obrać są 3 prawo lewo i przód) który miał działać tak, że gdy nie ma przeszkody jedzie do przodu (włącza styczniki których pinami wyjściowymi są 8 i 7, gdy jest przeszkoda skręca w prawo (włącza stycznik którego pinem wyjściowym jest 8 na 2 sekundy) lecz gdy skręcił w prawo i nadal wykrywa przeszkodę skręca dwukrotnie w lewo (włącza stycznik 7 na 4 sekundy), a program wygląda następująco
#define trigPin 12
#define echoPin 11
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT); //Pin, do którego podłączymy trig jako wyjście
pinMode(echoPin, INPUT); //a echo, jako wejście
pinMode(8, OUTPUT); //Wyjście dla buzzera
pinMode(7, OUTPUT);
}
void loop() {
zakres(0, 3);
delay(100);
}
int zmierzOdleglosc() {
long czas, dystans;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
czas = pulseIn(echoPin, HIGH);
dystans = czas / 58;
return dystans;
}
void zakres(int a, int b) {
int jakDaleko = zmierzOdleglosc();
if ((jakDaleko > a) && (jakDaleko < b)) {
digitalWrite(8, HIGH);
delay(2000);
digitalWrite(8, LOW);
if ((jakDaleko > a) && (jakDaleko < b)) {
digitalWrite(7, HIGH);
delay(4000);
digitalWrite(7, LOW);
}
else {
digitalWrite(8, HIGH);
digitalWrite(7, HIGH);
}}
else {
digitalWrite(8, HIGH);
digitalWrite(7, HIGH);
}
}
Problem z tego co mi się wydaje znajduje się tu gdzie jest if w ifie
void zakres(int a, int b) {
int jakDaleko = zmierzOdleglosc();
if ((jakDaleko > a) && (jakDaleko < b)) {
digitalWrite(8, HIGH);
delay(2000);
digitalWrite(8, LOW);
if ((jakDaleko > a) && (jakDaleko < b)) {
digitalWrite(7, HIGH);
delay(4000);
digitalWrite(7, LOW);
}
else {
digitalWrite(8, HIGH);
digitalWrite(7, HIGH);
}
Proszę o pomoc.