Impara a programmare — da zero

Non hai mai scritto una riga di codice? Perfetto. In questa pagina farai lampeggiare una luce vera e suonare un motivetto a un buzzer vero, scrivendo solo poche righe semplici — niente cavi, niente configurazione, niente da installare. Se sai scrivere una lista della spesa, sai fare anche questo.

Inizia subito: apri il Simulatore nell'IDE — è una piccola scheda finta dentro al browser, con tre luci colorate, un buzzer e un pulsante. Tutto quello che vedi qui funziona prima lì, senza alcun hardware.

Cos'è un programma?

Un programma è semplicemente una lista di istruzioni che una macchina esegue, una alla volta, dall'alto verso il basso — come una ricetta, o i passi di una danza. La macchina è veloce e molto ubbidiente: fa esattamente ciò che hai scritto, nell'ordine in cui l'hai scritto. Niente di più, niente di meno.

Quindi "programmare" vuol dire soprattutto spezzare ciò che immagini in passi piccoli e chiari. "Accendi la luce rossa. Aspetta un secondo. Spegnila." Questo è già un programma.

Il BASIC, e il nostro Chip BASIC

Il BASIC è un linguaggio di programmazione inventato nel 1964 per insegnare ai principianti assoluti — il nome significa letteralmente "Beginner's All-purpose Symbolic Instruction Code", cioè codice di istruzioni simboliche per principianti. Si legge quasi come l'inglese di tutti i giorni, ed è proprio per questo che lo usiamo qui.

La nostra versione si chiama Chip BASIC, ed è due cose in una che usi insieme nello stesso programma: il cuore BASIC di sempre — numeri di riga, GOTO, IF…THEN, LET, variabili e conti, le stesse idee del BASIC dal 1964 — più i nostri comandi che parlano alla scheda: LED, WAIT, SOUND, PLAY, BUTTON e le MISSION intere.

10 LET a = 0
20 LED green, on
30 WAIT 1s
40 LED green, off
50 a = a + 1
60 IF a < 3 THEN GOTO 20
70 MISSION "ALLARME"

Un solo programma, i due strati insieme: il BASIC classico (LET, conti, IF…THEN, GOTO) gestisce il ciclo, e i nostri comandi (LED, WAIT, MISSION) fanno agire la scheda. Non c'è una modalità da cambiare — li mescoli e basta, sulla riga che vuoi.

La regola d'oro del Chip BASIC: ogni riga inizia con un numero (10, 20, 30…). Quei numeri stabiliscono l<em>ordine</em> di esecuzione e danno a ogni riga un nome a cui saltare. Conta di dieci in dieci, non 1-2-3, così potrai <em>infilare nuove righe in mezzo</em> più tardi — una riga tra la <code>10</code> e la <code>20</code> diventa <code>15</code>.

Come funziona Text to Chip

Tu scrivi BASIC. Il browser lo traduce in una lista di istruzioni minuscole e semplici (la chiamiamo bytecode). Un piccolo "lettore" esegue poi quelle istruzioni — o nel Simulatore sullo schermo, o su un chip vero (un ESP32-S3) collegato via USB.

La parte intelligente: è lo stesso programma tradotto in entrambi i posti. Ciò che vedi lampeggiare nel simulatore è ciò che lampeggia sulla scheda vera. Così puoi costruire e provare tutto senza hardware, e poi far girare la stessa identica cosa su un chip vero.

L'idea chiave: tu dici cosa vuoi che succeda — "luce rossa accesa", "suona il suono della monetina" — non come collegare un circuito. La scheda sa già come.

Il tuo primo programma

Facciamo lampeggiare la luce rossa. Apri l'IDE, assicurati che sia selezionato il Simulatore e scrivi queste cinque righe nell'editor:

10 LED red, on
20 WAIT 1s
30 LED red, off
40 WAIT 1s
50 GOTO 10

Ora premi ▶ run (in alto a sinistra). La luce rossa si accende per un secondo, si spegne per un secondo, si riaccende… all'infinito. Hai appena scritto un programma! Premi ■ stop per fermarlo.

