lunes, 13 de mayo de 2019

Micromanipulator and 3 axis joystick, Arduino based

c








Arduino code

/* MICROMANIPULADOR
 
  90 parado
  Menor de 90, giro a la derecha
  Mayor 90 giro a la izquierda
  
   [##] --> derecha (menor 90)
  +----------+
  |          |
  |          |
  +----------+

  LED 3
 
 */


//Librerias

#include <Servo.h>

Servo servo_x;  // crea el objeto servo
 Servo servo_y;  // crea el objeto servo
  Servo servo_z;
  const int pot_x = A0;
  const int pot_y = A1;
  const int pot_z = A2;
 int pos_x; //Variables lectura
   int pos_y;
    int pos_z;

const int led = 3;
 
int paro = 90; //valor paro servo
int margen_sup = 55;//valores medios 52,53
int margen_inf = 45;
//##########################
//SETUP#####################

void setup() {
   Serial.begin(9600);
   servo_x.attach(9);  // vincula el servo al pin digital 9
     servo_y.attach(10);
       servo_z.attach(11);
       pinMode(led , OUTPUT);
}

void loop() {

 pos_x = map(analogRead(pot_x), 0, 1023, 0, 100);  // lee entrada analogica y trans a %
pos_y = map(analogRead(pot_y), 0, 1023, 0, 100);
pos_z = map(analogRead(pot_z), 0, 1023, 0, 100); 

Serial.print( pos_x);
 Serial.print(" ");
 Serial.print( pos_y);

 Serial.print(" ");
 Serial.println( pos_z);
             

 digitalWrite(led , LOW);
if(pos_x > margen_sup ){ servo_x.write(98);   }//98
if(pos_x > margen_sup + 15){ servo_x.write(180); digitalWrite(led , HIGH);}//180
if(pos_x < margen_inf){ servo_x.write(84); }//85
if(pos_x < margen_inf - 15){ servo_x.write(0); digitalWrite(led , HIGH);}//0

if(pos_x >= margen_inf && pos_x <= margen_sup){ servo_x.write(paro); }


if(pos_y > margen_sup){ servo_y.write(85); }//85
if(pos_y > margen_sup + 15){ servo_y.write(0);digitalWrite(led , HIGH); }//0
if(pos_y < margen_inf){ servo_y.write(98); }//98
if(pos_y < margen_inf - 15){ servo_y.write(180); digitalWrite(led , HIGH);}//180
if(pos_y >= margen_inf && pos_y <= margen_sup){ servo_y.write(paro); }

if(pos_z > margen_sup ){ servo_z.write(97); }
if(pos_z > margen_sup + 15){ servo_z.write(180); digitalWrite(led , HIGH);}

if(pos_z < margen_inf){ servo_z.write(84); }
if(pos_z < margen_inf - 15){ servo_z.write(0);  digitalWrite(led , HIGH);}
if(pos_z >= margen_inf && pos_z <= margen_sup){ servo_z.write(paro); }

  delay(100);


}

No hay comentarios: