Raspberry Pi Pico programmazione a blocchi: sensori e MicroPython
Raspberry Pi Pico e programmazione a blocchi: leggi un LDR e un HC-SR04 con i blocchi accanto al C++, usa il Monitor seriale e passa a MicroPython con Thonny.
La programmazione a blocchi del Raspberry Pi Pico con MicroPython diventa molto più semplice quando sai già leggere un sensore con i blocchi. Leggere un sensore con i blocchi significa ottenere un valore senza scrivere codice: il blocco «lettura analogica A0» prende il livello di luce da un LDR e il blocco «stampa su seriale» invia quel numero al Monitor seriale del computer. In questo articolo leggerai prima i sensori con i blocchi su Arduino attraverso i progetti con LDR e HC-SR04, confrontando ogni blocco con la sua riga analogRead(), Serial.begin(), Serial.println() o pulseIn(). Poi farai il passo dalla programmazione a blocchi a MicroPython sul Raspberry Pi Pico e vedrai cosa cambia quando gli stessi blocchi diventano codice Python.
Finora tutti i programmi della serie agivano verso l'esterno: abbiamo acceso LED, letto un pulsante e costruito un contatore con un ciclo. Leggere un sensore funziona al contrario: la scheda misura l'ambiente e tu vedi il numero. Per questo qui entra in gioco la porta seriale, perché il modo più semplice per capire cosa misura un sensore è vederne il valore sullo schermo. Nella seconda metà, i blocchi dei progetti per Raspberry Pi Pico corrispondono a MicroPython invece che al C++. Tutti i progetti usati sono gratuiti in BlueGrays e il codice citato è esattamente quello del progetto.
Cosa significa leggere un sensore: ingressi digitali e analogici
Un pulsante segnala solo due stati: premuto o no. Lo leggi con il blocco di lettura digitale del pin (digitalRead) e il risultato è 0 o 1. Componenti come un LDR, un potenziometro o un sensore di umidità del terreno danno invece tutti i valori intermedi: la tensione sul pin varia in modo continuo tra 0 e 5 V. Il circuito che trasforma questa tensione in un numero è l'ADC (convertitore analogico-digitale). L'ADC dell'Arduino Uno è a 10 bit: divide la tensione in 1024 passi e restituisce un numero da 0 a 1023, con ogni passo pari a circa 4,9 mV. ESP32 e Pico hanno ADC a 12 bit che lavorano a 3,3 V. Questa differenza tra le schede è una delle fonti di confusione più comuni quando si passa dai blocchi al codice; trovi i dettagli nell'articolo ADC e conversione analogico-digitale.
| Scheda | ADC | Intervallo di valori | Tensione di riferimento | Codice |
|---|---|---|---|---|
| Arduino Uno | 10 bit | 0–1023 | 5 V | analogRead(A0) |
| ESP32 | 12 bit | 0–4095 | Circa 3,3 V | analogRead(34) |
| Raspberry Pi Pico | 12 bit (read_u16 li scala a 16 bit) | 0–65535 | 3,3 V | ADC(26).read_u16() |
Leggere un LDR con i blocchi su Arduino
Il nostro primo esempio è il progetto Misurare l'intensità luminosa con LDR. Un LDR è una resistenza il cui valore scende quando la luce aumenta; da solo non produce alcuna tensione. Per misurarlo lo mettiamo in serie con una resistenza fissa da 10 kΩ, formando un partitore di tensione, e colleghiamo il punto centrale ad A0. Con il collegamento qui sotto l'LDR sta dal lato dei 5V, quindi con più luce salgono la tensione su A0 e la lettura; se scambi l'LDR e la resistenza, il verso si inverte. Puoi calcolare l'uscita del partitore per diversi valori dell'LDR con il calcolatore del partitore di tensione e vedere quanti ohm ha un LDR al buio e in piena luce nell'articolo sensore di luce LDR. La colonna del Pico la useremo nell'esempio MicroPython alla fine.
| Collegamento | Arduino Uno | Raspberry Pi Pico |
|---|---|---|
| Piedino 1 dell'LDR | 5V | 3V3(OUT), pin fisico 36 |
| Piedino 2 dell'LDR + un capo della 10 kΩ (punto centrale) | A0 | GP26 / ADC0, pin fisico 31 |
| Altro capo della 10 kΩ | GND | GND, pin fisico 38 (o AGND, pin 33) |
| Intervallo di lettura | 0–1023 | 0–65535 |

