]> git.piffa.net Git - sketchbook_andrea/blobdiff - motors/servo/Knob_2/Knob_2.ino
Cleanup Motori
[sketchbook_andrea] / motors / servo / Knob_2 / Knob_2.ino
index 998c8a7c787c5780fe96b358610cdd6e36117de3..c50275fff7c15c885cbcb87060730857b77d4a04 100644 (file)
@@ -1,11 +1,27 @@
-// Controlling a servo position using a potentiometer (variable resistor) 
-// by Michal Rinott <http://people.interaction-ivrea.it/m.rinott> 
+/* Knob
+
+   Rotazione di un servomotore tramite un potenziometro
+
+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 
+~62mA 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/knob_bb.png
+*/
+
+// Schema: https://lab.piffa.net/schemi/potenziometro_bb.png
 
 #include <Servo.h> 
  
 Servo myservo;  // create servo object to control a servo 
  
-int potpin = 0;  // analog pin used to connect the potentiometer
+const int potpin = A0;  // analog pin used to connect the potentiometer
 int val;    // variable to read the value from the analog pin 
 
 void setup() 
@@ -16,7 +32,8 @@ void setup()
 void loop() 
 { 
   val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023) 
-  val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180) 
+  constrain(val,0,1023);
+  val = map(val, 0, 1023, 10, 170);    // scale it to use it with the servo (value between 10 and 170) 
   myservo.write(val);                  // sets the servo position according to the scaled value 
   delay(15);                           // waits for the servo to get there 
 }