]> git.piffa.net Git - rover/blob - prototypes/servo/rotation_progressive/rotation_progressive.ino
Servo progressive, lib
[rover] / prototypes / servo / rotation_progressive / rotation_progressive.ino
1 /* Rotazione
2
3    Rotazione di un servomotore tramite la librerio Servo.h .
4
5 L'utilizzo della libreria Servo rende inutilizzabile analogWrite()
6 sui pin 9 e 10 dato che utilizza i timer associati a questi PIN.
7
8 Power: un servo da 9g puo' arrivare ad impegnare 750mA sotto carico
9 (se viene opposta resistenza al movimento del servo), un  SG90 prende 
10 ~52mA se il movimento e' libero. Quindi in fase di test il servo puo'
11 essere alimentato direttamente da una scheda Arduino (200ma dal PIN 5v)
12 ma per l'uso finale dovra' essere alimentato autonomamente.
13
14
15 Rotazione a SX di 90'
16 Rotazione a DC di 90'
17 Ritorno al centro
18
19 Schema: https://www.arduino.cc/en/uploads/Tutorial/sweep_bb.png
20         http://microbotlabs.com/images/mearm-uno-servo-1.jpg
21    */
22
23 #include <Servo.h> 
24  
25 Servo myservo;  // create servo object to control a servo 
26                 // a maximum of eight servo objects can be created 
27  
28 // Servo vars
29 int pos = 0;    // variable to store the servo position 
30 const byte servo =9 ;   // Servo PIN
31 const byte middle = 90; // Centratura servo
32 const int pausa = 10; // Smooth movimento
33 const byte sx = 10;  // Min SX
34 const byte dx = 170; // Maz DX
35  
36 void setup() 
37
38   myservo.attach(servo);  // attaches the servo on pin 9 to the servo object 
39     myservo.write(middle);  
40     delay(4000); // Nel caso ci sia da posizionare il sensore sul servo
41
42  
43  
44 void loop() 
45
46   pos = 90 ;
47 // Turn DX
48 while (pos < dx) {
49     myservo.write(pos++);
50     delay(pausa);     
51
52
53 delay(1000);
54
55 // Middle
56 while (pos > middle) {
57       myservo.write(pos--);
58     delay(pausa); 
59 }
60 while (pos < middle) {
61       myservo.write(pos++);
62     delay(pausa); 
63 }
64     delay(1000);   
65     
66 // Turn SX
67 while (pos > sx) {
68     myservo.write(pos--);
69     delay(pausa);     
70
71
72 delay(1000);
73
74 // Middle
75 while (pos > middle) {
76       myservo.write(pos--);
77     delay(pausa); 
78 }
79 while (pos < middle) {
80       myservo.write(pos++);
81     delay(pausa); 
82 }
83     delay(1000);   
84 }