/* esempio_10_serial
 * Scketch di esempio
 */

// Il LED collegato esternamente connesso al piedino DIGITALE 3.
#define EXTLEDPIN  3

/* Questa funzione viene chiamata per impostare la scheda, una sola volta
 */
void setup () {
  pinMode(EXTLEDPIN, OUTPUT);  // Imposta il piedino del LED esterno in uscita
  Serial.begin(9600);          // Inizializzo la seriale a 9600 baud (bit per secondo)
}

/* Questa funzione viene ripetuta all'infinito
 */
void loop () {
  int i;  // Definisce (crea) la variabile per il contatore
  /* 1) Inizialmente pongo i (il nostro contatore) ad 1
   * 2) Controllo che i sia inferiore a 255, altrimenti termino il ciclo
   * 3) Eseguo le azioni tra graffe
   * 4) Pongo i ad i+1 e ripeto da 2 
   */
  Serial.print("Inizio ");           // Stampo "Inizio" senza andare a capo
  for (i = 1; i < 255; i = i+1) {
    analogWrite(EXTLEDPIN, i);       // Imposta il LED esterno alla luce indicata da i
    delay (1);                       // Attende un millisecondo
  }
  Serial.print(" Acceso");         // Stampo " Acceso" sulla stessa riga di "Inizio"
  digitalWrite(EXTLEDPIN, HIGH);   // Accende il LED esterno
  delay (256);                     // Attende 1/4 di secondo
  Serial.print(" Spengo");         // Stampo " Spengo" sulla stessa riga di "Inizio acceso"
  /* 1) Inizialmente pongo i (il nostro contatore) a 254
   * 2) Controllo che i sia superiore a 0, altrimenti termino il ciclo
   * 3) Eseguo le azioni tra graffe
   * 4) Pongo i ad i-1 e ripeto da 2 
   */
  for (i = 254; i > 0; i = i-1) {
    analogWrite(EXTLEDPIN, i);     // Imposta il LED esterno alla luce indicata da i
    delay (1);                       // Attende un millisecondo
  }
  digitalWrite(EXTLEDPIN, LOW);    // Spegne il LED esterno
  Serial.println(" Fine");         // Stampo " Fine" sulla stessa riga di "Inizio Acceso Spengo", poi vado a capo
  delay (600);                     // Attende 3/4 di secondo
}


