domingo, 12 de julio de 2015

Código del movimiento de un servomotor en diferentes ángulos con botones

#include <Servo.h> // Librería para servos
Servo servo1; // Creamos un objeto de tipo servo
#define button 9 // definimos un primer botón
#define button2 7 // definimos un segundo botón
// Si da problemas el código, poner las var de los botones en MAYUS

void setup() {

 servo1.attach(8); // pin del servomotor en Arduino
 pinMode(button, INPUT); // se declara el botón como componente de entrada
 pinMode(button2, INPUT); // se declara el otro botón como componente de entrada
}

void loop () {

 int buttonstate1 = digitalRead(button);  // Creamos dos estados para los dos botones
 int buttonstate2 = digitalRead(button2);
if(buttonstate1 == true){ //si el estado del primer botón es true o encendido (pulsado), entonces...

  servo1.write(180); // mover el servomotor 180 grados
  delay(1000);  // esperamos un segundo
}

if(buttonstate2 == true){ // si el estado del segundo botón es true o encendido (pulsado), entonces...

servo1.write(90); //mover el servomotor 90 grados
delay(1000); // esperamos un segundo
}




}

5 comentarios:

  1. Hola, muy buena explicación. pero quiero preguntarte algo...es que quiero hacer que con cada botón se controle un bucle del servo, ose si aprieto boton 1 que el servo gire de 45° a 180° y de nuevo a 45° infinitamente y si aprieto el segundo boton de 45° a 90° y así, no se si me puedas ayudar. De ante mano gracias! Mi correo es: elquiquin400@hotmail.com

    ResponderEliminar
  2. Hola Julia soy nuevo en esto haber si me puedes ayudar.
    Quiero hacer servir los servomotores para controlar los desvios en una maqueta de tren mediante pulsador puedes ayudarme. Mandame un gmail a josepmanelgil3@gmail.com

    ResponderEliminar
  3. Julia, me gusto tutorial en youtube. Muy simple de entender. Solo tengo una pregunta. Como modificas el codigo si es que quieres que el servo rote completamente de zero a, por ejemplo, 180 grados presionando el boton una vez sin tener que mantenerlo presionado (momentary push button), e igualmente, para regresar a su posicion inicial (de 180 a zero) presionando una sola vez (sin mantener la presion) un segundo boton. El codigo que muestras permite rotar el servo mientras el boton es presionado unicamente.
    Gracias.

    Leo

    ResponderEliminar
    Respuestas
    1. Buenas Leo,
      la solución (creo) puede estar en utilizar un condicional if y a su vez crear un contador. Tengo un tutorial que explica esto último: https://www.youtube.com/watch?v=A0KBrBC-434

      Lo bueno del contador es que, como bien dices, no hay que mantener pulsado el botón.
      No dudes en preguntarme cualquier otra cosa.

      Un saludo,

      Julia

      Eliminar
  4. Julia, me gusto tutorial en youtube. Muy simple de entender. Solo tengo una pregunta. Como modificas el codigo si es que quieres que el servo rote completamente de zero a, por ejemplo, 180 grados presionando el boton una vez sin tener que mantenerlo presionado (momentary push button), e igualmente, para regresar a su posicion inicial (de 180 a zero) presionando una sola vez (sin mantener la presion) un segundo boton. El codigo que muestras permite rotar el servo mientras el boton es presionado unicamente.
    Gracias.

    Leo

    ResponderEliminar