Już opisywaliśmy się na blogu Arduino (https://www.ikkaro.com/kit-inicio-arduino-super-starter-elegoo/) i faktycznie pojawiają się w kilku projektach, w tym w tym (https://www.ikkaro.com/node/529)
Teraz przejdźmy trochę dalej i zaczynajmy modulować sygnały szerokością impulsu (PWM)można to wykorzystać na przykład do obsługi serwomotorów, takich jak te przedstawione tutaj (https://www.ikkaro.com/introduccion-al-aeromodelismo-electrico/) lub diody led rgb. Dla tych, którzy nie wiedzą, czym jest PWM, jest to modulacja wykonywana na sygnał i służąca do „przesyłania informacji przez kanał komunikacyjny lub do kontrolowania ilości energii przesyłanej do obciążenia” (Wikipedia)
Siłowniki sterowane są 3 przewodami: jeden dla napięcia dodatniego, drugi dla masy i drugi dla sygnału sterującego modulowanego w PWM.
Arduino ze swojej strony posiada 6 wyjść cyfrowych, które mogą pełnić rolę wyjść PWM (są to piny: 11, 10, 9, 6, 5, 4) oraz bibliotekę przygotowaną do obsługi serw. Dlatego wykorzystamy jedno z tych wyjść do wykonania naszych pierwszych testów sterowania serwomotorem.
Może nam posłużyć przykładowy kod biblioteki serwonapędów Arduino, podłączamy napięcie do 5v, masę do masy i sygnał sterujący serwomotoru (czyli ten który jest modulowany w PWM) do jednego z pinów arduino posiadającego PWM, na przykład w tym kodzie do cyfrowego pinu 9.
// Przemiatanie
// przez BARRAGAN
#zawierać
Servo myservo; // utwórz obiekt serwomechanizmu do sterowania serwomechanizmem
// można utworzyć maksymalnie osiem obiektów serwomechanizmu
int pos = 0; // zmienna do przechowywania pozycji serwomechanizmu
void setup ()
{
myservo.attach (9); // dołącza serwo na pinie 9 do obiektu serwa
}
void loop ()
{
for (pos = 0; pos <180; pos + = 1) // przechodzi od 0 stopni do 180 stopni
{// w krokach co 1 stopień
myservo.write (pos); // powiedz serwo, aby przeszło do pozycji w zmiennej 'pos'
opóźnienie (15); // czeka 15 ms, aż serwo osiągnie pozycję
}
for (pos = 180; pos> = 1; pos- = 1) // przechodzi od 180 stopni do 0 stopni
{
myservo.write (pos); // powiedz serwo, aby przeszło do pozycji w zmiennej 'pos'
opóźnienie (15); // czeka 15 ms, aż serwo osiągnie pozycję
}
}
Ten kod pozwoliłby nam obrócić siłownik od 0º do 180º, a następnie z powrotem do 0º.
Wkrótce więcej.
[wyróżnione] Ten artykuł został pierwotnie napisany przez ErSame dla Ikkaro [/ wyróżniony]