Piacere di conoscerti, Arduino

Sono di ritorno dall’edizione romana della Maker Faire (www.makerfairerome.eu), e non me ne sono persa una da quando questa manifestazione è approdata in Italia. Molto è stato scritto e detto su Arduino, una scheda di prototipazione che ha dato un indiscutibile boost al mondo maker. Un esempio su tutti: ho frequentato un ITIS, e al tempo che fu avere una schedina standard, programmabile e a basso costo era….beh, non era. Da qualche (anzi, un bel po’ di) tempo le cose sono cambiate, e questo è testimoniato dalle numerose scuole superiori che espongono i loro progetti alla Maker Faire ogni anno.

Hello world

Da che mondo è mondo, il primo programma che si scrive quando si studia un nuovo linguaggio è “Hello world”. Qui non lo possiamo fare per ovvi motivi, e il nostro “Hello world” sarà un programmino (anzi, sketch, nella terminologia di Arduino) che fa lampeggiare il led integrato sulla scheda. Sulla scheda “Arduino UNO” questo led si trova vicino ai socket con i pin di uscita, vicino al pin GND (ground, cioè massa). Di seguito lo sketch, che andremo poi ad analizzare.

void setup() {
  pinMode(LED_BUILTIN,OUTPUT);
}
void loop() {
  digitalWrite(LED_BUILTIN,HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN,LOW);
  delay(1000);
}

Che cosa abbiamo fatto? Niente di complicato e trascendentale (sennò che Hello World sarebbe?). Come possiamo vedere il linguaggio di programmazione usato su Arduino è molto simile al C, ed in effetti deriva da esso. Si tratta del linguaggio Wiring.
Uno sketch di Arduino si basa su due funzioni: setup e loop. Come intuibile dal nome la funzione setup serve a compiere tutte le inizializzazioni necessarie al nostro sketch. In questo caso abbiamo detto che la “direzione” del led integrato (identificato dalla costante LED_BUILTIN) è quella di uscita.
Il programma vero e proprio è rappresentato dalla funzione loop. Ok, è un loop, ma dov’è la condizione? Non c’è. Questa funzione viene eseguita in un ciclo infinito, per sempre e sempre e sempre (finché non spegniamo la scheda, ovviamente). E’ come se il compilatore trasformasse il codice di loop in questo:

void loop() {
  for(;;)
  {
     digitalWrite(LED_BUILTIN,HIGH);
     delay(1000);
     digitalWrite(LED_BUILTIN,LOW);
     delay(1000);
   }
}

Il puzzle è completato dalle funzioni digitalWritedelay. La prima invia un valore ad un determinato pin (valore che verrà mantenuto da una latch finché non decidiamo di sovrascriverlo), in questo caso il led integrato, la seconda “ferma” l’esecuzione di un programma per il tempo specificato, espresso in millisecondi. In questo caso quindi ci stiamo fermando per un secondo.

Il codice di queso articolo è reperibile tramite il mio Github. Se vi è piaciuto condividetelo sui vostri social preferiti e magari offritemi un caffè.

Pierpaolo Paris

Sono uno dei tanti che sono entrati nel girone infernale di Ingegneria Informatica, e che poi ne è anche uscito. Attualmente lavoro come sviluppatore presso una società di consulenza. Ogni tanto mi diletto con la fotografia.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *