Cuando postees en un foro se ordenado por favor. Usa el autoformato del IDE para presentar la informacón debidamente identada.
Tienes varios errores en tu código.
El primero es de hardware seguramente.
No se si lo he simulado correctamente creo que no, pero si no es el caso, usa una Resistencia contra VCC de tal manera que cuando la tension caiga a 0 como esperas te de una cuenta
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define fsrpin A0
int fsrreading;
int contador = 0;
boolean flag = false;
LiquidCrystal_I2C lcd(0x27, 16, 2);
unsigned long previusMillis;
void setup() {
lcd.begin(16, 2);
lcd.print(" ESTORA");
lcd.setCursor(0, 1);
lcd.print("CUENTA--PERSONAS");
delay(5000);
lcd.clear();
}
void loop() {
char buffer[16];
// Realizar la lectura analogica en A0
fsrreading = analogRead(fsrpin);
if (fsrreading <= 50 && flag) {
lcd.clear();
contador++;
lcd.setCursor(0, 0);
sprintf(buffer, "Pesonas: %3d", contador);
lcd.print(buffer);
flag = false;
previusMillis = millis();
}
if (fsrreading >= 800 && !flag) {
if (millis()-previusMillis > 2000UL){
// si se mantiene por 2 segundos en 800 o mas entonces
// puedo contar de nuevo
flag = true;
}
}
}
Entonces primero no compares con 0, el 0 no siempre se alcanza.
Segundo establece un criterio para que cuando llegue a tu valor no cuente como loco.
Yo te hice algo que mas o menos funciona.
Porque no? SI tenes una R muy grande, la tensión de salida se aproxima a 0V, se aproxima no será 0, pero a los fines prácticos si lo es.
Aca el ejemplo
Vout = [R1 / (R1+R2) ]*5V
Si R2 tiende a infinito o sea Mega Ohms, eso dará un cociente que tiende a 0V.
Si, puede ser, aunque mis calculos indican que para 10M para la celda sin presionar y con una R de 10K a masa, la tensión en el divisor será de 5mV.
Considerando el error del LSB, aunque el valor leído será 1, a veces, podría devolver 0.