Arduino ESP32 Micropython blink proviamo a realizzare un primo sketch da eseguire sul nostro micro controllore in runtime
Per sapere come iniziare con Micropython sulle schede Arduino, e/o altri micro controllori, che lo supportano puoi leggere l’articolo: Arduino ESP32 Micropython.
Arduino Lab IDE for Micropython
Dal precedente articolo avrai già scaricato ed installato l’arduino Lab IDE for Micropython, se non fosse così puoi seguire i passi descritti qui.
Appena apri l’IDE for Micropython ti ritrovi la seguente schermata:
cliccando sul primo pulsante in alto a sinistra potrai selezionare la porta di connessione della tua board arduino per connettertici.
Dopo aver avuto accesso all’Arduino ESP32, in questo esempio, avrai la seguente schermata:
In cui la seconda parte dell’IDE, quella nera, ti conferma la connessione avvenuta con l’arduino ESP32.
Important!
Un aspetto davvero interessante della programmazione in mocro python è eseguire in tempo reale i comandi sul micro controllore.
L’IDE per micropython, infatti, è diviso in 2 parti, come l’IDE Arduino 2.0.x ed i precedenti:
tuttavia la parte in basso ( nera ) è un prompt dei comandi in cui puoi scrivere cosa eseguire direttamente sulla scheda.
In questo modo la programmazione risulta interattiva e più veloce.
Puoi scrivere il comando per accendere il LEDBULTIN nella parte in basso dell’IDE ed esso verrà eseguito direttamente sul micro controllore, quasi in tempo reale.
Considera che micropython, è un linguaggio interpretato, e non compilato; pertanto risulta leggermente più lento rispetto ai linguaggi compilati: per questo diciamo che è eseguito in tempo “quasi” reale.
Arduino ESP32 Micropython blink
Inizia ora a scrivere il codice per il blink del led BUILTIN, inizia con includere le classi e librerie necessarie.
Notice
per il blink userai due librerie già presenti nel firmware che hai caricato sulla scheda nel precedente articolo, devi sono indicare all’interprete che desideri utilizzarle.
Ecco il codice che dovrai scrivere:
ed ecco il medesimo codice in formato testo se volessi copiarlo e incollarlo nel tuo IDE:
from machine import Pin import time led = Pin("D13",Pin.OUT) while True: led.on() time.sleep(1) led.off() time.sleep(1)
Descrizione dello sketch
Nelle prime linee indichi i metodi che utilizzerai nel tuo programma delle librerie “machine” e “time”
Notice
scrivendo from machine import Pin indichi di voler utilizzare la classe Pin della libreria machine, non tutta la libreria che contiene molte altre classi. ( doc micropython machine library );
Allo stesso modo scrivendo import time indichi di voler utilizzare la classe time ( doc micropython time library )
la successiva linea 04: imposta il pin su cui agire e la modalità in cui ci interagirai, la sintassi ti ricorda, probabilmente il comando pinMode(D13,OUTPUT) che conosci della programmazione Arduino;
Notice
Avrai notato che non c’è un vero e proprio setup() o funzione simile come nel linguaggio Arduino e manca anche una funzione loop(), questa differenza, all’inizio destabilizzante, può rivelarsi davvero utile e semplificare la programmazione. Per avere un loop() dovrai definirre un while True:
la linea 06: deninisce un ciclo infinito simile al loop();
linea 07: accende il led, esistono più modi di farlo uno è con il comando led.on(), un’altro è led.value(1) sono equivamenti in questo esempio;
la linea 08: definisce un delay() ossia uno sleep, in micropython, usando la classe time ed il metodo sleep che ti ricordo essere in secondi, per cui scrivi time.spleep(1) e non time.sleep(1000) altrimenti dovrai attendere 1000 secondi, ossia 1000/60 oltre 16,6 min.
le linee 09-10: spengono il led e aspettano un secondo come per le precedenti 2.
Esecuzione dello sketch
Dopo aver scritto il codice da qualche invio e il programma viene eseguito sul micro controllore, prima accende il led connesso al pin D13:
poi, dopo un secondo, lo spegne:
e successivamente dopo un secondo ricomincia il ciclo di accensione/spegnimento come il blink a cui sei abituato ma hai realizzato l’Arduino ESP32 Micropython blink.
In un prossimo articolo vedremo come salvare il programma sia in locale sia sul micro controllore e come usare un comando equivalente al Serial.print().