/** ****************************************************************************************
* \mainpage 
*
* @brief Classe led e pulsanti Versione base 2 aggiunto anti bounce per la pressione e 
* implementato il task per la lettura dello stato (tolto il codice bloccante)
* https://wokwi.com/projects/357736086306366465
* 
* @author Filippo Bilardo
* @date 26/02/23
* @version 1.0 26/02/23 Versione iniziale
*/
//------------------------------------------------------------------------------------------
//=== INCLUDES =============================================================================
//------------------------------------------------------------------------------------------
#include "LED.h"
#include "Pulsante.h"

//------------------------------------------------------------------------------------------
//=== CONSTANTS ============================================================================
//------------------------------------------------------------------------------------------
#define LED1_PIN 27
#define LED2_PIN 26

//------------------------------------------------------------------------------------------
//=== LOCAL VARIABLES ======================================================================
//------------------------------------------------------------------------------------------
LED led1(LED1_PIN); // creiamo un'istanza della classe LED su pin 27
LED led2(LED2_PIN); // creiamo un'istanza della classe LED su pin 26
Pulsante P1(25);
Pulsante P2(33);

//------------------------------------------------------------------------------------------
//=== SETUP ================================================================================
//------------------------------------------------------------------------------------------
void setup(void) {
  Serial.begin(115200); // Inizializza la comunicazione seriale
  led1.accendi();
  led2.test(0);
  led1.spegni();
}

//------------------------------------------------------------------------------------------
//=== MAIN LOOP ============================================================================
//------------------------------------------------------------------------------------------
void loop(void) {
  P1.task();
  P2.task();
  P1.test(4);
  P2.test(4);
    
  if(P1.press()) {
    led1.accendi();
  } else {
    led1.spegni();
  }
  
  if(P2.click()) {
    led2.inverti();
  }

  delay(10);
}