« Sobreescribir sectores de disco defectuosos para forzar a que se reparen Un RAID 1 te ayuda a salvar tu vida digital »
Posted on: Monday, June 7, 2010 at 23:13 pm
electrónica.
Puedes seguir las respuestas de esta entrada a traves de l feed RSS 2.0.
Puedes dejar una respuesta, o trackback desde tu propio sitio.
Arduino + botón + debounce = ¡mi primer sketch!
June
7
Lo que se puede ver en el dibujo es el montaje que he realizado para probar este pequeño “bosquejo” de código para Arduino. Con este código se controla el estado de un led mediante la pulsación de un botón. Para evitar el indeseado efecto rebote (debounce en inglés) también está añadido un contador que hace que solo cambie el estado del led si se mantiene estable la pulsación durante al menos 200 milisegundos.
Como demostración de su funcionamiento he aquí un muy corto vídeo:
Y por supuesto, el código de la aplicación:
/*
Este es un ejemplo de código para la lectura de la pulsación de un botón que
controla el encendido y apagado de un led. Tiene incorporado un "debouncer"
que no procesa la pulsación hasta que está estable durante una cantidad de
tiempo predeterminada.
*/
const int buttonPin = 11; // pin del pulsador
const int ledPin = 13; // pin del led
int ledStatus = false; // almacena el estado del led. Por defecto está apagado
int buttonState = 0; // estado actual del botón
int lastButtonState = 0; // estado del botón tras el filtrado del debounce
int lastButtonState2 = LOW; // estado anterior para el filtrado del debounce
int reading; // para la lectura del pin del pulsador
long lastDebounceTime = 0; // contador para el debounce
long debounceDelay = 200; // tiempo que tiene que mantenerse estable la
// señal de la pulsación
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
// lectura del pin
reading = digitalRead(buttonPin);
// ver si ha cambiado con respecto al estado anterior
if (reading != lastButtonState2) {
// resetear el contador para el debounce
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// la señal se ha mantenido estable más del tiempo establecido
// por lo tando se puede cambiar el valor
buttonState = reading;
}
// almacenar la lectura para la siguiente comprobación
lastButtonState2 = reading;
// comparar el estado del pulsador con el estado anterior
if (buttonState != lastButtonState) {
// si el estado ha cambiado comprobar si ha sido porque ha sido pulsado
// y no porque ha sido soltado
if (buttonState == LOW) {
// el botón ha sido presionado, cambiamos el valor del led
ledStatus = !ledStatus;
}
// almacenar el nuevo valor del botón
lastButtonState = buttonState;
}
// actualizar el estado del led de acuerdo a la variable
if (ledStatus) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
Fuente: arduino.cc examples
Posted on: Monday, June 7, 2010 at 23:13 pm
electrónica. Puedes seguir las respuestas de esta entrada a traves de l feed RSS 2.0.
Puedes dejar una respuesta, o trackback desde tu propio sitio.











Bravo!!! enhorabuena churri
Lo único que me suena de la instalación es la placa con puntitos, para colocar las resistencias que utilizábamos en las prácticas de Electrotécnia en el CPS
[Responder]
sucotronic Reply:
June 9th, 2010 at 16:31 pm
@Judith, jaja, esa plaquita blanca se llama ‘protoboard’ y se usa normalmente para ensamblar prototipos. Una vez que se tienen probados se puede hacer una placa definitiva soldada.
[Responder]