Tutorial 08: analogRead() e Serial Port Communications

analogRead() e Serial Port Communications

Sapere se qualcosa è acceso o spento può essere estremamente utile, ma spesso si vuole saperne di più. Quanto è luminosa la luce?

Quanto è veloce il satellite in movimento? Questi tipi di risposte sono spesso analogici – coprono una vasta gamma di valori, non solo on o off.

Arduino gestisce ingressi analogici con 6 pin dedicati, etichettati da A0 a A5. Questi pin hanno accesso a un convertitore analogico-digitale, che prende la gamma di valori di ingresso e crea una versione digitale tagliando la gamma in piccoli pezzi. Tutto questo è gestito dietro le quinte-tutto quello che dovete fare è utilizzare alcune funzioni molto semplici e si otterrà quello che ti serve.

Avrete bisogno di

  1. Potenziometro (qualsiasi gamma di resistenza funziona)
  2. Ponticelli – almeno 3
  3. Pneumatico della bicicletta

Istruzioni passo-passo

  1. Posizionare il potenziometro nella tua breadboard.
  2. Esegui un ponticello dal pin da 5 volt di Arduino a uno dei pin esterni del potenziometro.
  3. Esegui un altro ponticello da uno dei pin di terra sul tuo Arduino (etichettato GND) all’altro pin esterno del potenziometro.
  4. Eseguire il ponticello finale dal pin A0 sul vostro Arduino al perno centrale del potenziometro.
  5. Collegare l’Arduino al computer.
  6. Aprire l’IDE Arduino.
  7. Aprire lo schizzo per questa sezione.
  8. Fare clic sul pulsante Verifica nella parte superiore sinistra dello schermo. Si trasformerà arancione e poi di nuovo al blu una volta che ha finito.
  9. Fare clic sul pulsante Carica (accanto al pulsante Verifica). Si trasformerà arancione e poi di nuovo al blu una volta che ha finito.
  10. Nella barra dei menu, vai a Strumenti > Monitor seriale – si aprirà la finestra Monitor seriale – si dovrebbe vedere i numeri rotolare giù questa schermata.
  11. Ora regolare la manopola del potenziometro e guardare la finestra del monitor seriale. I numeri dovrebbero regolare tra 0 e 1023.

Utilizzando la funzione Arduino analogread e map con un potenziometro al pin A0

Questa immagine composta con Fritzing.

Il codice Arduino

/* AnalogReadSerial Reads an analog input on pin 0, prints the result to the serial monitor. Graphical representation is available using serial plotter (Tools > Serial Plotter menu) Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. This example code is in the public domain.*/// the setup routine runs once when you press reset:void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600);}// the loop routine runs over and over again forever:void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // print out the value you read: Serial.println(sensorValue); delay(1); // delay in between reads for stability}

Discuti lo schizzo

Questo schizzo inizia con un commento multilinea che descrive lo schizzo e il circuito. Probabilmente noterai che il primo blocco di codice è la funzione setup () – non dichiariamo o inizializziamo alcuna variabile all’inizio di questo schizzo-invece lo faremo all’interno della funzione loop (), come nell’ultimo esempio. All’interno delle parentesi graffe di setup() rivisitiamo la libreria Seriale e usiamo la funzione Seriale.iniziare().

void setup() {// initialize serial communication at 9600 bits per second:Serial.begin(9600);}

Se ricordi dall’ultima lezione, Seriale.begin () prende la velocità di trasmissione come argomento (questo sarà quasi sempre 9600). Questa funzione consente di impostare un canale di comunicazione tra il computer e Arduino. Come forse saprai ormai, setup () viene eseguito solo una volta, quindi passiamo al successivo blocco di codice.

Ma aspetta! Non dobbiamo impostare la modalità del pin che useremo? Ottimo punto!

Ciò che Arduino fa, per impostazione predefinita, è impostare tutti i pin sulla scheda come ingressi a meno che non si dica diversamente. Quindi, in molti casi, non è necessario impostare esplicitamente un pin come input utilizzando la funzione pinMode (). Detto questo-ho l’abitudine di farlo comunque – perché mi rende le cose chiare – e ne vale la pena nello spazio e nello sforzo.

Quindi ti sfido, imposta la modalità del pin usando la funzione pinMode(A0, INPUT) all’interno delle parentesi graffe di setup()– non te ne pentirai.

Passando alla funzione loop (), iniziamo con una dichiarazione e un’inizializzazione delle variabili.

int sensorValue = analogRead(A0);

Dichiariamo una variabile chiamata sensorValue e la inizializziamo all’output di una nuova funzione. Questa nuova funzione è il glamour analogRead (). Quindi indovina cosa fa questa nuova funzione analogRead (). Legge il valore sul pin analogico che hai scelto – in questo caso, è il pin analogico A0, dove abbiamo collegato il pin centrale del potenziometro. La tensione al pin A0 verrà mappata su un numero compreso tra 0 e 1023 e questo valore verrà assegnato alla variabile sensorValue.

Se si ricorda dall’alto, la tensione effettiva al pin A0 sarà compresa tra 0 e 5 volt, a seconda di dove viene regolato il potenziometro – questo valore viene mappato nell’intervallo 0 – 1023 con l’aiuto del convertitore analogico-digitale. Quindi abbiamo una variabile che ha registrato il valore al nostro potenziometro-che cosa dopo? Bene, diamo un’occhiata al valore. Per farlo, abbiamo bisogno di stamparlo da Arduino al nostro computer – e avete indovinato, useremo la funzione di libreria seriale println () per fare proprio questo…

Serial.println(sensorValue);

Non ci sono grandi sorprese qui-inviamo come argomento la variabile sensorValue alla funzione Serial.println () e la nostra finestra monitor seriale visualizzeranno i valori risultanti.

Per terminare lo schizzo, invochiamo la funzione delay() per un millisecondo per assicurarci che la nostra prossima lettura sia stabile e iniziamo di nuovo nella parte superiore del loop (). Registriamo un nuovo valore usando analogRead (), lo salviamo nella variabile sensorValue e poi lo stampiamo sul computer.

Tutto questo è buono e bene, potresti pensare, ma cosa ha a che fare un potenziometro con i sensori? Un potenziometro non percepisce nulla! Hai ragione – ma è interessante notare che molti sensori funzionano applicando lo stesso principio che fa un potenziometro – regolando la resistenza. Scatta una foto-resister per esempio – può essere usato per percepire la luce – perché la resistenza cambia in base alla luminosità della luce a cui è esposta-questo cambiamento di resistenza regolerà la quantità di tensione che un pin sull’estremità ricevente riceverà. Quindi ora la palla è nel tuo campo-per cosa puoi usare analogRead ()?

Prova da solo

  • Cambia il pin analogico in A2. Effettuare le regolazioni nel codice e nel circuito.
  • Prova un potenziometro diverso nel circuito, influisce sulla gamma di valori visualizzati?

Ulteriori letture

  • analogRead()
  • Pin di ingresso analogico
  • potenziometro tutorial-questo è buono

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.