Leggi i blocchi dall'alto verso il basso. Il blocco «dichiara intero (int) value = 0» dentro variabili globali (all’inizio) è la riga int value; in cima al codice. La sezione setup (una volta) contiene un solo blocco, «avvia seriale a 9600 baud», cioè Serial.begin(9600);. Dentro ripeti per sempre c'è prima «imposta value a lettura analogica A0», che è la riga value = analogRead(A0);. Poi ci sono due blocchi «stampa su seriale». Il primo stampa il testo «Value:» con l'opzione stessa riga e diventa Serial.print(); il secondo stampa value con a capo e diventa Serial.println(). Così ogni misura compare su una sola riga, per esempio «Value: 512». L'ultimo blocco, «attendi 500 ms», è delay(500);, quindi ottieni due letture al secondo. Per trasformare la lettura in tensione usa value × 5,0 / 1023: 512 corrisponde a circa 2,5 V. In una stanza buia il valore scende a qualche centinaio, con una torcia puntata sull'LDR supera 900; i numeri esatti dipendono dal tuo LDR e dalla luce ambiente.
1int value; // Işık değeri / Light reading (0-1023)
2
3void setup() {
4 Serial.begin(9600); // Seri port 9600 baud / Serial at 9600 baud
5}
6
7void loop() {
8 value = analogRead(A0); // LDR gerilimini oku / Read the LDR voltage
9 Serial.print("Value: ");
10 Serial.println(value);
11 delay(500); // 0,5 sn bekle / Wait 0.5 s
12}Aprire il Monitor seriale e leggere i valori
- Incolla il codice nell'Arduino IDE, scegli scheda e porta e fai clic su Carica.
- Al termine del caricamento fai clic sull'icona della lente in alto a destra oppure apri Strumenti > Monitor seriale (scorciatoia Ctrl+Maiusc+M).
- Imposta la velocità del Monitor seriale uguale a quella del codice: 9600 baud in questo progetto.
- Ogni mezzo secondo scorre una riga «Value: …». Copri l'LDR con la mano e guarda il numero scendere.
- Se vuoi vedere la variazione come grafico, apri Strumenti > Plotter seriale; gli stessi dati vengono disegnati come linea nel tempo.
- Le impostazioni di fine riga e l'invio di dati dal Monitor seriale alla scheda sono spiegati in dettaglio nell'articolo Monitor seriale di Arduino.
Distanza con l'HC-SR04: attesa in µs e durata dell'impulso

