Skocz do zawartości

Kurs Arduino - #5 - PWM, serwomechanizmy, biblioteki


Pomocna odpowiedź

#define dioda 10  
#define pot A5
int poziom = 0;
void setup() {
 pinMode(dioda, OUTPUT);
 Serial.begin(9600);


}

void loop() {
 poziom = (analogRead (A5));
 poziom = map(poziom, 0, 1023, 1, 255);
 if(poziom<255){
   analogWrite(dioda, poziom);
   Serial.println(pot);
 }

}

Prosty programik, dlaczego nie działa mi zdefiniowanie pot? Ciągle wyświetla w konsoli 19...

Witam, Bez przypadek chyba spaliłem serwo. Bo podłączyłem je bez stabilizatora napięcia. Bo ogólnie nie udało się wykonać nim żadnego ruchu a podłączony jest jak na schemacie w kursie.

zioloiso, jeśli podłączyłeś serwo bezpośrednio do 9V i teraz nie działa, to faktycznie zapewne zostało spalone.

SOYER, a co dokładnie chciałbyś wyświetlacz w tym terminalu? Nie chodziło przypadkiem o zmienną "poziom"? W tej chwili program działa poprawnie. Zdefiniowałeś wyświetlanie "pot", które na początku programu określasz jako "A5" (bo tak numeruje się porty analogowe). Tak naprawdę A5, to też jest tylko skrót, który w bibliotekach Arduino jest zapisany jako "#define A5 19", stąd w terminalu pojawia się ta 19.

TREKER, więc dlaczego kiedy wpiszę Serial.println(poziom); to wyświetla mi wartość z A5, a jak wpiszę Serial.println(pot); to nie wyświetla wartości A5?

SOYER, bo poziom, to zmienna, do której zapisujesz wartość odczytaną z A5: poziom = (analogRead (A5))

Natomiast pot to stała definiująca pin, z którego chcesz odczytać wartość - to tylko numer wyprowadzenia, a nie wartość odczytywana z tego wyprowadzenia. Poprawne wykorzystanie pot będzie wyglądało np. tak: poziom = (analogRead (pot));

lordolo, witam na forum 🙂 Czy możesz zmierzyć napięcie na baterii? Spróbuj też delikatnie ręcznie przekręcić końcówkę serwa (gdy będzie odłączone od układu) - chodzi płynnie/rusza się? Jeśli bateria jest dobra, a serwo się nie rusza, to pozostaje reklamacja serwa u sprzedawcy. Czasami zdarzają się uszkodzone fabrycznie egzemplarze (rzadko, ale jest to możliwe).

zioloiso, jeśli było spalone, to już całkiem trafiłeś na pechowy model 😉 Najczęściej uszkodzenia są mechaniczne (np. blokada przykładni). W każdym razie super, że teraz wszystko śmiga już poprawnie - powodzenia w dalszej nauce!

  • 1 miesiąc później...

Witam mam nastepujacy problem. Wczoraj przyszedl mój serwo z botlandu dokladnie ten co wymaga kurs i kiedy próbuje go podłączyć zgodnie ze schematem i podanym programem ani drgnie. Wyjscia od niego sa zenskie wiec dodatkowo dodaje przewody mesko meskie by podlaczyc do plytki. Moglby mi ktos prosze pomoc zanim bd szukal nowego serwo? Pewnie robie jakis glupi blad ale przez brak doswiadczenia go nie widze...

[ Dodano: 07-01-2018, 20:34 ]

Ok juz dziala. Ale drugie pytanie czy serwo powinno chodzic idealnie plynnie czy troszke tyrkotać?

piterx, witam na forum 🙂 Przekładnia, która jest w serwach sprawia, że wydają charakterystyczny dźwięk i mogą "troszkę tyrkotać". Takie małe i tanie modele serw nie chodzą perfekcyjnie płynnie (jak zwykłe silniki), jednak ruch nie powinien być mocno zaburzony.

Dotarłem do 5 części kursu, robiąc ćwiczenia z serwem zauważyłem że coś z jego ruchami nie jest tak jak powinno być.

Sprawdziłem to pisząc prosty kod który ustawia je w jednej określonej pozycji.

Z testu wynika że nie mogę go ustawić w pozycjach poniżej 20. Przy 19 i 18 drży ale stoi, a poniżej 17 kręci się dookoła zwalniając w tym niskim zakresie.

Gdzie może leżeć problem? Czy powinienem kupić inne serwo?

Serwo, stabilizator mam z zestawu, kondensatory zainstalowane przy stabilizatorze, bateria podłączona

/KK

krzyska, jeśli przy podaniu sygnału Jednak pamiętaj, że egzemplarz, który masz nie jest uszkodzony - to "nowsza" wersja, która reaguje na sygnały w minimalnie innym zakresie i nie ma blokady mechanicznej. W teorii dzięki temu trudniej je uszkodzić 😉

krzyska, dziękuję za wyjaśnienia. W takim razie masz teraz dwie możliwości: albo zostań przy tym serwie, albo skontaktuj się z Botlandem znają temat i wymienią serwo na egzemplarz z blokadą 🙂

Decyzja należy do Ciebie, tak jak wspomniałem: serwo, które masz nie jest uszkodzone, to nowsza wersja tego, które jest opisane w kursie. Jedyna różnica jest taka, że nie ma tam blokady mechanicznej, więc przy podaniu małej wartości (

zadanie 5.1

#define czerwona 3
int wypelnienie = 0;
int zmiana = 3;
void setup() {
 pinMode(czerwona, OUTPUT);
}

void loop() {
 analogWrite(czerwona, wypelnienie);
 wypelnienie = wypelnienie + zmiana;//dodaje wypełnienie
 wypelnienie < 255;//sprawdza czy osiągnięto 255 


 delay(50);
}

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