¿Como contar pulsos en un tiempo definido en arduino?

Mi problema es el siguiente:
Necesito realizar un contador de pulsos eléctricos en un tiempo definido, he leido que se puede utilizar la función millis() para ejecutar dicho programa en arduino. Pero no logro entenderlo. Quizas alguien con mas experiencia en este ámbito, puede colaborar se los agradeceria demasiado. ...
 
Hace unos días tenía la misma pregunta, he realizado un código que me ha funcionado para hacer el conteo de pulsos en un tiempo determinado mediante interrupciones y la función millis(), pero tengo unos problemas, cuando imprimo en la LCD y se hace el conteo de los pulsos se reescriben los valores del conteo encima del anterior.
Es decir, si cuenta 1, el dos se reescribe encima.

Me gustaría saber cómo actualizo los valores para que no se reescriban.
No sé si me entienden.

Aquí dejo el código.
PHP:
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);// Declaracion de los pines de la LCD

int boton1 = 2;
int p = 0;
int estant = 0;
long temp= 6000; // Tiempo asignado.
long cuentatiempo = 0;
unsigned long tiempo;

void setup() {
  
    pinMode(boton1, INPUT); // Declaracion del pin 2 como entrada
    
    Serial.begin(9600); 
    lcd.begin(16, 2);
    
    lcd.setCursor(0,0);
    lcd.print("Contador de pulsos");
      delay(2000);
      
    lcd.noAutoscroll();
    
    lcd.setCursor(0,1);
    lcd.print("Nicaragua");
      delay(2000); 
    lcd.clear(); 
 
  
    
   attachInterrupt(0, funcionInterrupcion, RISING);
 
   cuentatiempo=millis()+temp;
   
}
void funcionInterrupcion()
{
  p++; // voy sumando los pulsos
  lcd.setCursor(9,0);
  lcd.print(p); //Imprime los pulsos que se cuentan
   delay(500);
}

void loop() 
{
  
   lcd.setCursor(0,0);
   lcd.print("Pulsos: ");
   if (millis()>cuentatiempo) //compruebo si ha transcurrido el tiempo prefijado
   {
      if(p>=1 && p<=5){
    lcd.setCursor(0,1);
    lcd.print("Pulso lento");
  
   }
   if(p>=6 && p<=10){
     lcd.setCursor(0,1);
     lcd.print("Pulso medio");
 
   }
   if(p>10){
     lcd.setCursor(0,1);
     lcd.print("Pulso Rapido");
   } 
  
 p=0; 
 cuentatiempo=millis()+temp; //Reinicio cuentatiempo
}
 
}
 
Última edición por un moderador:
Atrás
Arriba