Go Down

Topic: resetear contador  (Read 1 time) previous topic - next topic

soniabelp

Oct 29, 2017, 02:29 am Last Edit: Oct 29, 2017, 11:01 pm by surbyte Reason: Errores o códigos con etiqueta de códigos </>
Buenas noches, estoy en un proyecto en el cual tengo que contar los pulsos de un pluviometro, estos los estoy tomando con una funcion attachInterrupt , pero no puedo lograr resetar el contador despues de una hora. Alguien que me pudiera guiar. Por favor este es mi codigo
Code: [Select]
#include <Wire.h>                   // Incluimos la libreria i2c
unsigned char lectura=0;            // Establecemos una variable global, y la seteamos en cero
const int intPin = 2;
//variables pluviometro:
const int timeLimite = 150;
volatile int pluvioContador = 0;
int contador = 0;
long timeContador = 0;
float canLluvia =0;
void setup()
{
 Wire.begin(1);                    // Nos asignamos el numero 1 como esclavos (de ser maestro va vacio esto)
 Serial.begin(9600);               // Iniciamos el serial 9600 baudios, para testear
  pinMode(intPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(intPin), debounceCount, CHANGE);
 Wire.onRequest(respuestaEvento);  // Al activarse el evento de peticion, se ejecuta la funcion respuestaEvento
 Wire.onReceive(recibidoEvento);   // Al activarse el evento de lectura, se ejecuta la funcion recibidoEvento  
}

void loop()
{
lectura = pluvioContador;  
}

void respuestaEvento()            // Evento de peticion se activa cuando un master nos pide que le enviemos algun dato
{
 Wire.write(lectura);            // Enviamos el resultado de la lectura al maestro que lo solicito
 Serial.println(lectura);        // Enviamos el resultado por el puerto serie para testear
}

void recibidoEvento(int howMany)  // Evento de recpcion
{
 unsigned char pedido;
 while( Wire.available())        // Leemos hasta que no haya datos, osea el 1 que va a enviar el maestro
 {
   pedido = Wire.read();         // Leemos el 1
   Serial.println(pedido);       // Imprimimos el 1 por serial para testear  
 }
}
void debounceCount()
{ if (millis() > timeContador + timeLimite)
{
pluvioContador++;
timeContador = millis();
}
}

soniabelp

Buenas noches, estoy en un proyecto en el cual tengo que contar los pulsos de un pluviometro, estos los estoy tomando con una funcion attachInterrupt , pero no puedo lograr resetar el contador despues de una hora. Alguien que me pudiera guiar. Por favor este es mi codigo
Code: [Select]

#include <Wire.h>                   // Incluimos la libreria i2c
unsigned char lectura=0;            // Establecemos una variable global, y la seteamos en cero
const int intPin = 2;
//variables pluviometro:
const int timeLimite = 150;
volatile int pluvioContador = 0;
int contador = 0;
long timeContador = 0;
float canLluvia =0;
void setup()
{
  Wire.begin(1);                    // Nos asignamos el numero 1 como esclavos (de ser maestro va vacio esto)
  Serial.begin(9600);               // Iniciamos el serial 9600 baudios, para testear
   pinMode(intPin, INPUT_PULLUP);
   attachInterrupt(digitalPinToInterrupt(intPin), debounceCount, CHANGE);
  Wire.onRequest(respuestaEvento);  // Al activarse el evento de peticion, se ejecuta la funcion respuestaEvento
  Wire.onReceive(recibidoEvento);   // Al activarse el evento de lectura, se ejecuta la funcion recibidoEvento  
}

void loop()
{
 lectura = pluvioContador;  
}

void respuestaEvento()            // Evento de peticion se activa cuando un master nos pide que le enviemos algun dato
{
  Wire.write(lectura);            // Enviamos el resultado de la lectura al maestro que lo solicito
  Serial.println(lectura);        // Enviamos el resultado por el puerto serie para testear
}

void recibidoEvento(int howMany)  // Evento de recpcion
{
  unsigned char pedido;
  while( Wire.available())        // Leemos hasta que no haya datos, osea el 1 que va a enviar el maestro
  {
    pedido = Wire.read();         // Leemos el 1
    Serial.println(pedido);       // Imprimimos el 1 por serial para testear  
  }
}
void debounceCount()
{
// aqui quiero implementar un bucle que reinicie cada 24 horas
//PROBLEMITA
if (millis() > timeContador + timeLimite)
 {
 pluvioContador++;
 timeContador = millis();
 }
}

Lucario448

¿No se te ocurrió hacer el reinicio del contador desde el loop?. Ya que en esa parte básicamente no haces nada, que lo ejecute por ahí.

Go Up