]> git.piffa.net Git - rover/commitdiff
Servo progressive, lib
authorAndrea Manni <andrea@piffa.net>
Wed, 5 Apr 2017 10:07:32 +0000 (12:07 +0200)
committerAndrea Manni <andrea@piffa.net>
Wed, 5 Apr 2017 10:18:15 +0000 (12:18 +0200)
libraries/rover/rover.cpp
libraries/rover/rover.h
prototypes/servo/rotation_lib/rotation_lib.ino
prototypes/servo/rotation_progressive/rotation_progressive.ino [new file with mode: 0644]

index 1b6c88e16c32d3c86a55c2ed2d9932205a55f2aa..f284162b970330d6352509e4194283434c4b5b18 100644 (file)
@@ -104,3 +104,19 @@ void stopB() {
     // Stop
     digitalWrite(enB,LOW);
 }
+
+// Servo
+void turnDX() {
+    // TurnDX
+    myservo.write(170);
+}
+    
+void turnSX() {
+    // TurnSX
+    myservo.write(10);
+}
+
+void turnMiddle() { 
+    // TurnDX
+    myservo.write(middle);
+}
index 7d5da82a795c2f7ddbba35bc394819a5bb5e9c70..a4ad42bd1b6bdf73b51b084a43cc70ca568f2af5 100644 (file)
@@ -30,4 +30,7 @@ void backwardB() ;
 void backwardB(byte speedB) ;
 void stopB() ;
 
+void turnDX() ;
+void turnSX() ;
+void turnMiddle() ;
 #endif
index ac463ea979d0071cde7aed1a80680d0de0c65a2f..130d38dd1ea4e6ce67e2b71d8e1740753c292f8a 100644 (file)
@@ -1,77 +1,61 @@
 /* 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
+ */
 
-   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 <rover.h>
 #include <Servo.h> 
+
 Servo myservo;  // create servo object to control a servo 
-                // a maximum of eight servo objects can be created 
+// a maximum of eight servo objects can be created 
+
 // Servo vars
 int pos = 0;    // variable to store the servo position 
 const byte servo =9 ;
 const byte middle = 90; // Centratura servo
 const int spausa = 30; // Pausa movimenti 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);
+  abilita();
+
 } 
+
+
 void loop() 
 { 
-// Turn DX
-    turnDX();
-    delay(1000);     
+  // Turn DX
+  turnDX();
+  delay(1000);     
 
-    turnMiddle();
-    delay(1000);     
+  turnMiddle();
+  delay(1000);     
 
-// Turn SX
-    turnSX();
-    delay(1000);     
+  // Turn SX
+  turnSX();
+  delay(1000);     
 
-    turnMiddle();
-    delay(1000);     
+  turnMiddle();
+  delay(1000);     
 } 
 
-// Functions
-
-void turnDX() {
-    // TurnDX
-    myservo.write(170);
-    delay(spausa);     
-}
 
-void turnSX() {
-    // TurnSX
-    myservo.write(10);
-    delay(spausa);     
-}
 
-void turnMiddle() {
-    // TurnDX
-    myservo.write(middle);
-    delay(spausa);     
-}
 
diff --git a/prototypes/servo/rotation_progressive/rotation_progressive.ino b/prototypes/servo/rotation_progressive/rotation_progressive.ino
new file mode 100644 (file)
index 0000000..2761bb3
--- /dev/null
@@ -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.h> 
+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);   
+}