logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak obsłużyć dwa czujniki Sharp GP2D120 w BASCOM? Przerwania czy inna logika?

michal211 02 Wrz 2011 19:30 1227 7
  • #1 9889015
    michal211
    Poziom 10  
    Posty: 5
    Witam, dopiero zaczynam programować więc zwracam się o pomoc. Posiadam dwa czujniki sharpa gp2d120, które są zamontowane na robocie, gdy był tylko jeden program był prosty do napisania jednak gdy chciałem napisać program w bascomie dla dwóch czujników, nie mogę ich odpowiednio ustawić. Gdy jeden widzi przeszkodę a drugi nie to uc nie wie co zrobić. Czy powinienem zastosować przerwania ? Z góry dziękuje za pomoc.
    Kod: text
    Zaloguj się, aby zobaczyć kod
    [/code]
  • #2 9889684
    K219
    Poziom 15  
    Posty: 89
    Pomógł: 8
    Ocena: 6
    Witam.
    Tak na pierwszy rzut oka to masz błąd w programie bo w obu warunkach "case" sprawdzasz tę sama zmienną "W" a przed drugim case wpisujesz wartość z ADC do zmiennej "W1".
    michal211 napisał:

    W1 = Getadc(2)


    Wydaje mi się że zmiana nazwy zmiennej w drugim case na "W1" pomoże.
  • #3 9890509
    michal211
    Poziom 10  
    Posty: 5
    Dzięki za zauważenie błędu jednak to nic nie pomogło. Moim zdaniem problem polega na tym że gdy pierwszy czujnik widzi przeszkodę powinien skręcić w prawo ale wtedy drugi czujnik gdy nie widzi przeszkody powiadamia uc żeby jechać naprzód. Jedno drugiemu się zaprzecza. Nie wiem tylko jak napisać odpowiedni program.
  • #4 9890877
    lamik
    Poziom 11  
    Posty: 80
    Ocena: 67
    Moim zdaniem uC nie wie co robić, bo od jednego czujnika dostaje rozkaz jazdy prosto, a od drugiego rozkaz skrętu. W jednym momencie są dwa rozkazy do jazdy w różnych kierunkach. Spróbuj napisać program z jedną instrukcją Select Case. W zależności od odczytu z obu czujników na raz zamiast pojedynczo tak jak teraz, ustal kierunek jazdy.
  • #5 9891518
    michal211
    Poziom 10  
    Posty: 5
    Trochę pogrzebałem przy tym programie czy tak mogło by być ?

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #6 9893078
    lamik
    Poziom 11  
    Posty: 80
    Ocena: 67
    Chodziło mi bardziej o co innego. Coś jak podejmowanie decyzji(lewo, prawo, przód, tył) na podstawie danych zebranych z obu czujników. Z tego co widzę to teraz jeden czujnik odpowiada za kierunki a drugi tylko za ominięcie przeszkody w lewo. Spróbuj zrobić instrukcje warunkowe na wszystkich czujnikach na raz. Np Lewy i Prawy nie widzą nic, to jedzie prosto, a jak jeden nie widzi nic a drugi widzi to odpowiednio kierunek skrętu. Chyba dobrze przekazałem co myślę :)
  • #7 9893802
    michal211
    Poziom 10  
    Posty: 5
    Zmieniłem program i zrobiłem go na if-then czy tak mogło by być?
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #8 9911418
    michal211
    Poziom 10  
    Posty: 5
    Dziękuje wszystkim za pomoc rozwiązałem problem, zamykam temat

Podsumowanie tematu

✨ Użytkownik poszukuje pomocy w programowaniu dwóch czujników Sharp GP2D120 w języku BASCOM dla robota. Napotkał problem, gdyż czujniki wydają sprzeczne polecenia dotyczące kierunku jazdy robota. W odpowiedziach zasugerowano, aby zamiast dwóch oddzielnych instrukcji Select Case, zastosować jedną, która uwzględnia odczyty z obu czujników jednocześnie. Użytkownik przekształcił swój kod, używając instrukcji if-then, co pozwoliło na lepsze podejmowanie decyzji na podstawie danych z obu czujników. Ostatecznie problem został rozwiązany, a temat zamknięty.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA