Arduino è di gran moda per il controllo dei pezzi di basso livello di un sistema di automazione domestica fai-da-te.

Ciò è principalmente dovuto al codice Arduino di facile utilizzo che rende il controllo dell’input e dell’output di un microcontrollore (un computer piccolo ed economico) molto più semplice di quanto non sia mai stato prima.

In questo articolo imparerai due funzioni Arduino per la lettura degli input e una funzione Arduino per la creazione degli output. Le funzioni di Arduino che imparerai di seguito sono così fondamentali per utilizzare le potenti funzionalità di un microcontrollore, che ti consiglio di memorizzarne l’utilizzo.

 

Arduino e I / O

Il primo set di funzioni di Arduino che bloccheremo nel tuo cervello sono funzioni per la lettura degli input. Ma prima di immergerci in quelli, assicurati di avere le basi per comprendere Arduino.

Arduino è davvero tre cose:

  1. Hardware (come un Arduino UNO R3 o un Arduino Nano)
  2. Software che usi per programmare l’hardware (l’IDE di Arduino),
  3. È l’ecosistema più ampio di librerie di codici disponibile per utilizzare facilmente cose come moduli bluetooth e wifi e molti diversi tipi di sensori e motori.

Quello su cui voglio concentrarmi dall’alto è il numero 1: l’hardware. Ecco l’affare, ogni scheda Arduino utilizza un microcontrollore. E come ho detto prima, un microcontrollore è un computer super economico e molto piccolo.

I microcontrollori sono progettati in modo eccellente per leggere input e creare output . Ora probabilmente hai già sentito il termine I / O (pronunciato: eye-oh). È l’acronimo di Input / Output.

L’universo di Arduino è incentrato sull’I / O. In termini di microcontrollore, gli ingressi e le uscite sono variazioni dei livelli di tensione. Gli ingressi sono quando un microcontrollore può “vedere” una variazione di tensione e le uscite quando un microcontrollore crea una variazione di tensione.

Quindi parliamo delle funzioni di Arduino che possono aiutarci a leggere le variazioni di tensione …

 

Lettura degli ingressi con Arduino

La maggior parte dei programmi di automazione domestica coinvolgerà la lettura degli input in un sistema. Gli ingressi proverranno probabilmente da sensori che hai collegato alla tua scheda Arduino.

In genere, gli ingressi saranno disponibili in due varietà separate : binario (on / off, ingressi digitali) o un intervallo di valori ( ingressi analogici) .

Detto in un altro modo, alcuni sensori producono un segnale On / Off e altri sensori producono una gamma di segnali. Imparare la differenza è piuttosto intuitivo; basta porre la domanda “cosa mi dice questo sensore?”

Se la risposta può essere solo una delle due opzioni, è un ingresso digitale. Se la risposta può essere un intero intervallo di valori, si tratta di un ingresso analogico.

Facciamo un po ‘di pratica veloce …

  • Hai un interruttore reed che rileva se una porta è aperta o chiusa. Questo produrrà un ingresso digitale o analogico?
    • Esatto, un ingresso digitale , perché ci sono solo due opzioni.
  • Si dispone di un sensore di temperatura che opere nel -50 ° a 300 ° F gamma . Questo produrrà un ingresso digitale o analogico?
    • Esatto, un ingresso analogico , perché c’è un’intera gamma di valori possibili.

Arduino ha 2 funzioni separate per leggere questi diversi tipi di input.

 

Arduino analogRead () 

Per leggere gli ingressi analogici , c’è la funzione chiamata analogRead () (buon nome, eh?). Sembra questo nel codice Arduino effettivo:

Se desideri utilizzare la funzione analogRead (), dovrai collegare il circuito del sensore a uno dei pin analogici su Arduino.

Tutte le schede Arduino hanno pin di ingresso analogico. Ad esempio, Arduino UNO ha 6 pin analogici, Arduino Nano ha 8 pin analogici e Arduino Mega ha 16 pin analogici.

I pin analogici su una scheda Arduino utilizzano il convertitore analogico-digitale (ADC) integrato nel microcontrollore della scheda. L’ADC prende il segnale di ingresso analogico e lo converte in un segnale digitale che consente di leggere facilmente i diversi valori dell’ingresso.

Affinché la funzione analogRead () funzioni, è necessario che sappia quale pin si desidera utilizzare. Ancora una volta, questo sarà uno dei pin analogici a cui è collegato il circuito del sensore.

Potrebbe assomigliare a questo:

 

Nel codice sopra abbiamo il nostro sensore di temperatura collegato al pin A4 di Arduino. Quando usiamo la funzione analogRead (), salviamo il valore nella variabile rawTemp.  Perché rawTemp , invece di solo temp ?

Ricorda che un ingresso è in realtà un segnale di tensione. Molto spesso il segnale di tensione letto dall’ADC Arduino dovrà essere convertito dal segnale grezzo nel valore effettivo. Questo viene fatto utilizzando un fattore di conversione che è prontamente disponibile dal produttore del sensore, o semplicemente facendo una semplice ricerca su Google.

Ma per quanto riguarda quegli ingressi On / Off, come leggiamo quelli con Arduino …?

 

Arduino digitalRead ()

Per gli ingressi digitali, Arduino ha una funzione chiamata digitalRead () (sanno davvero come dare un nome alle cose!)

Nel codice Arduino, ecco come appare:

Per utilizzare la funzione digitalRead (), è necessario che il sensore sia collegato a uno dei pin digitali sulla scheda Arduino ( Suggerimento avanzato: la maggior parte dei pin analogici può essere utilizzata anche come pin digitali: controlla la documentazione sulla scheda Arduino ).

Tutto ciò che la funzione digitalRead () deve sapere è dove (quale pin) è collegato il tuo circuito.

Potrebbe assomigliare a questo:

 

Nel codice sopra, la scheda Arduino legge lo “stato” della porta e lo memorizza nella variabile doorState.

A seconda del tipo di interruttore reed utilizzato e in base al circuito impostato, la funzione digitalRead () restituirà uno 0 o un 1 se la porta è aperta o chiusa.

Sapere se una porta è aperta o chiusa o determinare la temperatura di qualcosa è piuttosto utile, ma solo se puoi effettivamente fare qualcosa con quei dati.

Per far accadere le cose usando il nostro Arduino, dobbiamo iniziare a creare output …

 

Creazione di output con Arduino

Proprio come un ingresso in un microcontrollore è in realtà solo un voltaggio, anche un’uscita da un microcontrollore è un voltaggio. La tensione emessa da un Arduino da ciascun pin dipende dal tipo di scheda Arduino che stai utilizzando. È probabile che sia 5 volt o 3,3 volt.

La tensione che emetti può essere utilizzata per controllare qualcosa che hai collegato al tuo Arduino. È importante capire che un microcontrollore è progettato per controllare i circuiti, ma non necessariamente per alimentarli.

Questa è una distinzione importante perché un Arduino può fornire solo tanta corrente attraverso ogni pin prima che si surriscaldi e si rompa.

Quindi, anche se potresti essere tentato di spingere i limiti dei tuoi pin di uscita Arduino, sarebbe più saggio trovare un semplice circuito di controllo utilizzando uno dei tanti moduli prefabbricati disponibili per farlo (o semplicemente cablare il tuo)

Quindi come creiamo effettivamente un output con Arduino?

 

Arduino digitalWrite ()

Per creare un output con Arduino, utilizziamo la comoda funzione digitalWrite ().

Nel codice Arduino, assomiglia a questo:

La funzione digitalWrite () deve sapere due cose.

    1. Quale pin per la tensione di uscita
    2. Quale voltaggio emettere, ALTO o BASSO

Affinché la funzione digitalWrite () funzioni, è necessario utilizzare un pin digitale sulla scheda Arduino (proprio come prima di poter utilizzare i pin analogici come pin digitali – assicurati di ricontrollare la documentazione della scheda).

Devi anche dire ad Arduino che il pin verrà utilizzato come output. Per fare ciò, usi un’altra funzione chiamata pinMode ().

Potrebbe assomigliare a questo:

Nel codice sopra, la funzione pinMode () dice alla scheda Arduino che vogliamo che il pin del relè agisca come un’USCITA. La funzione digitalWrite () sta quindi dicendo al pin di emettere una tensione ALTA. Che sarà di 5 volt o 3,3 volt a seconda della tua scheda Arduino.

La tensione sul pin rimarrà ALTA finché non gli diciamo diversamente. Per cambiarlo in una bassa tensione, useremmo questo:

 

Il codice sopra imposterebbe la tensione sul pin del relè a 0 volt.

  • Ora ti starai chiedendo perché non abbiamo dovuto dire ai pin di essere input – e questa è una buona domanda! Possiamo usare la funzione pinMode () per dire a un pin di essere un input, ma Arduino fa in modo che tutti i pin agiscano come input, quindi non devi farlo esplicitamente.

Ora il vero divertimento accade quando uniamo le nostre funzioni appena apprese e creiamo una logica …

Leggi il codice qui sotto e guarda come abbiamo combinato la lettura di un input e la creazione di un output in base allo stato della porta:

 

 

Conosci le tue funzioni I / O principali di Arduino

Con la pletora di moduli sensore e la corrispondenza di utili librerie di codici, esiste una varietà pressoché infinita di sistemi che puoi utilizzare per automatizzare la tua casa utilizzando Arduino.

E mentre impari a conoscere tutti i tipi di altre funzioni di Arduino per far funzionare cose come wifi, bluetooth e controllo del motore, tornerai sempre a utilizzare queste 3 funzioni principali di Arduino.

Per motivi di ripetizione, esaminiamoli qui:

  • analogRead () – legge un ingresso analogico (un intervallo di valori possibili)
  • digitalRead () – legge un ingresso digitale (attivato o disattivato)
  • digitalWrite (): crea un’uscita di tensione ALTA o BASSA su un pin

Come puoi immaginare, le possibilità sono infinite, il che ci riporta davvero al punto di partenza sul motivo per cui Arduino è un’opzione così comune quando si creano progetti di automazione domestica fai-da-te.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi