Bounce

De ArduWiki
Saltar a: navegación, buscar

Descripción

La librería Bounce2.h de Thomas Frefericks...

Nota: Para saber mas del efecto Rebote.


Placas aplicables

Sintaxis


Métodos

Metodos disponibles en libreria Bounce2.h
Método Descripción
Bounce(pin, pausa) Instancia el objeto
attach(pin) Asigna el pin
interval(pausa) Asigna el tiempo en milisegundos
update() Debido a que Bounce no usa interrupciones, debe "actualizar" el objeto antes de leer su valor y debe hacerlo con la mayor frecuencia posible (eso significa incluirlo en su bucle ()). El método update() actualiza el objeto y devuelve verdadero (1) si el estado del pin cambia. Falso (0) si no. Solo llame a update() una vez por loop().
read() Lee el estado del pin luego de update().
fell() Devuelve true si las transiciones de señal del pin es de HIGH a LOW (falling).
rose() Devuelve true si las transiciones de señal del pin es de LOW a HIGH (rissing).

Comentarios

Advertencias

Ejemplo 1

El ejemplo basico, un solo pulsador en pin 2.

#include <Bounce2.h>
#define PIN 2
#define LED 13
Bounce rebote = Bounce();   //Instancia objeto

void setup() {
   pinMode(PIN, INPUT_PULLUP);
   rebote.attach(PIN);      //Cuando ya esta definido el pin
   rebote.interval(5);
   pinMode(LED, OUTPUT);
}

void loop() {
   rebote.update();          //Actualiza
   bool valor = rebote.read();
   if (valor) {
      digitalWrite(LED, LOW);    //Apaga LED
   }else{
      digitalWrite(LED, HIGH);   //Prende LED
   }
}

Ejemplo 2

En este ejemplo configuramos 8 pines.

#include <Bounce2.h>
#define LED 13
#define NUM 8
const byte PULSADOR[NUM] = {2, 3, 4, 5, 6, 7, 8, 9};
Bounce * boton = new Bounce[NUM];              //Instancia todos los pines

void setup() {
   for (byte i=0; i<NUM; i++) {
      boton[i].attach(PULSADOR[i], INPUT_PULLUP);
      boton[i].interval(25);
   }
   pinMode(LED, OUTPUT);
}

void loop() {
   for (byte i=0; i<NUM; i++)  {
      boton[i].update();                         //Actualiza
      if (boton[i].fell()) {
         digitalWrite(LED, !digitalRead(LED));   //Conmuta LED
      }
   }
}

Ejemplo 3

Muestra los milisegundos entre dos pulsaciones.

#include <Bounce2.h>

#define BOTON 2
Bounce rebote = Bounce(); 
unsigned long tiempo = 0;

void setup() {
  Serial.begin(57600); 
  pinMode(BOTON, INPUT_PULLUP);
  rebote.attach(BOTON);
  rebote.interval(5);  
}

void loop() { 
   rebote.update();
   if (rebote.fell()) {;
      Serial.println(millis()-tiempo);
      tiempo = millis();  
   }
}

Vea también


Referencias externas