Il secondo progetto con sensore è HC-SR04 Misura della distanza (display seriale). Qui compaiono due blocchi nuovi. Il terzetto che comincia con «scrivi ALTO sul pin trigPin» dice al sensore di emettere un impulso di ultrasuoni: il blocco «attendi 10 µs» in mezzo è delayMicroseconds(10); ed è un'attesa mille volte più breve di «attendi … ms». Poi arriva «imposta duration a durata impulso ALTO sul pin echoPin (µs)», cioè la riga unsigned long duration = pulseIn(echoPin, HIGH);, che misura per quanti microsecondi il pin Echo resta ALTO. Il suono percorre nell'aria circa 0,034 cm/µs e quel tempo comprende andata e ritorno. Per questo «imposta totalPath a duration × 0.034» calcola il percorso completo e «imposta distance a totalPath ÷ 2» la distanza di sola andata. Per esempio, un impulso di 1000 µs vale 34 cm di percorso, quindi 17 cm di distanza; dato che distance è un int, i decimali vengono scartati. Infine il blocco «se distance > minDistance e distance < maxDistance» diventa if (distance > minDistance && distance < maxDistance) e stampa solo le misure tra 3 e 100 cm. Se il sensore non riceve l'eco, pulseIn() restituisce 0, e questo controllo tiene lontani dallo schermo anche quegli zeri sbagliati. Nel codice i pin sono trigPin = 7 ed echoPin = 6. Portata e precisione del sensore sono nell'articolo sensore di distanza HC-SR04.
La stessa idea sull'ESP32: un ADC a 12 bit
La versione ESP32 della stessa logica dell'LDR è il progetto Lettura dell'intensità luminosa con il modulo LDR ESP32. I blocchi corrispondono ancora al C++ e si leggono come su Arduino, con tre differenze. Primo, setup() fissa l'ADC a 12 bit con analogReadResolution(12), quindi analogRead() restituisce 0–4095 invece di 0–1023, e una soglia scritta per Arduino come «buio sotto 500» sull'ESP32 non ha lo stesso significato. Secondo, la porta seriale lavora a 115200 baud invece di 9600, quindi imposta anche il Monitor seriale a 115200. Terzo, sull'uscita AO del modulo LDR la tensione e il valore grezzo scendono quando la luce aumenta. Per questo il codice usa i valori di calibrazione RAW_DARK = 4000 e RAW_LIGHT = 100, mantiene la lettura in questo intervallo con constrain() e con map() la trasforma in 0 % per il buio e 100 % per la luce. Su un ESP32 DevKit classico l'LDR va al GPIO 34, un pin di solo ingresso collegato all'ADC1. Poiché i pin dell'ADC2 non si possono leggere con il Wi-Fi attivo, collegare i sensori analogici ai pin dell'ADC1 è una buona abitudine. Le caratteristiche generali della scheda sono nell'articolo Cos'è l'ESP32.
Dai blocchi a MicroPython sul Raspberry Pi Pico
Nei progetti per Pico i blocchi corrispondono a MicroPython invece che al C++. I blocchi hanno un aspetto familiare, ma il linguaggio sottostante è diverso: niente parentesi graffe né punti e virgola, i blocchi di codice sono delimitati dall'indentazione e non esistono le funzioni setup() e loop(). Facciamo il passaggio con il progetto più semplice, Accensione di un LED esterno con Raspberry Pi Pico (GP14 + breadboard). Il circuito è minimo: GP14 (pin fisico 19) va al piedino lungo del LED attraverso una resistenza da 220–330 Ω e il piedino corto va a GND (per esempio il pin fisico 18). Il programma accende il LED per mezzo secondo, lo spegne per mezzo secondo e a ogni passo scrive una riga nella Shell di Thonny. Se il Pico è nuovo per te, comincia dall'articolo Cos'è il Raspberry Pi Pico.

