Nota
Ciao, benvenuto nella Community SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché unirti?
Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.
Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.
Anteprime esclusive: Ottieni accesso anticipato ai nuovi annunci di prodotti e anteprime.
Sconti speciali: Approfitta di sconti esclusivi sui nostri nuovi prodotti.
Promozioni festive e omaggi: Partecipa a promozioni e omaggi durante le festività.
👉 Sei pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi!
5.12 Lettura seriale¶
Potresti aver notato l’uso della funzione Serial.print(). Se esiste la stampa, esiste anche la lettura? A cosa serve la casella di testo nel Monitor Serial?
Esatto, ci sono modi per controllare programmi e circuiti inserendo informazioni nella casella di testo del Monitor Serial.
In questo progetto, utilizzeremo l’I2C LCD1602 per visualizzare il testo inserito nel Monitor Serial, sperimentando così l’uso di Serial.read().
Componenti necessari
In questo progetto, ci servono i seguenti componenti.
È sicuramente conveniente acquistare un kit completo, ecco il link:
Nome |
ELEMENTI IN QUESTO KIT |
LINK |
|---|---|---|
3 in 1 Starter Kit |
380+ |
Puoi anche acquistarli separatamente dai link sottostanti.
INTRODUZIONE AI COMPONENTI |
LINK PER L’ACQUISTO |
|---|---|
Schema
Collegamenti
Codice
Nota
Apri il file
5.12.serial_read.inonel percorso3in1-kit\basic_project\5.12.serial_read.Oppure copia questo codice nell”Arduino IDE.
La libreria
LiquidCrystal I2Cè utilizzata qui, puoi installarla dal Library Manager.
Dopo che il codice è stato caricato correttamente, puoi inserire del testo nella casella di testo del Monitor Serial e l’LCD visualizzerà le informazioni.
Come funziona?
void loop() { // when characters arrive over the serial port... if (Serial.available()) { // wait a bit for the entire message to arrive delay(100); // clear the screen lcd.clear(); // read all the available characters while (Serial.available() > 0) { // display each character to the LCD lcd.write(Serial.read()); } } }
Serial.available()ottiene il numero di caratteri disponibili nello stream in entrata quando digiti qualcosa nella casella di testo. Poiché ci sono due terminatori nell’input, in realtà hai 3 caratteri quando digitiA, e 4 caratteri quando digitiAB.Serial.read()prende il primo carattere dallo stream in entrata. Ad esempio, se hai digitatoAB, chiamandoSerial.read()una sola volta otterrai il carattereA; alla seconda chiamata otterraiB; alla terza e quarta chiamata otterrai i due simboli di fine; chiamando questa funzione quando non ci sono caratteri disponibili nello stream di input causerà un errore.
In sintesi, è comune combinare le due funzioni sopra utilizzando un ciclo while per leggere tutti i caratteri immessi ogni volta.
while (Serial.available() > 0) { Serial.print(Serial.read()); }
Inoltre, se non usi Serial.read() per ottenere i caratteri dallo stream in entrata, i caratteri verranno accumulati insieme.
Ad esempio, se digiti A seguito da AB, lo stream in entrata accumulerà 7 caratteri.