Skocz do zawartości

Problem z zaprogramowaniem głowy robota - czujnik obrotowy na podczerwień


matrix760

Pomocna odpowiedź

Witam,

Jak można rozwiązać następujący problem???

 if(!(PINB & (1<<PB0)))    //warunek_1 

              goto miejsce_2;

                  if(PINB & (1<<PB0))

                    { PORTB |= (1<<PB2);
                       OCR1A = 700; 
                       z=0;
                     }
                       else     // ten sam warunek co warunek_1, a program nie wykona 
                    {            //instrukcji poniżej tylko przeskoczy w "miejsce_2"

                       z=z+1;
                       _delay_ms(50);

                      if(z<25)

                        { 
                            OCR1A = 1250;
                        }
                          else 
                        { 
                           OCR1A = 300;
                    z=25;

                         }}

Albo inaczej jak można rozdzielić zadania do wykonania dla pojawienia się takiego samego sygnału z czujnika w dwóch różnych miejscach?? Może ktoś pomoże??🙂:)

__________

Komentarz dodany przez: Treker

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

innymi słowy mam ten sam sygnał z czujnika w 2 instrukcjach warunkowych if i jak teraz zrobić żeby np instrukcje z drugiego if wykonały się a nie te pierwsze instrukcje z ifa pierwszego , bo tak się wykonuje. Jak odróżnić dwa te same sygnały.

W praktyce wygląda to tak,że robię głowę dla robota i potrzebuje sprawdzać w trzech położeniach serwa czy jest przeszkoda czy nie jest i dlatego będzie ten sam sygnał z czujnika zero logiczne. I nie mam pojęcia jak problem rozwiązać.

Link do komentarza
Share on other sites

Może zrób tak:

1. Obróć serwo o jakiś kąt (głowa w lewo)

2. Sprawdź czy czujnik coś wykrywa - jeśli tak to zapisz do jakieś zmiennej że na lewo jest przeszkoda (np. lewo = 1)

3. Jeśli nie to ustaw głowę na środek i sprawdź i identycznie jak wyżej.

4. I prawa strona

Wtedy wiesz gdzie jest przeszkoda.

Sprawdzaj to po prostu po kolei.

Link do komentarza
Share on other sites

Odpytujesz za każdym razem czujnik, tylko najpierw przesuwasz głowę robota, żebyś wiedział po której stronie jest przeszkoda i wtedy zapisujesz do zmiennej czy jest (np. lewo = 1), lub nie ma (np. lewo = 0) przeszkody.

Czyli jeszcze raz:

przesuwasz głowę

odpytujesz czujnik i zapisujesz do zmiennej czy jest przeszkoda

od początku (lub robisz co innego np. idziesz tam gdzie nie ma przeszkody)

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.