1from machine import Pin
2import time
3
4# ============ PIN / PIN ============
5LED_PIN = 14 # Boştaki herhangi bir GPIO / Any free GPIO
6led = Pin(LED_PIN, Pin.OUT)
7
8print("== BlueGrays: Pico Harici LED Blink ==")
9print("LED pin: GP" + str(LED_PIN))
10print("500ms yakip 500ms sonduruyor / 500ms on 500ms off")
11
12# ============ ANA DÖNGÜ / MAIN LOOP ============
13while True:
14 led.on() # LED'i yak / Turn the LED on
15 print("[LED] ACIK / ON")
16 time.sleep(0.5)
17
18 led.off() # LED'i söndür / Turn the LED off
19 print("[LED] KAPALI / OFF")
20 time.sleep(0.5)| Blocco | MicroPython | Nota |
|---|---|---|
| variabili globali (all’inizio) → dichiara intero (int) LED_PIN = 14 | LED_PIN = 14 | Python non usa nomi di tipo; la parola int non compare nel codice |
| setup (una volta) | Tutte le righe prima di while True | Non c'è un setup() separato; il file viene eseguito una volta dall'alto in basso |
| pin led : GP LED_PIN, USCITA | led = Pin(LED_PIN, Pin.OUT) | Pin arriva dalla riga from machine import Pin |
| stampa su seriale «…» a capo | print("…") | print() aggiunge sempre un a capo |
| crea testo con «LED pin: GP» LED_PIN | "LED pin: GP" + str(LED_PIN) | Un numero non si può unire a un testo finché str() non lo trasforma in testo |
| ripeti per sempre | while True: | Le righe interne sono rientrate di 4 spazi |
| accendi (on) il pin led | led.on() | Porta il pin a 3,3 V, il LED si accende |
| attendi 0.5 secondi | time.sleep(0.5) | Il tempo è in secondi; 500 ms = 0.5 |
| spegni (off) il pin led | led.off() | Porta il pin a 0 V, il LED si spegne |
Nella tabella saltano all'occhio quattro cose. Primo, le righe from machine import Pin e import time non hanno un blocco; in Python importi in cima i moduli che ti servono e i blocchi lo danno per scontato. Secondo, il blocco Arduino «avvia seriale a 9600 baud» qui non ha equivalente: sul Pico l'uscita di print() va direttamente via USB alla Shell di Thonny, senza velocità da impostare. Terzo, è cambiata l'unità dell'attesa: su Arduino «attendi 500 ms» è delay(500), mentre sul Pico «attendi 0.5 secondi» è time.sleep(0.5). Quarto, e più importante, l'indentazione: ogni blocco incastrato dentro «ripeti per sempre» si scrive nel codice con quattro spazi di rientro sotto la riga while True:. Se cancelli il rientro di una riga, quella riga esce dal ciclo; in Python gli spazi fanno il lavoro delle parentesi graffe del C++. Le altre regole di base sono nell'articolo basi di MicroPython.
Le stesse operazioni in tre linguaggi: blocchi, C++ e MicroPython
| Operazione | Blocco | Arduino C++ | MicroPython (Pico) |
|---|---|---|---|
| Eseguito una volta | setup (una volta) | void setup() { … } | Righe prima di while True |
| Ripeti per sempre | ripeti per sempre | void loop() { … } | while True: (rientrato) |
| Variabile | dichiara intero (int) LED_PIN = 14 | int LED_PIN = 14; | LED_PIN = 14 |
| Pin di uscita | imposta pin … come USCITA / pin led : GP LED_PIN, USCITA | pinMode(14, OUTPUT); | led = Pin(14, Pin.OUT) |
| Accendere il LED | scrivi ALTO sul pin … / accendi (on) il pin led | digitalWrite(14, HIGH); | led.on() |
| Attendere | attendi 500 ms / attendi 0.5 secondi | delay(500); | time.sleep(0.5) |
| Attesa breve | attendi 10 µs | delayMicroseconds(10); | time.sleep_us(10) |
| Lettura analogica | lettura analogica A0 | analogRead(A0) → 0–1023 | ADC(26).read_u16() → 0–65535 |
| Avviare la seriale | avvia seriale a 9600 baud | Serial.begin(9600); | Non serve |
| Stampare e andare a capo | stampa su seriale … a capo | Serial.println(x); | print(x) |
| Stampare sulla stessa riga | stampa su seriale … stessa riga | Serial.print(x); | print(x, end="") |
| Unire testo | crea testo con | Due Serial.print() separati | "LED pin: GP" + str(x) |
Il tuo esempio: leggere un LDR sul Pico con MicroPython
Adesso portiamo il progetto LDR di Arduino sul Pico. Il collegamento segue la colonna del Pico nella tabella precedente: un piedino dell'LDR al pin 3V3(OUT), l'altro sia a GP26 sia a un capo della resistenza da 10 kΩ, e l'altro capo della resistenza a GND. Il Pico ha tre pin in grado di leggere valori analogici: GP26 (ADC0), GP27 (ADC1) e GP28 (ADC2). In MicroPython crei un oggetto ADC(26) e chiami read_u16(); anche se l'ADC del Pico è a 12 bit nell'hardware, questa funzione scala il risultato su 0–65535. Per ottenere la tensione moltiplica il valore per 3,3 e dividi per 65535. Il programma segue lo stesso flusso della versione Arduino: misura, stampa, attendi mezzo secondo. In più abbiamo aggiunto una soglia: quando la stanza diventa buia si accende il LED integrato. Ragionando a blocchi, le righe prima di while True sono la sezione «setup (una volta)», while True: è «ripeti per sempre», l'if/else è il blocco «se» della parte 3 della serie, led.on() è «accendi (on) il pin led», time.sleep(0.5) è «attendi 0.5 secondi» e il + str() dentro print() è il blocco «crea testo con». La riga ADC(26).read_u16() fa il lavoro del blocco Arduino «lettura analogica A0». Regola THRESHOLD in base ai numeri che vedi nella Shell nella tua stanza.
1from machine import Pin, ADC
2import time
3
4# ============ PIN / PIN ============
5ldr = ADC(26) # GP26 = ADC0, bölücünün orta noktası / divider midpoint
6led = Pin(25, Pin.OUT) # Dahili LED; Pico W'de Pin("LED") / Onboard LED; Pico W: Pin("LED")
7THRESHOLD = 20000 # Karanlık eşiği, odana göre ayarla / Darkness threshold, tune for your room
8
9print("== BlueGrays: Pico LDR ==")
10
11# ============ ANA DÖNGÜ / MAIN LOOP ============
12while True:
13 value = ldr.read_u16() # 0-65535
14 voltage = value * 3.3 / 65535 # Volt / Volts
15 print("Value: " + str(value) + " Voltage: " + str(round(voltage, 2)) + " V")
16
17 if value < THRESHOLD: # Az ışık = küçük değer / Little light = small value
18 led.on()
19 else:
20 led.off()
21
22 time.sleep(0.5) # 0,5 sn = 500 ms / 0.5 s = 500 msCaricare il codice sul Pico con Thonny e main.py
- Installa Thonny sul computer. Se il Pico non ha ancora MicroPython, tieni premuto il pulsante BOOTSEL mentre colleghi il cavo USB; alla prima connessione Thonny propone di installare MicroPython.
- In basso a destra in Thonny scegli MicroPython (Raspberry Pi Pico) come interprete. Se nella Shell in basso vedi il prompt >>>, la connessione è pronta.
- Copia il codice del progetto da BlueGrays e incollalo nell'editor di Thonny.
- Fai clic sul pulsante verde Esegui o premi F5. Il codice gira sul Pico e l'uscita di print() compare nella Shell. Per fermarlo usa il pulsante Stop (Ctrl+F2).
- Se vuoi che il codice funzioni senza computer, scegli File > Salva con nome, seleziona Raspberry Pi Pico nella finestra e chiama il file main.py. Il Pico esegue questo file automaticamente a ogni accensione, quindi basta un caricatore USB o un power bank.
- Se Thonny non vede la scheda, controlla cavo e driver nell'ordine indicato nell'articolo Raspberry Pi Pico non riconosciuto.
Altri progetti gratuiti a blocchi per Pico
- Lampeggio LED integrato Raspberry Pi Pico (GP25): nessun cablaggio; fa lampeggiare il LED della scheda con LED_PIN = 25. Il codice è quasi identico a quello del progetto precedente: aprili uno accanto all'altro e vedrai che cambia solo il numero del pin. Sul Pico W il LED integrato è collegato al chip Wi-Fi, quindi si usa Pin("LED").
- Raspberry Pi Pico Due LED alternati (GP14 + GP13): parte da stati opposti con led1.value(1) e led2.value(0) e nel ciclo applica toggle() a entrambi i LED. Poiché il codice scrive from time import sleep, l'attesa appare come sleep(0.5) invece di time.sleep(0.5).
- Simulatore semaforo Raspberry Pi Pico (GP11/GP12/GP13): una funzione chiamata all_off() spegne tutti i LED; il verde resta acceso 4 secondi, il giallo 1,5 e il rosso 3, poi arriva una fase di partenza rosso+giallo di 1 secondo.
- Raspberry Pi Pico Effetto lampeggiante polizia (GP11 + GP12): questa volta l'attesa è in millisecondi con sleep_ms(WAIT_MS), dove WAIT_MS = 300. Vedere la funzione in secondi e quella in millisecondi in due progetti diversi è il modo migliore per evitare l'errore più comune qui sotto.
Errori comuni e soluzioni
| Errore | Sintomo | Soluzione |
|---|---|---|
| Scrivere time.sleep(500) | Il LED si accende e resta così per più di 8 minuti | In MicroPython il tempo è in secondi: scrivi time.sleep(0.5) o time.sleep_ms(500) |
| Spostare l'indentazione | IndentationError o righe che non vengono eseguite nel ciclo | Inizia ogni riga sotto while True: con gli stessi 4 spazi e non mescolare tabulazioni e spazi |
| Unire un numero a un testo senza str() | TypeError: can't convert 'int' object to str implicitly | Scrivi "LED pin: GP" + str(LED_PIN) |
| Dare 5 V a un pin ADC del Pico | Letture sbagliate e rischio di danni permanenti | Il Pico lavora con logica a 3,3 V; alimenta il partitore dal pin 3V3(OUT) |
| Portare una soglia Arduino sul Pico | La condizione «value < 500» dà sempre lo stesso risultato | Considera l'intervallo: Uno 0–1023, ESP32 0–4095, Pico read_u16() 0–65535 |
| Velocità del Monitor seriale diversa | Caratteri senza senso | Imposta il monitor alla velocità del codice: 9600 o 115200 |
| Usare un pin ADC2 sull'ESP32 | Con il Wi-Fi attivo la lettura non funziona | Collega i sensori analogici ai pin dell'ADC1, come GPIO 32–39 |
| Non salvare il file come main.py | Il codice gira da Thonny ma non dopo aver scollegato l'USB | Salva il file sul Pico con il nome main.py |
Continuare con i blocchi nell'app BlueGrays
Tutti i progetti di questo articolo sono gratuiti nell'app BlueGrays. Attivando l'interruttore Mostra a blocchi nella sezione codice di un progetto, al posto del codice compare lo stesso programma a blocchi; tocca l'immagine per aprirla a schermo intero. La scheda Capire i blocchi spiega il programma passo per passo e a ogni passo mostra solo i blocchi di quel passo e cosa fanno. Lì puoi vedere con calma cosa misura il blocco della durata dell'impulso nel progetto HC-SR04, o perché la parte di setup di un progetto per Pico viene prima di while True. Anche tutti gli esempi di comandi Arduino e MicroPython della Guida al codice sono mostrati a blocchi. Per mettere alla prova ciò che hai imparato, le Domande del giorno offrono ogni giorno 5 domande dal livello A1 al C2, una classifica settimanale e dei badge. Ricorda che i blocchi non vengono mai caricati direttamente sulla scheda: la scheda riceve sempre il codice reale del progetto, che copi nell'Arduino IDE per Arduino ed ESP32 o in Thonny per il Pico. Puoi filtrare l'elenco dei progetti per il badge dei blocchi e trovare tutti i progetti a blocchi per Arduino, ESP32 e Pico nella pagina programmazione a blocchi.
Con la porta seriale e la lettura dei sensori ora sai leggere tutti i mattoni di base di un progetto, sia a blocchi sia in codice. L'ultima parte della serie porta questi passi in classe: un piano di lezione di robotica con la programmazione a blocchi per insegnanti. Nel frattempo, nell'app BlueGrays puoi seguire passo per passo gli schemi e il codice dei progetti con LDR, HC-SR04 e LED su Pico, passare alla versione a blocchi dello stesso programma con Mostra a blocchi e seguire cosa fa ogni passo con Capire i blocchi.
Domande frequenti
Come si passa dalla programmazione a blocchi a MicroPython?
Il modo più semplice è guardare uno accanto all'altro i blocchi di un programma e il suo codice MicroPython. Dopo aver visto in qualche progetto che «ripeti per sempre» è while True:, «accendi (on) il pin led» è led.on() e «attendi 0.5 secondi» è time.sleep(0.5), cominci a leggere il codice senza blocchi. Poi modifica tu stesso piccoli dettagli come il tempo di attesa o il numero del pin.
Si può programmare il Raspberry Pi Pico con i blocchi?
In BlueGrays 10 progetti per Pico hanno la versione a blocchi, e quei blocchi corrispondono uno a uno al codice MicroPython; 5 sono completamente gratuiti. Sulla scheda si carica il codice MicroPython del progetto, non i blocchi: lo incolli in Thonny e lo esegui. Così capisci la logica con i blocchi e programmi la scheda con codice vero.
Perché analogRead di Arduino restituisce valori da 0 a 1023?
L'ADC dell'Arduino Uno è a 10 bit e divide l'intervallo 0–5 V in 1024 passi. 0 V si legge come 0 e 5 V come 1023, con ogni passo pari a circa 4,9 mV. Per trasformare la lettura in tensione usa value × 5,0 / 1023.
Perché read_u16 arriva fino a 65535 sul Raspberry Pi Pico?
L'ADC del Pico è a 12 bit nell'hardware, ma read_u16() di MicroPython scala il risultato a 16 bit perché l'intervallo sia lo stesso su schede diverse. Per questo 0 V si legge come 0 e 3,3 V come circa 65535. Le soglie che porti da Arduino vanno ricalcolate per questo intervallo.
In MicroPython time.sleep è in secondi o in millisecondi?
time.sleep() lavora in secondi: time.sleep(0.5) attende mezzo secondo. Per i millisecondi usa time.sleep_ms(500) e per i microsecondi time.sleep_us(10). Se lo confondi con il delay(500) di Arduino e scrivi time.sleep(500), il programma attende più di 8 minuti.
Come faccio a far girare sempre sul Pico il codice scritto in Thonny?
Salva il codice sul Raspberry Pi Pico con il nome main.py da File > Salva con nome. Il Pico esegue main.py automaticamente a ogni accensione, senza bisogno del computer. Se premi solo Esegui, il codice non viene salvato sul Pico e dopo un riavvio non parte.
Progetti da realizzare dopo questo articolo
Vedi tutti i progetti
Misurare l'intensità luminosa con LDR
Vuoi vedere quanto è luminosa la tua stanza sotto forma di numero? L'LDR, un piccolo componente sensibile alla luce, misura la luce ambiente e l'Arduino scrive il valore sullo schermo del computer ogn

