INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
Witajcie, jakiś czas temu napisałem post w którym pokazywałem jak zacząć z starter kitem rozszerzonym z botlandu. Dzisiaj spróbujemy swoich sił w sterowaniu silnikami za pomocą mostka H i będziemy sterować serwem . Na początek nauczymy się podłączać silniki do Arduino za pomocą mostka H, który pozwoli nam na sterowanie silnikami, pozwala na sterowanie mocą oraz kierunkiem działania silnika, lecz dzisiaj zajmiemy się tą drugą funkcją czyli kierunkiem działania, gdyż stwierdziłem, że pierwsza opcja jest tak rzadko używania, gdyby ktoś koniecznie musiał jej użyć to doczyta w internecie szczegóły. A więc bez zwlekania zaczniemy od podłączenia silnika do mostka H a mostka do Arduino.
Podłączenie jest stosunkowo proste, a gdy w przyszłości chcielibyśmy korzystać z mostka to może przydać nam się taki schemat :
Po podłączeniu możemy zabrać się za kod który sprawi że silniki zaczną się kręcić, jeden w jednym kierunki, drugi w odwrotnym, po 3 sekundach każdy zmieni swój kierunek na przeciwny.
void setup() { pinMode(2,OUTPUT); // inicjujemy piny pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); } void loop() { digitalWrite(2,HIGH); /*po podaniu stanu wysokiego na pin 2 i 5 silniki zaczną się kręcić w przeciwnych kierunkach */ digitalWrite(4,LOW); digitalWrite(3,LOW); digitalWrite(5,HIGH); delay(3000); digitalWrite(2,LOW); /* zmieniamy stany na przeciwne, silniki kręcą się w innym kierunku */ digitalWrite(4,HIGH); digitalWrite(3,HIGH); digitalWrite(5,LOW); delay(3000); }
Gdy widzimy kręcące się silniki możemy zabrać się za servo które będzie się obracać pod wpływem przekręcania przez nas potencjometru, w tym wypadku 10Kohm a więc klasycznie zaczniemy od złożenia schematu na płytce :
Po złożeniu schematu możemy przejść do kodu :
#include <Servo.h> Servo majsterservo; // zmieniamy nazwę Servo na majsterservo int potenpin = 0; // Pin analogowy pod który podłączamy potencjometr int val; void setup() { majsterservo.attach(9); // pin pod który podłączamy servo } void loop() { val = analogRead(potenpin); val = map(val, 0, 1023, 0, 180); // W funkcji map ustawiamy jakie watości mają być wychwytywane majsterservo.write(val); delay(15);
Gdy wykonamy ten projekt możemy zabrać się za sterowanie servem za pomocą serial monitora, może przydać się gdy np będziemy chcieli obracać głowę robota lub sterować jego inną częścią, poniżej mamy schemat według którego mamy złożyć układ, nie różni się on dużo od poprzednich :
i oczywiście aby wszystko działało wgrywamy kod programu :
#include <Servo.h> Servo majsterservo; // Wiemy o co chodzi :-) int val; void setup() { Serial.begin(9600); majsterservo.attach(9); // Wiemy co to jest :-) } void loop() { val = Serial.parseInt(); if(val>0) { majsterservo.write(val); // servo ustawia się na pozycję wpisaną w serialu delay(15); } }
No to w tym poradniku na tyle, gdy przyjdą następne części będzie ciąg dalszy, mam zamiar zrobić całą serie poradników dla początkujących, jak może zauważyliście niektórych funkcji w kodzie nie opisywałem gdyż są one opisane w poprzednim poście. Części których dziś użyłem to :
– Mostek H
– Servo
Oraz inne części starter kitu rozszerzonego
Dzięki za uwagę i do następnego poradnika :-)
INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
Niemogę się powstrzymać aby nie zacytować…
https://youtu.be/adO1MFr4-7A
A teraz rada… połączenia we Fritzingu jeśli są mocno pokręcone staraj się robić z wciśniętym CTRL wtedy ładnie zakręcają :)
O tak http://blog.fritzing.org/wp-content/uploads/bezier2.png
Ok, ciągle się uczę, wszystkiego jeszcze nie wiem i dziękuję za wszystkie uwagi ! :-)
W ostatnim kodzie jest błąd w funkcji setup :) nie ma serwa myservo
Wielkie dzięki za czujność :-)
a może zrobiłbyś sterowanie servem w zależności od temperatury (DS18B20) ? ;-)
Może jako bonus do następnego odcinka ? :-)