risorse | tiny basic su arduino

Tiny BASIC su Arduino

Al lavoro alcuni colleghi stanno effettuando il porting di MicroPython su un sistema proprietario; fantasticavo di installarlo sulla mia scheda Arduino UNO, ma la cosa non è fattibile a causa delle ridotte risorse disponibili (cfr. “Micropython on Any Arduino Board?” nel forum ufficiale).

Cercando in rete ispirazione per un linguaggio shell alternativo mi sono imbattuto in Tiny BASIC. Pensavo di implementare un piccolo interprete per questo linguaggio, ma qualcuno mi ha preceduto: TinyBasic Plus è una versione di Tiny BASIC adattabile a diverse piattaforme Arduino, UNO compreso.

Scaricato lo sketch dal sito ufficiale (qui una copia locale della versione 0.15) e caricato su Arduino, si accede all'interprete BASIC attraverso un terminale, per esempio screen:

$ screen /dev/ttyACM0 9600

Il messaggio di benvenuto di TinyBasic Plus

Oltre alle istruzioni BASIC del dialetto «Tiny», TinyBasic Plus ne implementa qualcuna in più:

Modo immediato

TinyBasic Plus è in grado di eseguire comandi immediati – istruzioni prive di numero di linea. Per esempio, il comando DWRITE 13,HIGH accende il LED integrato sulla scheda:

Il comando per accendere il LED integrato sulla scheda

Il comando DWRITE 13,LOW lo spegne:

Il comando per spegnere il LED integrato sulla scheda

Programmazione

TinyBasic Plus consente anche l'esecuzione di programmi BASIC – sequenze di istruzioni corredate di numero di linea che vengono memorizzate per essere eseguite successivamente. Per esempio, il programma seguente fa lampeggiare il LED sulla scheda:

10 DELAY 500
20 DWRITE 13,HIGH
30 DELAY 500
40 DWRITE 13,LOW
50 GOTO 10

Il programma del lampeggio caricato nella memoria dell'interprete

Per eseguire il programma si usa il comando RUN:

Il programma del lampeggio in esecuzione

Il LED comincia a lampeggiare. Ctrl+C interrompe l'esecuzione del programma:

L'interprete segnala l'avvenuta interruzione del programma

Salvataggio in EEPROM

TinyBasic Plus offre una forma di persistenza dei programmi: è infatti possibile salvare una copia del programma attualmente caricato in memoria in una zona dedicata dell'EEPROM di Arduino. Bisogna prima di tutto formattare l'area di salvataggio con il comando EFORMAT.

Dopo alcuni istanti l'interprete ripresenta il prompt:

La procedura di formattazione dell'area di salvataggio richiede alcuni secondi

Per salvare il programma si usa il comando ESAVE:

Il salvataggio del programma è pressoché istantaneo

Il programma può essere richiamato con il comando ELOAD, per esempio dopo un NEW:

Il comando NEW cancella il programma caricato nell'interprete

Il comando ELOAD ripristina il programma precedentemente salvato nella memoria EEPROM

In aggiunta, se l'interprete è stato compilato con il flag ENABLE_EAUTORUN, che è attivo di default, alla successiva accensione TinyBasic Plus recupera il programma salvato in EEPROM e lo esegue immediatamente. In questo caso, per interromperne l'escuzione, occorre ricollegarsi all'interprete con il terminale e inviare un Ctrl+C.

Pagina modificata il 15/10/2018