X-Git-Url: http://git.piffa.net/web?p=rover;a=blobdiff_plain;f=prototypes%2Fservo%2Frotation_progressive%2Frotation_progressive.ino;fp=prototypes%2Fservo%2Frotation_progressive%2Frotation_progressive.ino;h=2761bb3d003f57b2b9b8ca120f760534905e6602;hp=0000000000000000000000000000000000000000;hb=1f18251d7103a4576a46c36b8503cd6e02b1ee1c;hpb=e5ee18ad49f4c9c25628e3925e51352083b18ced diff --git a/prototypes/servo/rotation_progressive/rotation_progressive.ino b/prototypes/servo/rotation_progressive/rotation_progressive.ino new file mode 100644 index 0000000..2761bb3 --- /dev/null +++ b/prototypes/servo/rotation_progressive/rotation_progressive.ino @@ -0,0 +1,84 @@ +/* Rotazione + + Rotazione di un servomotore tramite la librerio Servo.h . + +L'utilizzo della libreria Servo rende inutilizzabile analogWrite() +sui pin 9 e 10 dato che utilizza i timer associati a questi PIN. + +Power: un servo da 9g puo' arrivare ad impegnare 750mA sotto carico +(se viene opposta resistenza al movimento del servo), un SG90 prende +~52mA se il movimento e' libero. Quindi in fase di test il servo puo' +essere alimentato direttamente da una scheda Arduino (200ma dal PIN 5v) +ma per l'uso finale dovra' essere alimentato autonomamente. + + +Rotazione a SX di 90' +Rotazione a DC di 90' +Ritorno al centro + +Schema: https://www.arduino.cc/en/uploads/Tutorial/sweep_bb.png + http://microbotlabs.com/images/mearm-uno-servo-1.jpg + */ + +#include + +Servo myservo; // create servo object to control a servo + // a maximum of eight servo objects can be created + +// Servo vars +int pos = 0; // variable to store the servo position +const byte servo =9 ; // Servo PIN +const byte middle = 90; // Centratura servo +const int pausa = 10; // Smooth movimento +const byte sx = 10; // Min SX +const byte dx = 170; // Maz DX + +void setup() +{ + myservo.attach(servo); // attaches the servo on pin 9 to the servo object + myservo.write(middle); + delay(4000); // Nel caso ci sia da posizionare il sensore sul servo +} + + +void loop() +{ + pos = 90 ; +// Turn DX +while (pos < dx) { + myservo.write(pos++); + delay(pausa); +} + +delay(1000); + +// Middle +while (pos > middle) { + myservo.write(pos--); + delay(pausa); +} +while (pos < middle) { + myservo.write(pos++); + delay(pausa); +} + delay(1000); + +// Turn SX +while (pos > sx) { + myservo.write(pos--); + delay(pausa); +} + +delay(1000); + +// Middle +while (pos > middle) { + myservo.write(pos--); + delay(pausa); +} +while (pos < middle) { + myservo.write(pos++); + delay(pausa); +} + delay(1000); +}