Oggi ho provato ad eseguire questo sketch usando un servo incluso in un kit acquistato su futura elettronica
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int angle = 0; // variable to store the servo position
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}void loop()
{
for(angle = 0; angle < 180; angle += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(angle); // tell servo to go to position in variable 'angle'
delay(20); // waits 20ms between servo commands
}
for(angle = 180; angle >= 1; angle -= 1) // goes from 180 degrees to 0 degrees
{
myservo.write(angle); // move servo in opposite direction
delay(20); // waits 20ms between servo commands
}
}
All'inizio il servo ha cominciato a muoversi, ma, arrivato quasi a 90° ha smesso di funzionare.
Se provo a rincompilare e a fare l'upload avverto che il servo da dei piccolissimi "colpetti" ma non si muove più.
Nel frattempo il computer continua ripetutamente ad inviare il segnale acustico (lo stesso che si sente quando attacco qualcosa alla porta usb).
Potreste aiutarmi a capire qual è il problema?
Vi ringrazio
Dal rumore della usb collegata/scollegata pare che arduino si stia riavviando in continuo... non è che il servo ha sforzato assorbendo un botto di corrente danneggiando la scheda?!
Secondo me il servo assorbe troppa corrente e percui la tensione di alimentazione va giú resettando l'arduino. Alimenta il Servo separatamente da un alimentatore abbastanza potente da garantire la corrente. Collega il polo negativo della alimentazione servo con la massa del Arduino.
Ciao Uwe
Ho collegato un amperometro sul positivo dell'alimentazione del servo e ho visto che, nella fase veloce di posizionamento, chiedeva poco più di 20 mA. Questo ha confermato la tesi di Uwe.
Ho quindi alimentato il servo separatamente e tutto ha funzionato!!!