Skocz do zawartości

Kurs Arduino - #5 - PWM, serwomechanizmy, biblioteki


Komentator

Pomocna odpowiedź

MateuszW, zgadza się, brak, ale z premedytacją. Po ostatniej części kursu Arduino dotyczącej praktycznego wykorzystania serwomechanizmów oraz dodatkowych informacji o UART nie pojawiły się jeszcze żadne rozwiązania zadań domowych. Daje wszystkim czas na nadrobienie lekcji, widocznie niektórych dopadło wakacyjne lenistwo 🙂 W międzyczasie polecam najnowszą, ostatni a już część kursu podstaw elektroniki - omawiającą przekaźniki oraz inne elementy stykowe.

Link do komentarza
Share on other sites

Ja obecnie staram się "wrzucić" mojego omijacza przeszkód z arduino na płytkę uniwersalną (ATmega8A 16Mhz + L293DNE), ale ponieważ elektronika u mnie na dość średnim poziomie to i średnio mi idzie 😃 Dlatego też nie zajmowałem się zadaniami domowymi jeszcze.

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

Treker,

w tej chwili zdaje się że z zakłóceniami w układzie z L293D. A raczej napewno bo uC "dziwnie" się zachowuje, jak serwa zaczynają działać i dość spore spadki napięcia zaobserwowałem. Chyba za prosty układ zrobiłem 🙂

Link do komentarza
Share on other sites

Treker, właśnie nie chcę dwóch źródeł ciągnąć 🙂 ale pogrzebałem trochę na forum, znalazłem kompendium mostków H, sekcja o zakłóceniach pomogła, użyłem diody, dodałem kondensator i dzielnik napięcia, wpiąłem się przed stabilizator i podłączyłem do VCC silników w L293D i już widać poprawę. Trzeba przyznać, że znajduję tu bardzo dużo przydatnych informacji 🙂

Pozdrawiam.

Link do komentarza
Share on other sites

MateuszW, dzielnik napięcia? To raczej nie brzmi dobrze... Opisz dokładnie, co teraz z robiłeś. Zamiast dwóch źródeł zasilania możesz zastosować dwa osobny regulator napięcia dla silników i kondensatory.

Link do komentarza
Share on other sites

Treker, no właśnie dzielnik nie zdał egzaminu 😃 Zasadniczo chciałem zasilić wszystko z 6xAA czyli +/- 9V przy czym przez stabilizator układy logiczne a bez stabilizacji napęd, ale obawiam się że dla przerobionych SG90 na dłuższą metę nie wyjdzie to na dobre 😃 więc chciałem obniżyć napięcie rezystorami ale wydaje mi się, że wydajność prądowa "padła". Przy okazji zaobserwowałem ciekawe zjawisko:D a mianowicie rezystory dawały ponad 6V ale jak wpiąłem L293 to napięcie spadło do 2,5V. Dlatego zrobię chyba jak mówisz, po prostu dam 2 stabilizatory 5V. 🙂

Link do komentarza
Share on other sites

Zadanie domowe 5.1

Wystarczy zamienić typ zmiennej wypełnienie na byte i usunąć warunek 🙂

Zadanie domowe 5.2

Pewnie da się prościej, ale proszę :

#define LED 9

int wypelnienie = 0;
int zmiana = 5;

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

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

}

Liczę, że pojawi się kolejna część kursu o wyświetlaczu LCD 🙂

[ Dodano: 16-07-2015, 12:58 ]

Zadanie domowe 5.3 🙂

#include <Servo.h> //Biblioteka odpowiedzialna za serwa

Servo serwo;  //Tworzymy obiekt, dzięki któremu możemy odwołać się do serwa 
int pozycja = 0; //Aktualna pozycja serwa 0-180
int zmiana = 6; //Co ile ma się zmieniać pozycja serwa?
int przerwa = 200;

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

void loop() 
{  
 if (pozycja < 180) { //Jeśli pozycja mieści się w zakresie
   delay(przerwa);
   serwo.write(pozycja); //Wykonaj ruch

 } else { //Jeśli nie, to powrót na początek
   pozycja = 0;
   przerwa = 0;
 }    

 pozycja += zmiana; //Zwiększenie aktualnej pozycji serwa
 przerwa += 50;

} 

[size=9][ [i][b]Dodano[/b]: 16-07-2015, 16:37[/i] ][/size]
Zadanie domowe 5.4

#include <Servo.h>

String katS;
byte kat;
Servo servo;

void setup() 
{
 servo.attach(9);
 Serial.begin(9600);
 Serial.println("Podaj kat jaki chcesz ustawic :)");

}

void loop() 
{
   if(Serial.available()>0)
   {
   katS = Serial.readStringUntil('\n');
   kat = katS.toInt();
     if(kat<=180 && kat>=0)
     {
     servo.write(kat);
     Serial.println("Gotowe! Ustawiony kat to: "+ katS);
     }
     else Serial.println("Kat powinien miec wartosc <0:180> !");  
   }

delay(50);
}
  • Lubię! 1
Link do komentarza
Share on other sites

Zadanie domowe 5.5

#include <Servo.h>
#define SERVO_PIN A5


int odczytADC;
int kat;
Servo servo;

void setup() 
{
servo.attach(9);
Serial.begin(9600);
Serial.println("Zmien kat za pomoca potencjometru");
}

void loop() 
{
  odczytADC = analogRead(SERVO_PIN);
  kat = map(odczytADC,0,1023,0,180);
  //Serial.println(kat);
  servo.write(kat);
  delay(50);
}
Link do komentarza
Share on other sites

damian11, gratuluje rozwiązań. Rozumiem, że programy działają poprawnie? Na przyszłość umieszczaj kody programów w tagach , tym razem poprawiłem je za Ciebie 🙂 Nie zapominaj o komentarzach, brakuje ich przy 1 i 3 programie. Warto mieć taki nawyk.

Oczywiście kolejna część kursu się pojawi, tylko tak jak pisałem ciągle czekam, aż chociaż kilka osób pokaże rozwiązania do ostatniej części kursu (czyli 6). Chyba wszystkich kursantów ogarnęło wakacyjne lenistwo 😉

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.