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

I wtedy ma być skok do innych funkcii?

Czyli, np.

gdy zmienna = 1 i czujnik wyśle 0 to skocz do etykieta1;

gdy zmienna = 2 i czujnik wyśle 0 to skocz do etykieta2;

o to chodzi, bo trochę nie rozumiem :-> ?

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

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...

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.