martes, 3 de mayo de 2016

Servo con Arduino - parte 003

/* CODIGO SERVO 003 */

#include <Servo.h>

Servo ServoPablo;                 //Declaramos que queremos controlar un Servo,
                                  // al cual le vamos a poner un nombre cualquiera

int pot = 0;                     //El pin análogo donde va conectado el Potenciómetro
int val;                         //El valor a leer por el puerto análogo

void setup()
{
ServoPablo.attach(9);            //El pin al cual conectaremos nuestro Servo
Serial.begin(9600);
}

void loop()
{
val = analogRead(pot);           // Aquí le decimos que lea el valor del potenciómetro,
                                 // valor el cual oscila entre 0 y 1023
val = map(val, 0 ,1023, 0, 180); // Traduce la lectura análga (0, 1023)
                                 // a grados (0°, 180°)
Serial.print("Angulo: ");
Serial.println(val);
ServoPablo.write(val);           //Mueve el Servo según la lectura análoga
delay(5);
}

Servo con Arduino - parte 002

¿Cómo controlar un Servo usando Arduino?
La idea es que conectamos un potenciómetro a la tarjeta y un Servo. El trabajo del potenciómetro es controlar la posición del Servo a medida que lo rotamos.
El potenciómetro está conectado al pin análogo 0 (A0) en la tarjeta, éste leerá el valor (valor el cual va de 0 a 1023) y lo traducirá en grados para controlar el Servo.
Ahora, ¿cómo funciona una lectura análoga?
El Servo necesita +5V para funcionar, el potenciómetro tiene tres pines el de la izquierda esta conectado a +5V el derecho a tierra y por último el central va al pin análogo 0 (A0). La manera que en traducimos el voltaje en posición es de esta manera. Ya sabiendo que el valor de cualquier sensor análogo va de 0 a 1023 y que el voltaje de salida es +5V lo que se hace es que dividimos esos 5 voltios en 1023 partes iguales, de manera que el pin análogo lee los valores de 0 a 1023, el código que cargamos en la tarjeta traduce esos valores de 0 a 1023 en grados (0° a 180°), ésta señal es luego enviada al pin 9 el cual tiene capacidad de PWM y envía esa señal regulada al microcontrolador del Servo la cual hace mover el Servo de derecha a izquierda.
Necesitaremos:
  • Arduino.
  • Protoboard.
  • Un potenciómetro de 100k Ohm.
  • Un Servo standard de 180° 0 incluso de rotación continua (360°) y jugar con los valores del código para mover el Servo cuántos grados queramos y en la dirección que queramos.
  • Cables.



/* CODIGO SERVO 002 */

#include <Servo.h>

Servo miServo;        // create servo object to control a servo
int angulo=90;

void setup()
{
  miServo.attach(9);  // attaches the servo on pin 9 to the servo object
  Serial.begin(9600);
}

void loop()
{
  unsigned char comando=0;
  if(Serial.available())
  {
    comando=Serial.read();
    if(comando=='a') angulo+=10;
    else if(comando=='z') angulo-=10;
    angulo=constrain(angulo,0,180);
  }
  miServo.write(angulo);
  Serial.print("Angulo: ");
  Serial.println(angulo);
  delay(100);
}

Servo con Arduino - Parte 01

/* CODIGO SERVO001 */

#include <Servo.h>

Servo miServo;         // create servo object to control a servo

int potpin = 0;        // analog pin used to connect the potentiometer
int val;               // variable to read the value from the analog pin

void setup()
{
  miServo.attach(9);   // attaches the servo on pin 9 to the servo object
}

void loop()
{
  miServo.write(90);   // sets the servo position according to the scaled value
  delay(15);           // waits for the servo to get there
}