Skocz do zawartości

Problem z if- ami w programie arduino


Pomocna odpowiedź

Napisano

siema, pisze program do mojego robota który za pomocą 4 czujników ultradźwiękowych ( HC - SR04 ) steruje 2 silnikami. jednak troszkę się pogubiłem, mój problem dotyczy warunków w programie. jak napisać warunek który zostanie spełniony kiedy 2 / 3 czujniki ultradźwiękowe wykryją przeszkodę ( w moim przypadku uruchomią silniki przez sterownik ) ?

Hmm. Chyba sie nie zrozumieliśmy( albo ja ciebie ). Chce aby silnik zaczął działać po tym, jak czujniki wykryją przeszkodę. Nie mówie o zwiększaniu , tylko o stałej prędkość. Przykładowa część programu by dużo pomogła 🙂

Pytałeś jak wykryć sytuację w której co najmniej dwa czujniki (z kilku) widzą przeszkodę. Zakładając, że czujników jest 4:

uint8_t
   stan_czujnika[4],
   liczba_wykryc,
   n;

for (n=0; n<4; n++)
   stan_czujnika[n] = wykryj_przeszkode_na czujniku(n);

liczba_wykryc = 0;
for (n=0; n<4; n++)
   liczba_wykryc += stan_czujnika[n];

if (liczba_wykryc >= 2)
{
   // tu wpisujesz kod wykonywany gdy co najmniej 2 czujniki z 4 wykryły przeszkodę
}

Teraz wystarczy tylko napisać funkcję wykryj_przeszkode_na czujniku(n), która odda 0 lub 1 w zależności od odległości od przeszkody. Czy to wyjaśnia sprawę?

silver2001, tak w tym wypadku każde "n", to osobny czujnik, a właściwie informacja, czy wykrył przeszkodę, czy nie. Jeśli nie znasz tablic, to możesz też rozpisać to sobie ręcznie na kolejne czujniki.

Tak, n jest numerem czujnika. Jeśli chcesz zrobić analizę czujników ładnie w pętli, to potrzebujesz wspólnej funkcji która dostaje numer czujnika (n właśnie) i oddaje wynik pomiaru tego czujnika. Jeżeli masz z tym kłopoty, pokaz jak wyglądają Twoje funkcje pomiarowe. Jak mierzysz czujnik nr. 1 jak czujnik nr. 2 itd. aż do ostatniego.

Pętla for nie jest jedynym rozwiązaniem. Możesz to równie dobrze (choć kod wygląda moim zdaniem gorzej) zrobić po kolei. Wywoływać pomiar każdego czujnika jeden po drugim, sumować w jakiejś zmiennej liczbę wyników "dodatnich" (tj. odległości mniejszych niż jakiś próg) a potem sprawdzać jednym if-em ile czujników coś widzi.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...