viernes, 12 de abril de 2019

Servomotor con 4 pulsadores

#include <Servo.h>

Servo motor1;
Servo motor2;
int posicion_motor1=0;
int pulsadorizquierda=2;
int estado_pulsadorizquierda=0;
int incremento_de_angulo=10;
int pulsadorderecha=5;
int estado_pulsadorderecha=0;
int posicion_motor2=0;
int pulsadorarriba=3;
int estado_pulsadorarriba=0;
int pulsadorabajo=4;
int estado_pulsadorabajo=0;

void setup()
{
motor1.attach(9);
pinMode(pulsadorizquierda,INPUT);
pinMode(pulsadorderecha,INPUT);
motor1.write(posicion_motor1);
motor2.attach(10);
pinMode(pulsadorarriba,INPUT);
pinMode(pulsadorabajo,INPUT);
motor2.write(posicion_motor2);
}

void loop() {

estado_pulsadorizquierda= digitalRead(pulsadorizquierda);
estado_pulsadorderecha= digitalRead(pulsadorderecha);
estado_pulsadorarriba= digitalRead(pulsadorarriba);
estado_pulsadorabajo= digitalRead(pulsadorabajo);
if (estado_pulsadorizquierda==HIGH)
{
posicion_motor1 = posicion_motor1 + incremento_de_angulo;  //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
motor1.write(posicion_motor1);
delay(100); 
  if (posicion_motor1 >= 180){
  posicion_motor1=0;                                      //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
  motor1.write(posicion_motor1);
  }
}

if (estado_pulsadorderecha==HIGH)
{
posicion_motor1 = posicion_motor1 - incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador derecho
motor1.write(posicion_motor1);
delay(100); 
    if (posicion_motor1 <= 0){
  posicion_motor1=180;                //Hacemos que vuelva a su posicion inicial al llegar a su limite de giro
  motor1.write(posicion_motor1);
  }
}
if (estado_pulsadorarriba==HIGH)
{
posicion_motor2 = posicion_motor2 + incremento_de_angulo;  //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
motor2.write(posicion_motor2);
delay(100); 
  if (posicion_motor2 >= 180){
  posicion_motor2=0;                                      //introducimos cuanto queremos que se mueva el servo pulsando el pulsador superior
  motor2.write(posicion_motor2);
  }
}

if (estado_pulsadorabajo==HIGH)
{
posicion_motor2 = posicion_motor2 - incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador inferior
motor2.write(posicion_motor2);
delay(100); 
    if (posicion_motor2 <= 0){
  posicion_motor2=180;                //Hacemos que vuelva a su posicion inicial al llegar a su limite de giro
  motor2.write(posicion_motor2);
  }
}
}

jueves, 28 de marzo de 2019

Servo controlado co M_block

#include <Servo.h>
Servo miservo;
int pos=0;
int TECLA=0;
void setup() {
  Serial.begin(9600);
  miservo.attach(9);
  pos=0;
}
void loop() {
    miservo.write(pos);
    delay(50);
    Serial.println(pos);
    if (Serial.available() > 0) {  //esto da algo de error
       delay(100);
       TECLA=Serial.read();
       if (TECLA==49){  //es decir,  "1"
          pos=0; //ángulo que debe tomar con la tecla indicada
          }
       if (TECLA==50){  //es decir,  "2"
          pos=45; //ángulo que debe tomar con la tecla indicada
       }
       if (TECLA==51){  //es decir,  "3"
          pos=90; //ángulo que debe tomar con la tecla indicada
          }
        if (TECLA==52){  //es decir,  "4"
          pos=135; //ángulo que debe tomar con la tecla indicada
          }
       if (TECLA==53){  //es decir,  "5"
          pos=180; //ángulo que debe tomar con la tecla indicada
          }
     
     
       }
}

Así conseguiriamos girar el servo al angulo deseado mediante las teclas

Servo controladopor ponteciometro

1.- Mueve un servo según una  determinada entrada analógica. Mediante un joystick o un dispositivo que cuente con un  potenciómetro podemos controlar el movimiento de un servo. 

int val;                     //introducimos la variable val
#include <Servo.h>
Servo servo;
int pot = 3;  //entrada analógica del potenciometro
void setup() {
  Serial.begin(9600);
  servo.attach(6);
}
void loop() {
  int valorpot= analogRead(pot);
  val=map(valorpot,0,1023,0,180); //el valor de ""val" ira variando según varie el valor del potenciometro
  Serial.println(val); //hacemos que nos muestre el angulo de giro en el monitor
  delay(500);
  servo.write(val);
  delay(100);
}

Así conseguiriamos que el servomotor giré exactamente el ángulo que deseemos mediante un controlador, el cual es en este caso en potenciómetro.

viernes, 22 de marzo de 2019

Limpiaparabrisas

1.- Modifica el programa para que el LIMPIAPARABRISAS se mueva más lentamente  cuando se mueva en un sentido y más rapidamente en el otro. 

#include <Servo.h>     
#define pinServo 9   
Servo miservo;         
int pos=0;                 
void setup() {
    miservo.attach(pinServo);        //declaramos la salida del sevo
}
void loop() {
    for (pos=0; pos<=170; pos=pos+1); {
       miservo.write(pos);                     //movemos el servo en un sentido
       delay(800);
    }
    for (pos=170; pos>=10; pos=pos-70); {
       miservo.write(pos);                   //aumentamos el posicionamiento para aumentar la velocidad
       delay(700);
    }
}

Movimiento de Servo Simple

Actividades para tomar contacto con las funciones mas simples de los servomotores