HC-SR04 Misura della distanza (display seriale)
Il sensore HC-SR04 funziona come un pipistrello che trova la strada al buio: manda un suono che non puoi sentire, ne ascolta l'eco e misura quanto è lontano l'oggetto davanti a sé. L'Arduino scrive qu

Lettura dell'intensità luminosa con il modulo LDR ESP32
Monitoraggio in tempo reale sul Serial Monitor del valore grezzo dell'ADC del modulo LDR e della percentuale relativa di luce calcolata dai valori di riferimento al buio e alla luce. Questa percentuale non è una misurazione in lux. Spiega il principio di calibrazione del modulo. È consigliabile eseguirlo prima del Progetto 10, poiché serve a determinare il valore di soglia.

Accensione di un LED esterno con Raspberry Pi Pico (breadboard)
Il passo successivo dopo il LED integrato di Pico: collegare un LED esterno alla breadboard e controllarlo tramite il pin GP14. Con questo progetto imparerai come utilizzare qualsiasi pin GPIO generico del Pico come uscita, la polarità del LED (stelo lungo = anodo/+, stelo corto = catodo/–) e perché è indispensabile un resistore di limitazione della corrente (220 Ω). Se non inserisci il resistore, l’LED riceverà una corrente eccessiva e potrebbe bruciarsi. Il circuito è molto semplice: Pico GP14