Ecco cosa dice ogni riga:

  • 10 LED red, onaccendi la luce rossa.
  • 20 WAIT 1saspetta 1 secondo (la luce resta accesa durante l'attesa).
  • 30 LED red, offspegni la luce rossa.
  • 40 WAIT 1s — aspetta un altro secondo (ora resta spenta).
  • 50 GOTO 10torna alla riga 10 e rifai tutto. È questo che la fa lampeggiare all'infinito.
Provaci: cambia 1s in 0.2s su entrambe le righe WAIT ed esegui di nuovo — la luce lampeggia molto più in fretta. Cambiare i numeri e guardare cosa succede è il modo migliore per imparare.

Come scorrono le righe

Il lettore parte dal numero di riga più piccolo e procede verso il basso: 10, poi 20, poi 30… Se arriva alla fine senza altro da fare, si ferma.

GOTO cambia questo percorso: salta alla riga che indichi. GOTO 10 rimanda il lettore alla riga 10, creando un ciclo — un pezzo che si ripete. I cicli sono ciò che fa continuare il semaforo e lampeggiare la luce.

La cassetta degli attrezzi — ogni istruzione

Queste sono tutte le "parole" che il Chip BASIC capisce e trasforma in azione reale — quelle del BASIC classico e i nostri comandi della scheda, fianco a fianco. Ogni scheda mostra la forma dell'istruzione, cosa fa e un piccolo esempio. Non devi impararle a memoria — torna a sbirciare qui ogni volta che ti serve.

Luci, tempo e ripetizioni

LED <colour>, <on|off>

Accende o spegne una delle tre luci colorate. I colori sono red (rosso), yellow (giallo) e green (verde).

10 LED green, on
WAIT <n>s · WAIT <n>ms

Mette in pausa il programma. Usa s per i secondi o ms per i millisecondi (1000 ms = 1 s). Vanno bene anche i decimali come 0.5s. Ciò che era acceso o spento resta così durante l'attesa.

20 WAIT 2s
GOTO <line>

Salta a un altro numero di riga — il programma prosegue da lì. Usalo per creare cicli o per saltare avanti.

50 GOTO 10
END

Ferma il programma in modo pulito. (Un programma che cicla con GOTO non arriva mai a un END — lo fermi col pulsante ■.)

90 END
REM <note>

Una nota per te stesso. La macchina ignora tutto ciò che segue REM, quindi usalo per spiegare cosa fa una parte.

10 REM blink the light
<statement> : <statement>

Mette due istruzioni sulla stessa riga, separate da : — comodo per passi brevi che vanno insieme.

10 LED red, on : WAIT 1s

Prendere decisioni

IF <condition> THEN <action>

Prende una decisione: se la condizione è vera, allora esegue l'azione; altrimenti la salta. Le condizioni confrontano numeri con &gt;, &lt;, = e si possono unire con AND.

30 IF a > 5 THEN LED red, on
BUTTON("A")

È vera mentre il pulsante A è premuto. Mettilo dentro un IF per reagire a una pressione.

30 IF BUTTON("A") THEN SOUND "coin"

Ricordare numeri

LET <var> = <value> ( a … z )

Ricorda un numero sotto un nome. Hai 26 piccole scatole chiamate da a a z. LET è facoltativo — funziona anche a = 0.

10 LET a = 0
+ - * / > < = AND ABS()

Fai i conti con + - * /, confronta con &gt; &lt; =, combina condizioni con AND e ottieni un valore positivo con ABS(). Ottimo per contare le cose.

20 a = a + 1

Fare suoni

SOUND "<name>"

Suona un suono sul buzzer: un beep breve, o un motivo con un nome — mario, tada, coin, win, siren, scale.

40 SOUND "coin"
PLAY "<notes>"

Suona la tua melodia. Scrivi le note come lettera + ottava: c5, e5, g5. Un - è una pausa (silenzio), e :500 dopo una nota ne imposta la durata in millisecondi.

50 PLAY "c5 e5 g5 c6"

Blocchi riutilizzabili e missioni intere

GOSUB <line> … RETURN

Salta a una riga come GOTO, ma RETURN lo riporta da dove era partito. Usalo per un blocco che vuoi riutilizzare da più punti (un "mini-programma").

10 GOSUB 100
MISSION "<NAME>" [WITH k=v …]

Esegue un intero comportamento già pronto in una sola riga — un semaforo, un metronomo, un allarme… Regolalo con WITH nome=valore. Ne parliamo qui sotto.

10 MISSION "SEMAFORO" WITH green=4s

Missioni già pronte

Una missione è un comportamento completo che qualcuno ha già costruito per te. Invece di scrivere riga per riga tutta la danza del semaforo, la richiami in una riga:

10 MISSION "SEMAFORO" WITH green=4s yellow=1s red=4s beep=slow
20 GOTO 10

La parte WITH la regola: quanto dura il verde, la velocità del beep, e così via. Ogni missione consente certe impostazioni entro limiti sicuri (un semaforo non ti lascia spegnere il rosso — sarebbe pericoloso). Quelle disponibili sono nella Libreria nella barra laterale: SEMAFORO, PIANOLA (tastiera), METRONOMO (battito) e ALLARME.

Il modo più facile per cambiare le impostazioni di una missione: clicca la riga MISSION nell'editor — si apre un piccolo modulo con tutte le opzioni, pronto da regolare.

Fatti aiutare dall'assistente (il tasto @)

Bloccato, o di fretta? In fondo all'editor c'è una casella @ descrivi una modifica. Scrivi cosa vuoi con parole tue — "fai lampeggiare la luce più in fretta" oppure "suona un motivetto allegro quando premo il pulsante" — e l'assistente scrive o modifica il BASIC per te.

Risponde sempre con vere righe di BASIC, direttamente nell'editor — così puoi leggerle, eseguirle e impararci sopra. L'assistente è un insegnante che mostra il suo lavoro, non una scatola nera.

Suggerimento: risponde nella lingua che hai scelto. Cambia lingua nell'intestazione e le spiegazioni la seguono.

Qualche programma completo

Incolla uno qualsiasi di questi nell'editor e premi run. Poi cambia un numero e guarda cosa succede — il gioco è tutto qui.

Un semaforo

10 LED red, on
20 WAIT 5s
30 LED red, off
40 LED yellow, on
50 WAIT 1s
60 LED yellow, off
70 LED green, on
80 WAIT 5s
90 LED green, off
100 GOTO 10

Rosso per 5 secondi, giallo per 1, verde per 5, poi GOTO 10 ricomincia il ciclo. Prova a cambiare i tempi di attesa.

Premi il pulsante → suono della monetina

10 IF BUTTON("A") THEN SOUND "coin"
20 GOTO 10

La riga 10 controlla il pulsante in continuazione (la riga 20 torna subito indietro a controllarlo). Tieni premuto il pulsante A nel simulatore e sentirai il motivo della monetina.

Suona una piccola melodia

10 PLAY "c5 e5 g5 c6"
20 END

Quattro note che salgono, poi finisce. Cambia le note — prova "c5 d5 e5 f5 g5" — ed esegui di nuovo.

Consigli ed errori comuni

  • Ogni riga ha bisogno di un numero. Una riga senza (solo LED red, on) non viene eseguita — scrivi 10 LED red, on.
  • Conta di dieci in dieci (10, 20, 30) così potrai infilare una nuova riga in mezzo più tardi.
  • I tempi vogliono un'unità: WAIT 2s (secondi) o WAIT 500ms (millisecondi). Un WAIT 2 da solo significa 2 millisecondi — quasi niente!
  • Un ciclo GOTO non si ferma da solo. Di solito è quello che vuoi (una luce che lampeggia) — premi il pulsante ■ stop per fermarlo.
  • La console ti parla. Se qualcosa non va, la console sotto l'editor mostra un avviso giallo o un errore rosso con il numero di riga. Leggilo — sta cercando di aiutarti.
  • I piccoli passi vincono. Esegui spesso. Cambia una cosa, esegui, guarda. Impari molto di più da dieci piccoli esperimenti che da una grande supposizione.

Dove andare adesso

Ora sai abbastanza per far ballare le luci e cantare i buzzer. Apri l'IDE, prova le missioni nella Libreria e continua a cambiare i numeri. Quando sei pronto a far girare i tuoi programmi su un chip vero, i Docs tecnici ti guidano passo passo.