Introduzione
Benvenuto al tuo primo progetto con controllo seriale su Raspberry Pi Pico! In questo tutorial, costruiremo un semplice circuito che ti permette di accendere e spegnere un LED digitando comandi nel monitor seriale. Imparerai le basi della comunicazione seriale, dell’uscita digitale e come usare il simulatore Velxio per testare il tuo codice senza alcun hardware.
Questo progetto è perfetto per principianti che vogliono capire come i microcontrollori comunicano con un computer. Alla fine, sarai in grado di estendere il concetto per controllare più LED, leggere sensori o persino costruire un semplice sistema di menu.
Panoramica del Circuito
Diamo un’occhiata al circuito che costruiremo. Apri l’esempio in Velxio e vedrai i seguenti componenti:

- Raspberry Pi Pico (nano-rp2040): Il cervello dell’operazione. Useremo il pin D2 come pin di controllo.
- LED (led-status): Un LED verde che accenderemo e spegneremo. L’anodo (A) si collega al Pico, e il catodo (C) si collega a un resistore limitatore di corrente.
- Resistore (r1): Un resistore da 220Ω per limitare la corrente attraverso il LED e prevenire danni.
Dettagli di Cablaggio
- Dal Pico D2 all’Anodo del LED: Un filo verde collega il pin D2 del Pico all’anodo (A) del LED. Questo è il segnale di controllo.
- Dal Catodo del LED al Resistore: Un filo grigio collega il catodo (C) del LED a un’estremità del resistore (pin 1).
- Dal Resistore al GND del Pico: Un filo nero collega l’altra estremità del resistore (pin 2) alla massa (GND.1) del Pico.
Questo è tutto! Il circuito è semplice ma efficace. Il resistore è essenziale per evitare di bruciare il LED. Con un resistore da 220Ω e una tipica tensione diretta del LED di circa 2V, la corrente sarà circa (3.3V - 2V) / 220Ω ≈ 6mA, che è sicura.
Analisi del Codice
Ora immergiamoci nel codice. Apri l’editor in Velxio e vedrai il seguente sketch Arduino:
// Raspberry Pi Pico — Serial LED Control
// Send '1' to turn LED ON, '0' to turn OFF, '?' for status
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
delay(500);
Serial.println("=== Pico LED Control ===");
Serial.println("Commands: 1=ON 0=OFF ?=status");
}
void loop() {
if (Serial.available()) {
char cmd = Serial.read();
switch (cmd) {
case '1':
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("LED: ON");
break;
case '0':
digitalWrite(LED_BUILTIN, LOW);
Serial.println("LED: OFF");
break;
case '?':
Serial.print("LED: ");
Serial.println(digitalRead(LED_BUILTIN) ? "ON" : "OFF");
break;
default:
if (cmd >= ' ') {
Serial.print("Unknown command: ");
Serial.println(cmd);
}
break;
}
}
}
Come Funziona
setup(): Impostiamo il pin del LED integrato come uscita, avviamo la comunicazione seriale a 115200 baud, attendiamo 500ms per stabilizzare la connessione seriale, quindi stampiamo un messaggio di benvenuto e le istruzioni.loop(): Controlliamo se un carattere è disponibile nel buffer seriale. Se sì, lo leggiamo e usiamo un’istruzioneswitchper gestire tre comandi:'1': Accende il LED (HIGH) e stampa una conferma.'0': Spegne il LED (LOW) e stampa una conferma.'?': Legge lo stato attuale del pin del LED e stampa “ON” o “OFF”.- Qualsiasi altro carattere stampabile (ASCII >= 32) stampa un messaggio “Comando sconosciuto”. I caratteri non stampabili vengono ignorati.
Nota che usiamo LED_BUILTIN, una costante predefinita per il LED integrato del Pico (di solito sul pin 25). Nel nostro circuito, abbiamo collegato un LED esterno al pin D2, ma il codice usa ancora il LED integrato. Se vuoi controllare il LED esterno, cambia LED_BUILTIN in 2 (o definisci una costante). Per questo esempio, il LED integrato funziona bene.
Concetti Chiave
- Comunicazione Seriale: Il Pico comunica con il tuo computer tramite USB seriale.
Serial.begin(115200)imposta il baud rate—assicurati che il tuo monitor seriale corrisponda a questa velocità. - Uscita Digitale:
pinMode(pin, OUTPUT)edigitalWrite(pin, HIGH/LOW)sono le basi per controllare i pin. - Istruzione Switch: Un modo pulito per gestire più comandi. È più efficiente di una catena di istruzioni
if-else. - Validazione dell’Input: Il codice ignora i caratteri non stampabili e avvisa sui comandi sconosciuti. Questa è una buona pratica per programmi robusti.
Insidie Comuni e Suggerimenti per il Debug
- Baud Rate del Monitor Seriale: Se vedi caratteri spazzatura, il baud rate del tuo monitor seriale non corrisponde a 115200. In Velxio, il monitor seriale è integrato e usa automaticamente la velocità corretta.
- LED Non si Accende: Controlla che il LED sia orientato correttamente (anodo a D2, catodo al resistore). Verifica anche il valore del resistore—troppo alto e il LED sarà debole; troppo basso e potrebbe bruciarsi.
- Comandi Non Funzionano: Assicurati di inviare esattamente ‘1’, ‘0’ o ’?’ (senza virgolette). Il codice legge un singolo carattere, quindi inviare “1\n” funzionerà perché ‘1’ viene letto per primo e il newline viene ignorato (essendo non stampabile).
- Usare il Simulatore: La barra degli strumenti di Velxio ti permette di compilare ed eseguire il codice.
Clicca il pulsante “Run” per avviare la simulazione. La barra degli strumenti del canvas
ti offre controlli come pausa e reset. Se hai bisogno di aggiungere componenti, usa il selettore di componenti
.
Estensioni Suggerite
Una volta che hai il progetto base funzionante, prova questi miglioramenti:
- Controlla un LED Esterno: Cambia
LED_BUILTINin2e collega un LED esterno al pin D2 come mostrato nello schema del circuito. - Aggiungi Più LED: Usa più pin e comandi come ‘r’ per rosso, ‘g’ per verde, ‘b’ per blu.
- Dimmerazione PWM: Usa
analogWrite()per impostare livelli di luminosità. Invia valori come ‘0’ a ‘9’ per luminosità dallo 0% al 100%. - Comunicazione Bidirezionale: Fai sì che il Pico invii dati del sensore (es. temperatura) quando invii un comando come ‘t’.
- Sistema di Menu: Stampa un menu di opzioni e usa un ciclo per attendere un input valido.
Invito all’Azione
Pronto a provarlo tu stesso? Apri l’esempio live in Velxio e inizia a sperimentare: Controllo LED Seriale su Pico su Velxio. Nessun download, nessuna configurazione—solo il tuo browser e la tua curiosità. Buon hacking!