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.
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.
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, on— accendi la luce rossa.20 WAIT 1s— aspetta 1 secondo (la luce resta accesa durante l'attesa).30 LED red, off— spegni la luce rossa.40 WAIT 1s— aspetta un altro secondo (ora resta spenta).50 GOTO 10— torna alla riga 10 e rifai tutto. È questo che la fa lampeggiare all'infinito.
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>msMette 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
ENDFerma 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 >, <, = 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 > < =, 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> … RETURNSalta 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.
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 10La 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 — scrivi10 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) oWAIT 500ms(millisecondi). UnWAIT 2da 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.