Skocz do zawartości

Problem z if- ami w programie arduino


silver2001

Pomocna odpowiedź

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 ) ?

Link do komentarza
Share on other sites

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 🙂

Link do komentarza
Share on other sites

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ę?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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.

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.