Skocz do zawartości

[C] Pilot na podczerwień, przerwanie pętli


Pomocna odpowiedź

Pierwszy post, witam. 😉

Po wciśnięciu przycisku [POWER-ON] na pilocie IR włącza się tryb autonomiczny robota - jeździ i omija przeszkody. Przyciśnięcie [POWER-OFF] ma przerywać pętlę autonomiczną, jednak tak się nie dzieje. Kod pętli:

switch(pilot.value){
case 2200044030: // [POWER-ON]
 Automat=true;
 while(irrecv.decode(&pilot)||Automat)
   {
   irrecv.resume(); // odczytanie przycisku z pilota
   JazdaPrzod();
   if(pilot.value==2200045305){Automat=false; Zatrzymaj(); break;} // [POWER-OFF], ma przerwać pętlę while
   if(!digitalRead(czujnik_przeszkody)){                              //
     if(X){JazdaTyl(); delay(200); ObrotLewo(); delay(200); X=false;} // wykrycie przeszkody, zygzakowanie do tyłu
     else{JazdaTyl(); delay(200); ObrotPrawo(); delay(200); X=true;}} //
   }
 break; // gdy pętla while zostaje przerwana, ten break przerywa switch-case

Co najdziwniejsze, [POWER-OFF] działa ładnie pięknie w sytuacji gdy czujnik wykrywa przeszkodę (i robot się cofa), a gdy jedzie do przodu - nie. Czy wpływają na to delaye? Może tylko w okresie trwania delaya da się odczytać przycisk pilota (irrecv.resume)?

Spróbowałem już chyba wszystkich możliwych kolejności linijek po sobie - ale cały czas działa tylko w przypadku wykrycia przeszkody (i cofania). Dlatego zwracam się do szanownych tutejszych.

A może cała pętla jest źle obmyślana, hym?

Link to post
Share on other sites

Milion prób dało mi połowiczne rozwiązanie sprawy, a mianowicie dodanie delaya (co najmniej) 200 po odczycie pilota.

irrecv.resume(); delay(200);

Cały czas się zastanawiam, jaki związek ma delay. Czy pilot wysyła sygnał ciągle, pulsacyjnie, czy jakoś jeszcze inaczej?

( konkretnie: pilot od głośników Creative )

Link to post
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.