luzes3 — Arduino Mega simulation

cromo2

An interactive Arduino Mega circuit simulation you can run free in your browser on Velxio, by conexaodharma.

Components

Sketch code

#include <Wire.h>

#include "config.h"
#include "leds.h"
#include "timer.h"
#include "display.h"
#include "encoder.h"

//==================================================
// Variáveis globais
//==================================================

static bool ultimoStart = HIGH;
static unsigned long debounceStart = 0;
static unsigned long ultimoDisplay = 0;

//==================================================
// SETUP
//==================================================

void setup()
{
    Serial.begin(115200);

    Wire.begin();

    Serial.println();
    Serial.println("================================");
    Serial.println(" CROMOTERAPIA V2");
    Serial.println("================================");

    // Scanner I2C
    Serial.println("Scanner I2C");
initLEDs();
initTimer();
initEncoder();

    pinMode(startButton, INPUT_PULLUP);

initDisplay();

    for (byte i = 1; i < 127; i++)
    {
        Wire.beginTransmission(i);

        if (Wire.endTransmission() == 0)
        {
            Serial.print("Encontrado em 0x");

            if (i < 16)
                Serial.print("0");

            Serial.println(i, HEX);
        }
    }

    Serial.println("Fim Scanner");
    Serial.println();
/*
    Serial.println("PASSO 1");
    initLEDs();

    Serial.println("PASSO 2");
    initTimer();

    Serial.println("PASSO 3");
    initEncoder();

    Serial.println("PASSO 4");
    initDisplay();
*/
    Serial.println("PASSO 5");
    showSplash();

    Serial.println("Sistema pronto.");
}

//==================================================
// LOOP
//==================================================

void loop()
{
    //------------------------------------------------
    // Encoder
    //------------------------------------------------
    updateEncoder();




    //------------------------------------------------
    // Botão START
    //------------------------------------------------

    bool estado = digitalRead(startButton);



    if (millis() - debounceStart > 80)
    {
        if (ultimoStart == HIGH && estado == LOW)
        {
            debounceStart = millis();


            if (sessionFinished())
            {
                Serial.println("Nova sessão");

                initTimer();
            }

            else if (sessionRunning())
            {
                Serial.println("Pausa");

                pauseTimer();
            }

            else
            {
                if (getRemainingSeconds() ==
                    (uint32_t)getSessionMinutes() * 60)
                {
                    Serial.println("Sessão iniciada");

                    startTimer();
                }
                else
                {
                    Serial.println("Continua");

                    resumeTimer();
                }
            }
        }
    }

    ultimoStart = estado;

    //------------------------------------------------
    // Timer
    //------------------------------------------------

    updateTimer();
    //Serial.

More projects by conexaodharma