Analizza il software generato dall’IA e scopri alcune nuove istruzioni

In questo tutorial analizzerai in dettaglio il software realizzato dall’IA per implementare il sistema di allarme relativo al superamento della soglia da parte del valore rilevato dal sensore analogico.



Il codice è riportato per tua comodità nel riquadro seguente.

// Definizione dei pin
const int sensorPin = A0; // Il pin analogico dove è collegato il sensore
const int ledPin = 8;     // Il pin digitale dove è collegato il LED

void setup() {
  pinMode(ledPin, OUTPUT); // Imposta il pin del LED come uscita
  pinMode(sensorPin, INPUT); // Imposta il pin del sensore come ingresso
  Serial.begin(9600); // Inizia la comunicazione seriale a 9600 bps
}

void loop() {
  int sensorValue = analogRead(sensorPin); // Leggi il valore dal sensore
  Serial.print("Valore del sensore: ");
  Serial.println(sensorValue); // Stampa il valore del sensore sulla console seriale

  if (sensorValue > 600) {
    digitalWrite(ledPin, HIGH); // Accendi il LED se il valore del sensore supera 600
  } else {
    digitalWrite(ledPin, LOW); // Spegni il LED se il valore è 600 o meno
  }

  delay(100); // Pausa breve tra le letture
}

Lo sketch contiene la definizione delle due funzioni standard e obbligatorie in Arduino: setup e loop. In testa al programma, fuori dai blocchi delle due funzioni, si trova la definizione di due variabili costanti: sensorPin e ledPin. Il concetto di variabile costante sembrerebbe un ossimoro (è variabile o è costante?) tuttavia è una struttura che viene spesso usata in casi come questo. Si tratta di definire in un punto solo il numero del pin digitale e quello analogico.

Mettendo i valori all’interno di due variabili, è poi possibile usare tali variabili nel codice laddove occorra indicare i rispettivi pin.

Se decidessimo di cambiare il pin a cui vogliamo collegare il sensore o quello a cui vogliamo collegare il LED, sarà sufficiente modificare l’istruzione di assegnazione nelle prime righe del codice senza dover ricercare, e modificare, l’occorrenza del numero di pin in tutto lo sketch.

Poiché in realtà il valore memorizzato in queste variabili non viene modificato dal codice, usiamo la clausola “const” per informare l’IDE Arduino che non si tratta di valori realmente variabili, ma di costanti. Questo potrebbe portare ad una ottimizzazione del codice in linguaggio macchina generato dal compilatore.

La vera istruzione nuova introdotta in questo sketch è la diramazione condizionale del flusso di programma, cioè l’istruzione if .. else ..

Nel video è spiegato il funzionamento.

La sintassi dell’istruzione if è la seguente: dopo la parola if, tra parentesi tonde è riportata una espressione logica, il cui risultato può essere vero oppure falso. Dopo l’espressione logica c’è un primo blocco di codice racchiuso tra parentesi graffe. Se l’espressione ha come risultato “vero” viene eseguito tale blocco. Qualora il risultato dell’espressione sia “falso“, questo blocco non viene eseguito.

Dopo questo blocco di codice, può essere presente la clausola else, seguita da un secondo blocco di codice racchiuso tra parentesi graffe. Se l’espressione logica ha fornito come risultato “falso” e la clausola else è presente, allora viene eseguito questo secondo blocco di codice.

La clausola else è opzionale.

L’istruzione if è molto importante poiché consente l’implementazione di logiche di elaborazione delle informazioni, come in questo caso.

Nota, infine, che la funzione Serial.print o Serial.println può inviare stringhe di testo oltre che valori numerici.