Arduino condator de pulsos con resisitivo

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.");
}
}

Espero me puedan ayudar gracias

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.");
}
1 Like

@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.");
}

Saludos

1 Like

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

No te puedo ayudar con Xbee, no se ni lo que es. :laughing:

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... :upside_down_face:).

Saludos

PD: Ahora ya sé lo que es XBee. :wink:

1 Like

Yo tampoco tengo ni idea pero tienes muchos tutoriales en la red este parece interesante TUTORIAL.
Saludos.

1 Like

Muchas gracias a los 2 andamos en investigacion
:wink:
Ya andamos en el acomodo del programa

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