Páginas

jueves, 26 de febrero de 2015

Arduino Uno. Contador de pulsaciones

Hola

Siguiendo con mis prácticas sobre Arduino Uno, ahora explicaré como he montado un contador de pulsaciones. Se trata de programar Arduino para que cada vez que se pulse un botón se incremente un contador de pulsaciones y se vayan encendiendo hasta tres led. En la cuarta pulsacion se resetea el contado y se apagan todos los leds.

El montaje es:



El circuito es:



El código es:

/*
CUARTO EJERCICIO 2015-02-26

Finalidad. Se trata de montar un contador de pulsaciones con un
boton y tres led. Cuando se pulse una vez se encendera el primer
led, cuando se pulse dos veces se encendera el segundo led, cuando
se pulse una tercera vez se encendera el tercer led y cuando se
pulse una cuarta vez se apagaran todos los leds reinicindose el ciclo.

*/

//Vamos a colocar la entrada del boton en el pin 10
const int BOTONPIN10 =  10;

//Vamos a colocar los led en las salidas 11, 12 y 13
const int LEDPIN11 =  11;
const int LEDPIN12 =  12;
const int LEDPIN13 =  13;

//Variable que controla el numero de leds encencidos
int numled=0;

//Variables que controlan el estado del boton para evitar rebotes
int estadoBoton=0;
int estadoBotonAnterior=0;

void setup() {
  // Inicializamos el pin del boton como entrada
  pinMode(BOTONPIN10, INPUT);
  // Inicializamos los tres pin de los led como salidas
  pinMode(LEDPIN11, OUTPUT);
  pinMode(LEDPIN12, OUTPUT);
  pinMode(LEDPIN13, OUTPUT);
  //Iniciamos comunicacion con puerto serie del PC
  //para monitorizar las pulsaciones
  Serial.begin(1200);
}

void loop(){

  //Leemos el boton
  estadoBoton = digitalRead(BOTONPIN10);
 
  //Vemos si ha cambiado el estado del boton
  if(estadoBoton!=estadoBotonAnterior){
    //Si el estado ha cambiado incrementamos el numero de leds encendidos
    if (estadoBoton==HIGH){
       numled++;
    }
  }
 
  //Cambiamos el estado anterior del boton
  estadoBotonAnterior=estadoBoton;
 
  //Monitorizamos el estado de los botones y el numero de leds
  Serial.print(estadoBoton);
  Serial.print("-");
  Serial.print(estadoBotonAnterior);
  Serial.print("-");
  Serial.print(numled);
  Serial.print("\n");

  //Encendemos los leds necesarios segun el valor de numled
  if (numled>=0){
    if (numled==1){
      //encendemos el primer led
      digitalWrite(LEDPIN11, HIGH);
    } else if (numled==2){
      //encendemos el primer y el segundo led
      digitalWrite(LEDPIN11, HIGH);
      digitalWrite(LEDPIN12, HIGH);
    } else if (numled==3){
      //encendemos los tres leds
      digitalWrite(LEDPIN11, HIGH);
      digitalWrite(LEDPIN12, HIGH);
      digitalWrite(LEDPIN13, HIGH);
    } else {
      //Apagamos todos los leds
      digitalWrite(LEDPIN11, LOW);
      digitalWrite(LEDPIN12, LOW);
      digitalWrite(LEDPIN13, LOW);
      numled=0;
    }
  }
}

Un video del programita funcionando:



Eso es todo, ya veremos qué se nos ocurre mañana

Un saludo

No hay comentarios:

Publicar un comentario