Diferencia entre revisiones de «Bounce»

De ArduWiki
Saltar a: navegación, buscar
(Métodos)
(Ejemplo)
Línea 34: Línea 34:
  
 
== Advertencias ==
 
== Advertencias ==
 +
 +
== Ejemplo 1 ==
 +
El ejemplo basico, un solo pulsador en pin 2.
 +
 +
<syntaxhighlight lang="c++">
 +
#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
 +
  }
 +
}
 +
</syntaxhighlight>
 +
 +
== Ejemplo 2 ==
 +
En este ejemplo configuramos 8 pines.
 +
 +
<syntaxhighlight lang="c++">
 +
#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
 +
      }
 +
  }
 +
}
 +
</syntaxhighlight>
  
 
== Ejemplo ==
 
== Ejemplo ==
 +
Muestra los milisegundos entre dos pulsaciones.
 +
 
<syntaxhighlight lang="c++">
 
<syntaxhighlight lang="c++">
 +
#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(); 
 +
  }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Revisión del 00:22 3 may 2019

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

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