From: Andrea Manni Date: Thu, 30 Mar 2017 12:24:35 +0000 (+0200) Subject: Servo X-Git-Url: http://git.piffa.net/web?p=rover;a=commitdiff_plain;h=5e3313a18b950f3fe00fef820a0c697316e37826 Servo --- diff --git a/prototypes/servo/README b/prototypes/servo/README new file mode 100644 index 0000000..1b38c0e --- /dev/null +++ b/prototypes/servo/README @@ -0,0 +1,10 @@ +ToDO +==== + + +Vedere come implemetare il controllo di presenza di ostacoli laterali: + +* Un funzione "check" type boolean per l'ultrasuoni che riotorna 0/1 per la presenza di un oggetto +* due funzione turnSX / turnDX che ruotano il servo, eseguono check, ritornano +se libero +* Nella FSM decidere / prevedere da che parte controllare (es spigolo, due rotazioni consecutive che si annullano). diff --git a/prototypes/servo/base/base.ino b/prototypes/servo/base/base.ino new file mode 100644 index 0000000..2a1b3f2 --- /dev/null +++ b/prototypes/servo/base/base.ino @@ -0,0 +1,47 @@ +/* Sweep + + 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. + +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 ; + +void setup() +{ + myservo.attach(servo); // attaches the servo on pin 9 to the servo object + myservo.write(90); // tell servo to go to position in variable 'pos' + delay(2000); +} + + +void loop() +{ + for(pos = 20; pos < 160; 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 + } + for(pos = 160; pos>=20; 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 + } +} diff --git a/prototypes/servo/rotation/rotation.ino b/prototypes/servo/rotation/rotation.ino new file mode 100644 index 0000000..62e3b85 --- /dev/null +++ b/prototypes/servo/rotation/rotation.ino @@ -0,0 +1,50 @@ +/* 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' + +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 ; +conts byte middle = 90; // Centratura servo + +void setup() +{ + myservo.attach(servo); // attaches the servo on pin 9 to the servo object + myservo.write(middle); // tell servo to go to position in variable 'pos' + delay(2000); +} + + +void loop() +{ +// Turn DX + myservo.write(160); + delay(35); + myservo.write(middle); +// Turn SX + myservo.write(20); + delay(35); + myservo.write(middle); +} diff --git a/prototypes/servo/servo.ino b/prototypes/servo/servo.ino deleted file mode 100644 index 2a1b3f2..0000000 --- a/prototypes/servo/servo.ino +++ /dev/null @@ -1,47 +0,0 @@ -/* Sweep - - 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. - -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 ; - -void setup() -{ - myservo.attach(servo); // attaches the servo on pin 9 to the servo object - myservo.write(90); // tell servo to go to position in variable 'pos' - delay(2000); -} - - -void loop() -{ - for(pos = 20; pos < 160; 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 - } - for(pos = 160; pos>=20; 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 - } -}