#include <SoftwareServo.h>
SoftwareServo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created
int pos = 0; // variable to store the servo position
void setup()
{
myservo.attach(1); // attaches the servo on pin 1 to the servo object
}
void loop()
{
for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
SoftwareServo::refresh();
}
for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
SoftwareServo::refresh();
}
}
Il problema è che il Servo “vibra” ma non si muove…
Sei sicuro che sia compatibile con l'Attiny85? Sei sicuro che possa lavorare ad 8 MHz?
Ho visto nel codice che usa una temporizzazione basata sulla lettura del timer 0. Sull'Arduino tale timer è impostato con un tempo di overflow che è legato anche al clock usato (16 MHz).Oltre ad una modalità che potrebbe essere diversa da quella usata nel core che stai usando tu per programmare l'Attiny85.
leo72:
Sei sicuro che sia compatibile con l'Attiny85? Sei sicuro che possa lavorare ad 8 MHz?
Ho visto nel codice che usa una temporizzazione basata sulla lettura del timer 0. Sull'Arduino tale timer è impostato con un tempo di overflow che è legato anche al clock usato (16 MHz).Oltre ad una modalità che potrebbe essere diversa da quella usata nel core che stai usando tu per programmare l'Attiny85.
sono alle prime armi :), ma credo che un servo debba essere collegato a un pin PWM per poter regolare l'angolo di rotazione. Prova a controllare che il pin a cui hai collegato il servo sia adatto.
Sui servo non so aiutarti, non so nulla. Ma non vorrei che ci fosse un problema di clock. L'Arduino va a 16 MHz, come detto, e quella lib non ha nessuna porzione di codice che mi faccia pensare che possa capire a quanto va il chip e si adatti. Si limita a leggere il valore del timer 0. Poi c'è un controllo per cui se non sono passati 20 ms la lib pare non faccia nulla.
X sagara:
I servo non vengono pilotati con il pwm arduinico, il segnale utile in ppm viene generato dalla lib su qualsiasi pin.
Non ho mai provato su attiny, del discorso timer non so, mentre sul fatto dei 20ms credo sia normale proprio perché il segnale ppm ricreato ha una frequenza di 50Hz
C'è da dire che a fine articolo si parla di problemi non ancora chiariti.
Per andare a fondo ti serve un oscilloscopio.
A parte che è il nostro Ratto, quindi magari scrivigli che ti può dare un mano...
Poi dice (ed un altro utente lo conferma) che la lib non è stata modificata perché funziona ma ha solo cambiato il codice. E mette un codice di esempio che a lui funziona(va). Lo hai provato?
leo72:
A parte che è il nostro Ratto, quindi magari scrivigli che ti può dare un mano...
Poi dice (ed un altro utente lo conferma) che la lib non è stata modificata perché funziona ma ha solo cambiato il codice. E mette un codice di esempio che a lui funziona(va). Lo hai provato?
Io messo 25 come delay, ratto invece 50. adesso riprovo.