Contabilizar horas, minutos y segundos de un pin activo del Arduino

HardwareSerial &pc = Serial;
const byte pLED = 13;
unsigned int totalSeconds=0, hours, minutes, seconds;


void setup()
{
    pinMode(pLED, OUTPUT);

    pc.begin(9600);
    while(!pc);
    pc.println("Contador de tiempo de LED 13 activo (H:M:S)");
}

void loop()
{
    static unsigned long tNow      = 0;
    static unsigned long tPrevious = 0;

    tNow = millis();

    if( digitalRead(pLED) && tNow - tPrevious >= 1000 )
    {
        tPrevious     = tNow;

        totalSeconds += 1;
        hours         = totalSeconds / 3600;
        minutes       = totalSeconds % 3600 / 60;
        seconds       = totalSeconds % 60;
    }

    pc.print(hours < 10 ? "0" : "");
    pc.print(hours);
    pc.print(":");
    pc.print(minutes < 10 ? "0" : "");
    pc.print(minutes);
    pc.print(":");
    pc.print(seconds < 10 ? "0" : "");
    pc.println(seconds);
    delay(1000);
}
Anuncios

Acerca de giltesa

Desarrollador de software, y hardware a pequeña escala. Aficionado al ciclismo, series y películas.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: