Aplicar Debounce al sensor tactil TTP223B

Hola! necesito si por favor me pueden ayuda, porque no logro entender en donde esta el error , la idea es que cuando se toca el sensor se encienda el led y el problema es que cuando toco el sensor la luz se enciende y no se apaga cuando lo vuelvo a tocar, esto mismo me ocurre a la inversa. Estoy
trabajando con arduino uno y con un sensor touche TTP223B

#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);
RTC_DS3231 RTC;

int identificador = 0;
int led = 13;
int buttonPin = 7;
int buttonState = LOW;
int lastButtonState = LOW;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;

void setup() {
pinMode(led, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
Wire.begin(); // Inicia el puerto I2C
RTC.begin(); // Inicia la comunicaci¢n con el RTC
RTC.adjust(DateTime(DATE, TIME)); // Establece la fecha y hora (Comentar una vez establecida la hora)
//el anterior se usa solo en la configuracion inicial
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
lcd.init();
lcd.backlight();
lcd.clear();
}

void loop() {
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC

Serial.print(now.year(), DEC); // A§o
Serial.print('/');
Serial.print(now.month(), DEC); // Mes
Serial.print('/');
Serial.print(now.day(), DEC); // Dia
Serial.print(' ');
Serial.print(now.hour(), DEC); // Horas
Serial.print(':');

Serial.print(now.minute(), DEC); // Minutos
Serial.print(':');
Serial.print(now.second(), DEC); // Segundos
Serial.println();
lcd.setCursor(0, 0);
lcd.print("D:");
lcd.print(now.year(), DEC);
lcd.print("/");
lcd.print(now.month(), DEC);
lcd.print("/");
lcd.print(now.day(), DEC);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print("T: ");
lcd.print(now.hour(), DEC);
lcd.print(":");
lcd.print(now.minute(), DEC);
lcd.print(":");
lcd.print(now.second(), DEC);
delay(1000); // La informaci¢n se actualiza cada 1 seg.
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");

int reading = digitalRead(buttonPin);

if (reading != lastButtonState) {
lastDebounceTime = millis();
}

if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;

  if (buttonState == HIGH) {
    if (identificador == 0) {
      digitalWrite(led, HIGH);
      identificador += 1;
    } else {
      digitalWrite(led, LOW);
      identificador -= 1;
    }
  }
}

}

lastButtonState = reading;
}

Su publicacion se MUEVE a su ubicacion actual ya que es mas adecuada.

El error está en no respetar las normas.
No es tu primer posteo y sabes que tienes que usar etiquetas de código y formatearlo.
Y por cierto, esto es doble posteo porque tienes un tema similar abierto.

Hazlo simple y usa una librería como OneButton o similar.

Muchas gracias, verifico tu comentario

Moderador:
Por favor, lee las Normas del foro
Si posteas en el foro en inglés usa idioma inglés para expresarte.
Si escribes en español debes usar el foro Arduino en español.
Edita también tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en <CODE/>

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.