/* * contadordepulsos.pde * * Contador de dos dígitos de 00 a 99 * * Cada vez el pin de entrada va de ALTO a BAJO, el pin de salida * es basculado de ALTO a BAJO o de BAJO a ALTO. Hay un retraso * mínimo entre basculados para evitar los rebotes del circuito. * * Fecha: 30/08/10 * Autor: V. Garcia * */ int switchPin = 8; // switch se conecta al pin 8 int ledPin = 2; // el LED se conecta al pin 2 int val; // variable para lectura del estado del pin int val2; // variable para leer el estado delayed/debounced int botonStado; // variable para mantener el estado del botón int buttonCounter =0 ; // contador para el número de pulsos de botón int lightMode = 0; // Esta la luz EN o AP void setup() { pinMode(switchPin, INPUT); // pone el pin switch como entrada pinMode(ledPin, OUTPUT); Serial.begin(9600); // Comunicación serie puesta a 9600bps botonStado = digitalRead(switchPin); // lee el estado inicial // buttonCounter = 92; // lo uso para saltarme los 91 primeros. Despues se quita } void loop(){ val = digitalRead(switchPin); // lee el valor de entrada y almacénlo en val delay(10); // 10 milisegundos son una cantidad de tiempo buena val2 = digitalRead(switchPin); // lee la entrada otra vez para comprobar saltos if (val == val2) { // asegúrar que conseguimos 2 lecturas constantes if (val != botonStado) { // el estado de botón ha cambiado! if (val == LOW) { // compruebe si el botón es presionado buttonCounter = buttonCounter + 1 ; // if (lightMode == 0) { // esta la luz AP? lightMode = 1; // conecta la luz! digitalWrite(ledPin, HIGH); } else { lightMode = 0; // apaga la luz! digitalWrite(ledPin, LOW); } Serial.print("Número de pulsaciones: "); // if (buttonCounter <10) Serial.print("0"); // Serial.println(buttonCounter, DEC); // } if (buttonCounter >= 99){ buttonCounter = 0; } } botonStado = val; // guardar el nuevo estado en la variable } }