Diferencia entre revisiones de «Bounce»
De ArduWiki
(→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
Contenido
Descripción
La librería Bounce2.h de Thomas Frefericks...
Nota: Para saber mas del efecto Rebote.
Placas aplicables
Sintaxis
Métodos
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