Brazo robótico

Componentes y materiales
§  Placa Arduino UNO
§  2 Micro-servos
§  4 Micro-pulsadores
§  4 Resistencias 220Ohms
§  Protoboard
§  Cables


Esquema y montaje
Como podemos ver en el esquema, conectamos los servos a +5V, a GND, y a los pines 9 y 10 respectivamente. Estas salidas están controladas por la señal recibida en los pines de entrada 2, 3, 4 y 5, por medio de los cuatro pulsadores.
Como podemos ver en el esquema, conectamos los servos a +5V, a GND, y a los pines 9 y 10 respectivamente. Estas salidas están controladas por la señal recibida en los pines de entrada 2, 3, 4 y 5, por medio de los cuatro pulsadores.
Código completo

#include <Servo.h> // Incluimos la biblioteca Servo

  Servo servo_inferior;  // Definimos los servos que vamos a utilizar
  Servo servo_superior;  

  int posicion_servo_inferior; // Estas variables definirán
  int posicion_servo_superior; // las posiciónes de los servos en cada momento

  const int pulsador_izquierda = 2; // Definimos el número de pin
  const int pulsador_derecha   = 3; // para cada uno de los pulsadores
  const int pulsador_arriba    = 4;
  const int pulsador_abajo     = 5;
  
  int estado_pulsador_izquierda = 0; // Variables para leer el estado del pulsador
  int estado_pulsador_derecha   = 0;
  int estado_pulsador_arriba    = 0;
  int estado_pulsador_abajo     = 0;
  int incremento_de_angulo      = 2; // Incremento que queremos cada vez que pulsamos
  
void setup()  // Comenzamos la configuración de los pines
{
  servo_inferior.attach(9) ; // Difinimos los pines de salida para cada servo
  servo_superior.attach(10);

  pinMode(pulsador_izquierda, INPUT); // Difinimos los pines para la señal de
  pinMode(pulsador_derecha,   INPUT); // los pulsadores como entadas
  pinMode(pulsador_arriba,    INPUT);
  pinMode(pulsador_abajo,     INPUT);
}

void loop() {

  estado_pulsador_izquierda = digitalRead(pulsador_izquierda); // Leemos el estado
  estado_pulsador_derecha   = digitalRead(pulsador_derecha)  ; // de cada uno de los pulsadores
  estado_pulsador_arriba    = digitalRead(pulsador_arriba)   ;
  estado_pulsador_abajo     = digitalRead(pulsador_abajo)    ;

  if (estado_pulsador_izquierda == HIGH)
  
  // Si tenemos pulasdo el "Pulasdor izquierda"
  // El servo inferior se mueve a la nueva posición
  // La nueva posición será la posicion actual + el incremento angular
  // Esperamos 100ms hasta una nueva señal
{
  posicion_servo_inferior = posicion_servo_inferior + incremento_de_angulo;
  servo_inferior.write(posicion_servo_inferior);                             
  delay(100);                                                                
  
  }
  else if (estado_pulsador_derecha == HIGH)

  // Si tenemos pulasdo el "Pulasdor derecha"
  // El servo inferior se mueve a la nueva posición
  // La nueva posición será la posicion actual - el incremento angular
  // Esperamos 100ms hasta una nueva señal
{
  posicion_servo_inferior = posicion_servo_inferior - incremento_de_angulo;
  servo_inferior.write(posicion_servo_inferior);
  delay(100);
  
  }
   else if (estado_pulsador_arriba == HIGH)
   
  // Si tenemos pulasdo el "Pulasdor arriba"
  // El servo superior se mueve a la nueva posición
  // La nueva posición será la posicion actual + el incremento angular
  // Esperamos 100ms hasta una nueva señal
{

  posicion_servo_superior = posicion_servo_superior + incremento_de_angulo;
  servo_superior.write(posicion_servo_superior);
  delay(100);
  
  }
  else if (estado_pulsador_abajo == HIGH)

  // Si tenemos pulasdo el "Pulasdor abajo"
  // El servo inferior se mueve a la nueva posición
  // La nueva posición será la posicion actual - el incremento angular
  // Esperamos 100ms hasta una nueva señal
{

  posicion_servo_superior = posicion_servo_superior - incremento_de_angulo;
  servo_superior.write(posicion_servo_superior);
  delay(100);
  
  }
  else {
  // Si no tenemos pulasdo ningún pulasdor                           
  // esperamos 100ms hasta una nueva señal              
    delay(100);
  }
}

Comentarios