slow down screen rotation master
authorMjolnir <thomas.pietrzak@inria.fr>
Mon, 14 Sep 2015 09:18:14 +0000 (11:18 +0200)
committerMjolnir <thomas.pietrzak@inria.fr>
Mon, 14 Sep 2015 09:18:14 +0000 (11:18 +0200)
ArduinoScreen/ArduinoScreen.ino
ArduinoScreen/motorcontrol.ino

index a5e4e97b50c87ef44150e664be9d030b130e01e0..88d3c97b5db8a6c73161e9c29ceb9f8886d28565 100644 (file)
@@ -11,6 +11,7 @@ unsigned int motorspeed      =  77; // mm/s
 
 //Servo motor
 const int servopin      = 7;
+int servodelay = 20;
 
 //buffer stuff
 char command = 0;
@@ -60,6 +61,13 @@ void eval(int command, int value)
       Serial.print("Width: ");
       Serial.println(rackwidth);
       break;
+    case 'L':
+      servodelay = value;
+      break;
+    case 'D':
+      Serial.print("Servo delay: ");
+      Serial.println(servodelay);
+      break;
     default:
       //Serial.print("Unknown command ");
       //Serial.write(command);
index 12ee1a97b55e84c9587f18cf887e27821a4dad4c..3db5f107825b485c2b6ebfc263d7e7765db3aa9e 100644 (file)
@@ -1,5 +1,6 @@
 #include <Servo.h>
 
+
 //Servo
 Servo servo;
 
@@ -145,12 +146,27 @@ int angle()
 }
 
 /*
-  angle 
-    +: clockwise
-    -: anticlockwise
+  angle 0-180°
 */
 void rotate(int angle)
 {
-  servo.write(angle);
+  int current = servo.read();
+  
+  if(current > angle)
+  {
+    for(int pos = current ; pos > angle ; pos--)
+    {
+      servo.write(pos);
+      delay(servodelay);
+    }
+  }
+  else
+  {
+    for(int pos = current ; pos <= angle; pos++)
+    {
+      servo.write(pos);
+      delay(servodelay);
+    }
+  }
 }