Skocz do zawartości

Kurs Arduino - #5 - PWM, serwomechanizmy, biblioteki


Komentator

Pomocna odpowiedź

Cześć wszystkim,
mam mały problem ze swoim serwomechanizmem. Wszystko podłączone jak na schemacie, program w desperacji, skopiowałem ze strony, a serwo działa "zacinająco", tzn. rusza na chwilę, potem zwalnia i się zatrzymuje i stoi przez kilka sekund, potem znowu rusz i znowu staje. Jakieś porady i pomysły o co może chodzić? 🙁

Link do komentarza
Share on other sites

komorov, czy podłączyłeś kondensatory przy stabilizatorze? Zerknij jeszcze na schematy z kolejnej części kursu. Jak masz pod ręką, to możesz też sprawdzić jak zachowuje się układ na innej baterii. Jak sposoby nie pomogą, to będziemy dalej radzić 😉

Link do komentarza
Share on other sites

Jeżeli poprawnie zrozumiałem polecenia, programy powinny być OK. Co do zadania 5.2 powiem szczerze, że przerobiłem tylko trochę przykładowy kod znajdujący się na stronie, więc zadanie było rozwiązane dla konkretnego przypadku. Zaznaczam, że nie jestem mistrzem programowania, ale wydaje mi się, że tak jest dobrze :

#define LED 9 

int wypelnienie = 0; 
int zmiana = 4; 

void setup() 
{ 
pinMode(LED,OUTPUT); 
} 

void loop() 
{ 
analogWrite(LED,wypelnienie); 
 if(wypelnienie<255) 
 { 
   wypelnienie+= zmiana; 
 } 
 if( wypelnienie>=255) 
   { 
     while(wypelnienie!=0 && wypelnienie>0) 
         { 
         wypelnienie-=zmiana; 
         analogWrite(LED,wypelnienie); 
         delay(50); 
         } 
   } 
delay(50); 

} 

A i dzięki Treker za uwagę co do tagów 😋

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

komorov, czy podłączyłeś kondensatory przy stabilizatorze? Zerknij jeszcze na schematy z kolejnej części kursu. Jak masz pod ręką, to możesz też sprawdzić jak zachowuje się układ na innej baterii. Jak sposoby nie pomogą, to będziemy dalej radzić 😉

a o jakiej pojemności te kondensatory?

Link do komentarza
Share on other sites

Zadanie 5.4

Zastanawiam się tylko, czy można w jakiś lepszy łatwiejszy sposób spowodować, aby na początku komunikat z prośbą o podanie kąta pojawił się tylko raz, srednio podoba mi się korzystanie z false i true, a informatykiem nie jestem, raczej mechanikiem 😃

#include <Servo.h> //Biblioteka serwa 

Servo serwomechanizm;  //Obiekt odwołania do serwa 
int pozycja1 = 0; //pozycja wstępna 
String odebraneDane=""; //dane wprowadzone przez UART
int odebraneDane_int;
boolean pauza=false;

void setup() 
{ 
 serwomechanizm.attach(9);  //Serwomechanizm podłączony do pinu 9 
 Serial.begin(9600);
 serwomechanizm.write(pozycja1);
} 

void loop() 
{  
 if (pauza==false){
   Serial.println("Podaj kat od 0-180");
   pauza=true;
 }

 if(Serial.available() > 0) { 
   odebraneDane = Serial.readStringUntil('\n');
   odebraneDane_int=odebraneDane.toInt();
   if (odebraneDane_int<=180 && odebraneDane_int>=0){
     Serial.println("Podano kat:" + odebraneDane);
     delay(1000);
     serwomechanizm.write(odebraneDane_int);
     Serial.println("Obecny kat to:");
     Serial.println(odebraneDane_int);
     delay(100);
   } else {
     Serial.println("Podano zla wartosc. Podaj kat 0-180");
     delay(100);
   }
 }
}  

ZADANIE 5.5

Tutaj wyszło mi to jakoś bardzo prosto mam nadzieje, że wszystko poprawnie, martwi mnie tylko, że przy kręceniu potencjometrem, w jednym skrajnym położeniu, zanim silnik zacznie reagować, muszę najpierw obrócić pokrętłem potencjometru o jakieś 100-120 stopni, natomiast w 2 skrajnym położeniu reaguje on natychmiastowo... :/

#include <Servo.h> //Biblioteka serwa 

Servo serwomechanizm;  //Obiekt odwołania do serwa 
int pozycja1 = 0; //pozycja wstępna 
float odebraneDane=0; //wartosc ustawiona na potencjometrze


void setup() 
{ 
 serwomechanizm.attach(9);  //Serwomechanizm podłączony do pinu 9 
 serwomechanizm.write(pozycja1);
} 

void loop() 
{  
 odebraneDane=analogRead(A5); //odczytanie wartosci z A5 potencjometru
 odebraneDane=map(odebraneDane, 0, 1024, 0, 180);//Przeskalowanie wartości

   serwomechanizm.write(odebraneDane);
   delay(5);
}
Link do komentarza
Share on other sites

damian11,

Nie rozumiem niestety co oznaczają Twoje elementu kodu:

a) wypelnienie+= zmiana;

b) while(wypelnienie!=0 && wypelnienie>0)

c) wypelnienie-=zmiana;

Wiem, że zapis coś++ jest to inkrementacja, wiem, że wykrzyknij przed zmienną zmienia jej wartość na przeciwną, ale nie mam pojęcia ( nie było chyba tego w kursie ) co oznacza wykrzyknik po zmiennej oraz te zapisy z punktu a) i c)

Bardzo proszę o pomoc / wskazówki

Pozdrawiam MrShadow:)

Link do komentarza
Share on other sites

MrShadow, racja informacji tych nie było w kursie, bo na początek nie są konieczne. Wytłumaczę Ci jednak zapisy, zanim zrobi to autor kodu 😉

wypelnienie+= zmiana;

To jest zapis skrócony od:

wypelnienie = wypelnienie + zmiana;

while(wypelnienie!=0 && wypelnienie>0)

To nie jest wykrzyknik po zmiennej, tylko operator !=, czyli "różne". Warunek ten sprawdza więc, czy wypełnienie jest różne od 0 i jednocześnie większe od zera. Ogólnie można było zapis ograniczyć tylko do drugiego warunku. Jeśli coś jest większe od zera, to na pewno nie jest mu równe.

wypelnienie-=zmiana;

analogicznie, jest to:

wypelnienie = wypelnienie - zmiana;

Link do komentarza
Share on other sites

Marnyx, niestety nie możemy wpływać na prędkość serwomechanizmu. Należałoby zrobić to ręcznie, czyli dzielić zadany obrót na mniejsze i wprowadzać pomiędzy każdy etap opóźnienia. Uzyskanie płynności będzie jednak bardzo trudne.

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.