Lampeggio LED Integrato Raspberry Pi Pico (Pico e Pico W)
Il progetto di apertura della serie Raspberry Pi Pico! Facciamo lampeggiare il LED verde integrato per verificare che la scheda funzioni — un classico primo esperimento "Hello World". NESSUN componente esterno, solo Pico e cavo USB. Il codice è scritto in MicroPython (il linguaggio ufficialmente supportato dalla Raspberry Pi Foundation). Impara la classe machine.Pin, la modalità Pin.OUT, i metodi led.on()/off() e time.sleep() in Thonny IDE. Segui ogni commutazi

Raspberry Pi Pico Due LED alternati (Flip-Flop)
Il passo successivo dopo il LED singolo sul Pico: due LED lampeggiano alternativamente in un pattern flip-flop classico. Due LED di colori diversi (rosso su GP14, verde su GP13) scambiano stati ogni 500ms. Pin.toggle() di MicroPython rende il codice breve. Base di semafori, lampeggianti.

Simulatore Semaforo Raspberry Pi Pico (3 LED Sequenziali)
Simuliamo un vero semaforo con LED rosso, giallo e verde. Verde 4 sec "vai", giallo 1,5 sec "preparati", rosso 3 sec "fermati" e rosso+giallo 1 sec "partenza" (pattern europeo). Impara la definizione di funzione, la logica della macchina a stati e la sincronizzazione multi-GPIO. Circuito semplice: 3 LED su GP11/GP12/GP13.

Raspberry Pi Pico Effetto Lampeggiante Polizia (Rosso + Blu Stroboscopio)
Simuliamo il lampeggiante di un'auto della polizia con un Raspberry Pi Pico nella sua forma più semplice! I LED rosso e blu si alternano (flip-flop): mentre il rosso è acceso il blu è spento, e ogni 0,3 secondi si scambiano, all'infinito. Il codice scrive i due passi direttamente in un unico ciclo while True; la velocità si regola con la costante WAIT_MS.
Altri articoli
App BlueGrays
Costruisci questo circuito passo passo sul telefono
Schema, codice ed elenco componenti in un’unica schermata. Oltre 200 progetti Arduino, ESP32 e Pico da realizzare.
Inquadra con il telefono
Punta la fotocamera sul codice: si apre lo store del tuo telefono.
oppure apri lo store

