Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino, servo i czujnik QRE1113 - servo nie chce ruszyć

krzys59 31 Sty 2017 16:54 531 17
  • #1 31 Sty 2017 16:54
    krzys59
    Poziom 11  

    Witam
    Przypuszczam, żę gdzieś robię trywialny błąd, ale cholery już dostaję i znaleźć nie mogę.
    Mam arduino, servo i czujnik QRE1113 analogowy. Czujnik podpięty pod pinA0, przykład wzięty z internetu, czujnik działa bez problemów, zaświeca i gasi diodę.
    Serwo podpięte jak w przykładzie Arduino sweep, działa, wszystko jest ok.
    Chcę żeby mi się serwo obracało zależnie od stanu czujnika QRE, czyli jak coś jest blisko to w jedną stronę a jak daleko to w drugą. Prymitywne, wiem.
    Mam taki kod:

    Kod: java
    Zaloguj się, aby zobaczyć kod


    I nie działa. To znaczy serial monitor pokazuje mi wartość pos a serwo ani drgnie. Wiem, że gdzieś mam durny błąd, ale wiem gdzie. Pomóżcie dobrzy ludzie :please:

  • #2 31 Sty 2017 17:20
    EuroGenio
    Poziom 16  

    Pin od czujnika nie powinien być przypadkiem zadeklarowany jako A0 a nie 0 ?

  • #3 31 Sty 2017 17:39
    Wojciech.
    Poziom 28  

    @EuroGenio Bo tak ma być zdeklarowany :D

  • #4 31 Sty 2017 17:46
    krzys59
    Poziom 11  

    Bez znaczenia, czy dam A0 czy 0, wynik jest taki sam. Poza tym AnalogRead czyta z pinów analogowych, i nie ma znaczenia czy podamy to jako A0 czy 0 i tak nie spróbuje czytać z pinów cyfrowych

  • #5 31 Sty 2017 17:56
    Wojciech.
    Poziom 28  

    Wrzuć sobie na serial stan czujnika.

  • #6 31 Sty 2017 18:01
    krzys59
    Poziom 11  

    Czyta prawidłowo
    Zabawne jest to, że to są połączone ze sobą dwa kody, każdy osobno działa, a spięte razem nie. Gdzieś jest haczyk, ale nie potrafię znaleźć gdzie. Na oko powinno działać, a nie działa

  • #7 31 Sty 2017 19:15
    Erbit
    Poziom 22  

    krzys59 napisał:
    ... gdzieś mam durny błąd, ale wiem gdzie. ...


    Skoro wiesz to po co pytasz ? ;)

    Jak rozumiem wrzucałeś "pos" na serial monitor tuż przed zapisem do serva?

  • #8 31 Sty 2017 20:06
    krzys59
    Poziom 11  

    Tak, ale co to ma do rzeczy?
    Odpowiadając ściśle na pytanie, wartość pos na SerialMonitor trafia tuż po wpisaniu do serwa.
    Wartość pos na początku pierwszej pętli wynosi 0, przy kolejnych pętlach zmienia się na pos1 albo pos2, zależnie od odczytu AnalogRead, i zmienia się na 0 lub 180, czy ja najpierw odczytam AnalogRead czy wyświetlę pos z poprzedniego przebiegu moim zdaniem nie ma znaczenia dla działania tego kodu. To że stan serwa się zmieni 500 ms wcześniej czy później nie jest tu problemem. Podpięta dioda na Pin13 zaświeca się lub gaśnie zgodnie z zamierzeniem. Wartość pos zmienia się zgodnie z założeniem, a serwo ani drgnie. Sprawdziłem po raz kolejny prawidłowość podłączenia, czy piny, kabelki itd. Wszystko jest ok.

  • #9 31 Sty 2017 20:10
    Erbit
    Poziom 22  

    krzys59 napisał:
    Tak, ale co to ma do rzeczy? ...

    Nie zwróciłem uwagi na pos na początku pętli - stąd pytanie.

    Reszta Twojej wypowiedzi rozwiewa wszelkie wątpliwości. Chyba zepnę na szybko podobny układ i wgram Twój skrypt - ale na pewno nie dziś.

    [edyta]
    Sprawdź jeszcze tak:
    Kod: javascript
    Zaloguj się, aby zobaczyć kod


    Tak wiem, że wszędzie deklarujesz INT ale szukam przyczyny.

  • #10 31 Sty 2017 20:33
    krzys59
    Poziom 11  

    pos+0 nie działa
    Co jest najlepsze, to biorę gotowy kod z przykładów, Knob, czyli sterowanie serwem za pomocą potencjometru, tak jak leci, jedynie zamiast potencjometru jest ten czujnik, i jak zbliżam palec do czujnika to serwo się pięknie kręci, zgodnie z założeniem. Wyeliminowałem już wszystkie możliwe problemy sprzętowe, Wszystko jest sprawne. Cuda jakieś czy co?

  • #11 31 Sty 2017 20:48
    Wojciech.
    Poziom 28  

    @krzys59 Właśnie testowałem kod i działa bez problemu :)

  • #12 31 Sty 2017 21:13
    krzys59
    Poziom 11  

    No to ja nie wiem o co u mnie chodzi, wgram go jeszcze i jeszcze raz.
    I dalej nie działa. Zastanawiam się czy to może nie jest kwestia sprzętowa. Zasilam wszystko z usb, włącznie z serwem. Ale przecież bez obciążenia serwa to nie powinno mieć najmniejszego znaczenia.. Całkiem już głupi jestem

  • #13 31 Sty 2017 21:20
    Wojciech.
    Poziom 28  

    @krzys59 Zamiast czujnika analogowego pod wejście A0 daj sygnał wysoki 5V i potem GND. Jeśli servo reaguje to program działa.

  • #14 31 Sty 2017 21:42
    krzys59
    Poziom 11  

    D.... też nie działa, zmieniłem arduino, nic. ZMieniłem port usb, nic, wgrałem "knob" działa bez problemów, a to praktycznie to samo tylko pętli if nie ma. Pętla jest ok, bo odczyt na serialu jest prawidłowy, dioda włącza się tak jak powinna, a serwo stoi jak zaklęte.
    Wrzuć pełny kod w odpowiedzi

  • #15 31 Sty 2017 21:51
    Wojciech.
    Poziom 28  

    @krzys59 Kod jest identyczny taki jak wrzuciłeś na samym początku. Z jakiego arduino korzystasz?

  • #16 31 Sty 2017 22:13
    krzys59
    Poziom 11  

    UNO, klon wprawdzie, ale to nie powinno nic zmieniać
    Strasznie to dziwne jest

    Dodano po 16 [minuty]:

    Znalazłem przyczynę, to nie kod, to serwo. Jak zmieniłem mu zakres ruchu od 20 do 160 to działa prawidłowo, jak dam poniżej 20 lub powyżej 160 to serwo się wiesza i mam wrażenie, że zaczyna się grzać, ale to tylko wrażenie. Nie wiem dlaczego przy kodach przykładowych działało, i chyba nie wymyślę tego.
    Serwo to Towerpro MG92B
    Macie jakąś odpowiedź dlaczego tak jest? Poradzę sobie już z tym wiedząc że tak jest, ale pozostaje zagadka dlaczego.

  • #17 31 Sty 2017 22:45
    krzysiek_krm
    Poziom 25  

    Witam,

    krzys59 napisał:
    Serwo to Towerpro MG92B
    Macie jakąś odpowiedź dlaczego tak jest? Poradzę sobie już z tym wiedząc że tak jest, ale pozostaje zagadka dlaczego.

    może po prostu wymaga innego skalowania czasów trwania impulsu w metodzie attach.

    Pozdrawiam

  • #18 15 Lut 2017 22:03
    krzys59
    Poziom 11  

    Zamykam temat, trzeba zmienić skalowanie w attach, tylko do końca jeszcze nie rozgryzłem jak :-)

Szybka odpowiedź lub zadaj pytanie
Dziękuję Ci. Ta wiadomość oczekuje na moderatora.
 Szukaj w ofercie
Wyszukaj w ofercie 200 tys. produktów TME