jueves, 21 de julio de 2016

MAQUINA TONTA

Vamos a crear un proyecto muy interesante que...no sirve para nada: La máquina tonta




Elementos:



Utilizaremos dos servos, las conexiones de cada servo están explicadas en el cuerpo del programa. Los servos se han conectado directamente a la placa y esta está alimentada con la conexión al PC.
Los servos pueden demandar mucha energía para su funcionamiento, si quisiéramos utilizar la "maquina tonta" sin conexión al PC se deberían conectar los servos a una fuente de alimentación independiente de la placa.
La única dificultad en este proyecto es colocar adecuadamente cada servo en su posición inicial y controlar los movimientos, 
Por ejemplo: El servo nº 2 para levantar la tapa debe ir desde la posición inicial situada en "180" a la posición de "80".




Al final de esta entrada he colocado un miniprograma. 


Programación:


//Germán Alonso
//Maquina tonta

//Conexion interruptor: un cable al pin V5 y el otro al pin de nº 3
//Conexiones (Servo 180º 55) : cable marron a pin Gnd, cable rojo 5v y cable amarillo al pin de control,
//En el nº 10 (activa la mano) para el servo 1 y en el nº 11 para el servo nº 2 (controla la tapa)

#include <Servo.h>
Servo P10;
Servo P11;
int pos1;
int pos2;



const int pinInterruptor = 3;
int estadoBoton = 0;   //Variable para almacenar la activación del interruptor  
int mosqueo = 1; //Se define una variable que ira incrementando una unidad cada vez que se active el interruptor
int accion = 0;  //dependiendo del valor de la variable "mosqueo" se realizaran diferentes rutinas 

void setup(){
P10.attach(10);///Servo de la mano
P11.attach(11);//Servo de la tapa
pinMode(pinInterruptor, INPUT_PULLUP);
  

void loop(){ 
P10.write(180);//mano posicion inicial
P11.write(160);//tapa posicion inicial

estadoBoton = digitalRead(pinInterruptor); 
if (estadoBoton == HIGH) {  
accion = mosqueo;
}

if (accion == 1) {  //Rutina nº 1
delay (500);
P11.write(80);//tapa
delay (500);
P10.write(80);//mano
delay (500);
P10.write(180);//mano
delay (500);
P11.write(160);//tapa
mosqueo = mosqueo+1; //En cada rutina se incrementa esta variable
accion = 0;
}

if (accion == 2) {  //Rutina nº 2 
delay (200);
P11.write(80);//tapa
delay (1500);
P10.write(80);//mano
delay (500);
P10.write(180);//mano
delay (500);
P11.write(160);//tapa

mosqueo = mosqueo+1;
accion = 0;
}

if (accion == 3) {  //Rutina nº 3

delay (500);
P11.write(80);//tapa
delay (1500);
P10.write(100);//mano
delay (1500);
P10.write(80);//mano
delay (500);
P10.write(180);//mano
delay (500);
P11.write(160);//tapa

mosqueo = mosqueo+1;
accion = 0;
}

if (accion == 4) {  //Rutina nº 4

delay (500);
P11.write(80);//tapa
delay (100);
P10.write(100);//mano
delay (100);
P10.write(80);//mano
delay (500);
P10.write(180);//mano
delay (500);
P11.write(160);//tapa
delay (500);
P11.write(70);//tapa
delay (500);
P11.write(100);//tapa
delay (500);
P11.write(70);//tapa
delay (500);
P11.write(100);//tapa
delay (500);
P11.write(70);//tapa
delay (500);
P11.write(160);//tapa
mosqueo = mosqueo+1;
accion = 0;
}

if (accion == 5) {  //Rutina nº 5 

delay (500);
P11.write(80);//tapa
delay (1500);
P10.write(100);//mano
delay (1500);
P10.write(180);//mano
delay (500);
P10.write(100);//mano
delay (1500);
P10.write(80);//mano
delay (500);
P10.write(180);//mano
delay (500);
P11.write(160);//tapa

mosqueo = 0;  //Se pone a 0 la variable para reiniciar las rutinas
accion = 0;
}


} //Llave final void loop





Mini programa para mover un servo



//German Alonso
//Con este miniprograma se mueve un servo a diferentes posiciones
//Tras modificar la linea 27 cargar el programa a la placa Arduino
//Conexiones Miniservo: rojo a GND, negro a 5v y blanco a un puerto, se define el puereto en linea 11
//Conexiones Servo 180º 55: marron gnd, rojo 5v, amarillo al pin de control 

#include <Servo.h>  
//Definición de cuatro servos
Servo P10;
Servo P11;
Servo P12;
Servo P13; 
int pausa=200;
int t=200;
void setup()   
Serial.begin(9600);
P11.attach(11);
P13.attach(13);
P10.attach(10);
P12.attach(12);

  
void loop() 
{
P10.write(180); //Poner diferentes valores entre 0 y 180 para mover el servo
}


¿Te ha gustado este tutorial?
Colabora con nosotros y haz una donación: