Hola buenas
Tengo un proyecto con un un sensor resistivo que al detectarme mas de 80 de presion me mande un pulso y un contador lo vaya contabilizando todo con salida a lcd
Todo bien pero el problema es que no puedo hacer que sea 1 por 1 el contador se salta numeros y con while tampoco lo logro
Alguien podria ayudarme
Int contador =0;
Int AnalogPin=0;
Int ResRead;
#include <LiquidCrystal.h>
LiquidCrystal lcd(7,6,5,4,3,2);
void setup(){
lcd.begin(16,2);
}
void loop(){
ReasRead=analogRead(AnalogPin);
Int estado =ResRead;
If(estador>80)}
Contador ++;
lcd.setCursor(0,0);
lcd.print("se han apretador ");
lcd.setCursor (0,1);
lcd.print(contador);
lcd.print("grapas.");
}
}
Hola.
Aunque sea un elemento resistivo creo que tienes el mismo problema de rebotes que tiene un boton, el codigo es tan rapido que en la realidad no se salta numeros , solo es que no te da tiempo a verlos. Ponle un delay de entre 100 y 200 dentro del If o usa otro sistema de antirrebote por software que encuentres por la red que hay muchos.
Saludos.
PD: O si quieres usar while :
#define AnalogPin A0
int contador = 0;
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
}
void loop() {
while (analogRead(AnalogPin) < 80) {} // Espera a una nueva presion
while (analogRead(AnalogPin) > 80) {} // Espera a que pase la presion
// Cuenta e imprime
contador ++;
lcd.setCursor(0, 0);
lcd.print("se han apretado ");
lcd.setCursor (0, 1);
lcd.print(contador);
lcd.print("grapas.");
}
@ayaxstr Ese código tal como está ni siquiera compila porque está lleno de errores que espero sean de tipeo al cargarlo aquí.
El problema es el que te señala @gonpezzi , el código es tan rápido (algo que la mayoría olvida) que en lo que tardas en levantar la herramienta ya la leyó infinidad de veces.
Una solución posible
int contador =0;
int AnalogPin=0;
int ResRead;
bool yaConto = false;
#include <LiquidCrystal.h>
LiquidCrystal lcd(7,6,5,4,3,2);
void setup(){
lcd.begin(16,2);
}
void loop(){
ResRead=analogRead(AnalogPin);
// Int estado =ResRead; // no tiene sentido usar otra variable
if (yaConto == false) {
If (ResRead > 80) {
contador ++;
yaConto = true;
}
else { // si yaConto es true
if (ResRead < 75) { // dejo 5 de margen por los errores de la medición
yaConto = false
}
}
lcd.setCursor(0,0);
lcd.print("se han apretado ");
lcd.setCursor (0,1);
lcd.print(contador);
lcd.print("grapas.");
}
Muchas gracias quedo perfecto solo tuve que cambiar unas resistencias y quedo perfecto
De pura casualidad sabras ocupar xbee?
Lo que trato es de dividir el programa para que uno haga la funcion de medir la fuerza y al final mande un pulso y del otro lado mande la señal para contabilizar
Muchas gracias y perdon por los errores de escritura apenas voy aprendiendo a usar la plataforma
Muchas gracias por la ayuda de igual forma jalo pero para lo parametros que necesitaba quedo mejor la ayuda del otro compañero
Al igual si alguno podria ayudarme con el xbee se los agradeceria mucho
Ten en cuenta que tanto @gonpezzi como yo hicimos algo rápido que te sirviese de guía, para hacer lo que quieres hay que replantear todo el código (al menos uno de ellos... ).