]> git.piffa.net Git - rover/blobdiff - libraries/rover/rover.cpp
Servo func clean up, drive lib
[rover] / libraries / rover / rover.cpp
index f284162b970330d6352509e4194283434c4b5b18..58bbf2cbb082a1f3e2b2c685f8ff1e675df8e311 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  Rover 
+  Rover
 
 Autore: Andrea Manni
 
@@ -24,8 +24,19 @@ const int enB = 5;
 const int in3 = 4;
 const int in4 = 3;
 byte speedB = 255;
-// Funzioni
 
+// Servo vars
+int pos = 0;    // variable to store the servo position
+const byte servoPIN =9 ;
+const byte middle = 90; // Centratura servo
+const int spausa = 10; // Pausa movimenti servo
+const byte sx = 10;  // Min SX
+const byte dx = 170; // Maz DX
+Servo myservo; // Non c'e' bisogno di extern se e' dichiarato in questo scope
+
+////////////////////////
+// Funzioni:
+//
 void abilita() {
 // Abilita i PINs come OUTPUTS
     pinMode(enA, OUTPUT);
@@ -34,6 +45,10 @@ void abilita() {
     pinMode(enB, OUTPUT);
     pinMode(in3, OUTPUT);
     pinMode(in4, OUTPUT);
+
+
+    pinMode(servoPIN, OUTPUT);
+    myservo.attach(servoPIN);
 }
 
 
@@ -105,18 +120,60 @@ void stopB() {
     digitalWrite(enB,LOW);
 }
 
+
+// Entrambi i motori
+void avanti() {
+    // Drive ahead: funzione composita
+    forwardA() ;
+    forwardB() ;
+}
+void indietro() {
+    // Drive backward: funzione composita
+    backwardA();
+    backwardB();
+}
+void giraSX() {
+    // Gira a DX
+    forwardB() ;
+    backwardA();
+}
+void giraDX()  {
+    // Gira a DX
+    forwardA() ;
+    backwardB();
+}
+void stop()  {
+    stopA();
+    stopB();
+}
+
+
+
 // Servo
-void turnDX() {
+void servoDX() {
     // TurnDX
-    myservo.write(170);
+    while (pos < dx) {
+        myservo.write(pos++);
+        delay(spausa);
+    }
 }
-    
-void turnSX() {
+
+void servoSX() {
     // TurnSX
-    myservo.write(10);
+    while (pos > sx) {
+        myservo.write(pos--);
+        delay(spausa);
+    }
 }
 
-void turnMiddle() { 
-    // TurnDX
-    myservo.write(middle);
+void servoMiddle() {
+    // Middle
+    while (pos > middle) {
+        myservo.write(pos--);
+        delay(spausa);
+    }
+    while (pos < middle) {
+        myservo.write(pos++);
+        delay(spausa);
+    }
 }