yo tengo hecho el proyecto del boton de facebook que cuenta los pulsos, al principio tenia los mísmos problemas que tu, (confieso que no he leido tu código) pero este funciona, solo tienes que implementar el led y quitar la pantalla
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int boton = 8;
int valor=0;
int contador=0;
int estadoanteriorboton=0;
void setup() {
pinMode(boton,INPUT);
digitalWrite(boton,HIGH);
lcd.begin(16, 2);
lcd.setCursor(0, 1);
lcd.print("People like this!");
}
void loop() {
lcd.setCursor(0, 1);
lcd.print("People like this!");
valor=digitalRead(boton);
if(valor!=estadoanteriorboton){
if(valor==1){
contador++;
lcd.setCursor(5 , 0);
lcd.print(contador);
lcd.print("!!");
}
}
estadoanteriorboton=valor;
}
Ya he leido tu codigo, el problema es que no compruebas el estado anterior del pin, así que si tu loop{ } tarda en completarse 5 milisegundos te va a contar pulsaciones a patadas...
de todas maneras el contador es un ejemplo que está en el playground si no me equivoco