Arduino Uno INTRODUZIONE CONOSCENZE NECESSARIE

Documenti analoghi
Corso Arduino Maggio Riccardo Binetti Lezione 1 - Blinking LEDs with style

FONDAMENTI DI ARDUINO

PRIMI PASSI CON ARDUINO

Corso di programmazione Arduino DI MALVEZZI DAVIDE

Display numerico con i LED

CTU Presenta. Contest Automation con Arduino. IK0XBX - Francesco

I Circuiti combinatori: LOGISIM

Circuito logico AND / AND Gate

ACCENDERE E SPEGNERE UN DIODO LED

ARDUINO. Colleghiamolo al PC/MAC - FUNZIONA?

HP LED Driver Shield. EtherMania di Signorini Marco Via Cadore MALNATE (VA) P.I REA VA

Arduino - Tutorial #2 - Iniziamo a programmare

Per controllare un motore DC (funzionante in corrente continua) con Arduino, devi utilizzare il circuito integrato Ponte H (nel mio caso un L293NE

I circuiti elementari

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico

Interaction Design? Parole chiavi!!! Arduino?

Arduino: Programmazione

Internetworking V a nno

Corso Arduino Maggio Riccardo Binetti Lezione 1 - Blinking LEDs with style

Il protocollo RS Introduzione. 1.2 Lo Standard RS-232

Per vedere tutti i tutorial:

Per vedere tutti i tutorial:

Operazioni di misura(1) A. Misura di tensione DC e AC (vedi figura 3)

Bravo io. tester per la verifica di alternatori e motorini di avviamento

5^ parte : Controllare un LED RGB con 3 potenziometri. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Metronomo. Realizzato da Andrea Corda

Misure voltamperometriche su dispositivi ohmici e non ohmici

Questo sistema si è poi diffuso in tutto il mondo, soprattutto in ambito didattico e hobbistico. Arduino mette a disposizione:

BREVE GUIDA ALL'USO DEL TESTER

Classe III specializzazione elettronica. Sistemi automatici

5 - Istruzioni condizionali

Robot Beginner Kit con Arduino l elettronica

Guida rapida all utilizzo del software e-stant

Corso Base Arduino ed Elettronica

Arduino Tutorial #7 - Nunchuk materiale utilizzato Arduino, cavi elettrici, breadboard, nunchuk, 3 led.

DAC Digital Analogic Converter

I circuiti dei calcolatori, le memorie, i bus. I fondamenti della rappresentazione dell informazione e della sua trasmissione ed elaborazione.

8^ parte : Come pilotare i motori passo-passo unipolari. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

INDICE INDICE AVVERTENZE M6002_01 04/ 07 3

In questo tutorial decodificheremo i segnali provenienti da un telecomando qualsiasi e utilizzeremo gli stessi segnali per comandare Arduino a

Tipologie dei dati nell SDK di Arduino come in un vero LP ad alto livello :

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Relazione progetto Arduino

SENSORI OTTICI - FOTORESISTENZE

Strutture di Controllo

2009 Yamaha R1. Lista delle Parti

Domotica con Arduino. Prima di proseguire con la descrizione del progetto, elenco, di seguito, il materiale utilizzato:

Progetti reali con ARDUINO

Relazione finale del progetto Arduino - NIMT

ISTRUZIONI PER L USO PAN 180 CB-A+G. LOCALIZZATORE DI CAVI Dotato di generatore di audiofrequenze e amplificatore

Le variabili logiche possono essere combinate per mezzo di operatori detti connettivi logici. I principali sono:

c) Copyright

BREADBOARD. saldare tutti i collegamenti, rendendo: estremamente laboriosa la modifica dei cablaggi, spesso non riutilizzabile la basetta.

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

22/09/2010. Rossato Alessio

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Perché il P.L.C.? Introduzione di base al P.L.C. (Programmable Logic Controller) SAVE Veronafiere Ottobre 2007

LEGGERE TUTTE LE INDICAZIONI PRIMA DI AVVIARSI ALL INSTALLAZIONE

I.3 Porte Logiche. Elisabetta Ronchieri. Ottobre 13, Università di Ferrara Dipartimento di Economia e Management. Insegnamento di Informatica

CONTASECONDI CON DISPLAY A 7 SEGMENTI ARDUINO LIKE

INDICE. 1. Caratteristiche tecniche 4

Digital Voltmeter and Ammeter. Parsic Italia. Strumenti digitali low cost per applicazioni generali

I SENSORI DI PROSSIMITA

Introduzione alla Robo0ca

CORSO ARDUINO. Corso ASEV Giulio Fieramosca Stefano Panichi. Stefano Panichi e Giulio Fieramosca

Algebra di Boole. Andrea Passerini Informatica. Algebra di Boole

Interfaccia seriale per LM709SW

1 Power Commander 1 Cavo USB 1 CD-Rom 1 Guida Installazione 2 Adesivi Power Commander 2 Adesivi Dynojet 1 Striscia di Velcro 1 Salvietta con Alcool

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

PS400. Digital Visualizer. Guida Rapida Di Inizio

AiM Infotech. Potenziometro farfalla. Versione 1.03

FC-51: IR Infrared Obstacle Detection Sensor Module 2-30cm

AUTOMAZIONE CANCELLO SCORREVOLE A MICROCONTROLLORE con ARDUINO

ArSilicii Srl AS 0000

Elementi di Informatica

ENEL - Kit di prova TPT2000

1 - Burn Bootloader. aggiornato 8 gennaio 2012

Algoritmi e basi del C Struttura di un programma

Guida all installazione dell interfaccia per PC

Relazione attività di laboratorio - Arduino

12 - timer da cucina display a 4 cifre

M A N U A L E D U S O REGOLATORE DI TENSIONE RTAC ITALIANO

PROGRAMMAZIONE: Le strutture di controllo

Espressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test

LeGGere tutte Le indicazioni Prima di avviarsi all installazione

Programmazione in Java (I modulo)

Come è fatto un computer

BUDVR4PLUS - BUDVR16PLUS

Lezione 5. Sommario. La logica booleana. I principi della logica booleana Gli operatori logici

Circuiti digitali. Operazioni Logiche: Algebra di Boole. Esempio di circuito. Porte Logiche. Fondamenti di Informatica A Ingegneria Gestionale

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Misurare la resistenza elettrica e verifica della tolleranza

Altoparlante Bluetooth BTS-31 Guida rapida

Transcript:

Arduino Uno INTRODUZIONE INTRODUZIONE ALL'USO DELLE TECNOLOGIE ICT PER I SISTEMI URBANI ED IL TERRITORIO CONOSCENZE NECESSARIE

La piattaforma Arduino: concetti di base CARATTERISTICHE PRINCIPALI DELLA PIATTAFORMA ARDUINO ARCHITETTURA ARDUINO UNO COMPONENTI AGGIUNTIVE NELLO STARTER KIT

Perché Arduino Arduino è una scheda elettronica che permette di programmare in maniera «semplice» un microcontrollore. Un microcontrollore è un dispositivo elettronico che permette di acquisire dati in ingresso (input), elaborarli e restituire dei risultati (output). E una versione ridotta del processore o CPU Le caratteristiche interessanti di Arduino sono varie: Interfaccia semplice con sensori di vari tipo (sia analogici che digitali) Programmazione molto semplice Compatto Molto diffuso Bassi consumi

Concetti di base dell'elettronica L'elettricità è una forma di energia che si propaga attraverso conduttori (come i fili elettrici). Questa energia è facilmente trasformabile in altre forme di energia ad esempio per accendere una lampadina o far sentire suoni in un altoparlante. I dispositivi utilizzati per fare questo sono detti trasduttori. Più in particolare i dispositivi che trasformano altri tipi di energie in energia elettrica sono detti sensori, mentre quelli che convertono energia elettrica in altre forme sono detti attuatori. Un circuito è un insieme di componenti elettroniche che muove elettricità tra le componenti. Sono cicli chiusi di connessioni con un'alimentazione (es. batteria). In un circuito elettricità fluisce da un punto a potenziale energetico maggiore (indicato come alimentazione, VCC o semplicemente +) ad un punto di potenziale inferiore. La terra o massa (o GND o -) è tipicamente il punto a minor potenziale.

Concetti di base dell'elettronica Corrente I (misurata in ampere, simbolo A): è la quantità di carica elettrica che passa attraverso uno specifico punto del circuito Voltaggio V (misurato in volt, simbolo V): è la differenza di energia tra un punto del circuito ed un altro (o tensione) Resistenza R (misurata in ohm, simbolo Ω): misura quanto un componente resiste al passaggio dell'energia elettrica Potenza P (misurata in watt, simbolo W): misura l'energia dissipata dal circuito Legge di Ohm: V=R I Prima legge di Joule: P=V I=R I2=V2/R

Concetti di base dell'elettronica In un circuito, perché funzioni, ci deve essere almeno un percorso completo dall'alimentazione (VCC) a massa (GND) La corrente elettrica cerca sempre il percorso con meno resistenza possibile. Ciò vuol anche dire che se creata una connessione diretta (senza componenti, quindi senza o quasi resistenza, un filo ad esempio) tra VCC e GND, tutta la corrente fluirà lì (e nulla nel resto del circuito) e avrete fatto un corto circuito che provoca surriscaldamento e scintille e spesso brucia il circuito.

Architettura di Arduino Uno

Architettura di Arduino Uno

Architettura di Arduino Uno

Architettura di Arduino Uno

Analogico vs Digitale Segnale analogico Può assumere qualunque valore (eventualmente in un intervallo) È continuo in ampiezza (quanto vale) È continuo nello spazio e/o nel tempo. Segnale digitale Può assumere un insieme finito di valori, cioè è discreto in ampiezza È una sequenza di numeri, quindi è discreto nel tempo (e/o nello spazio)

PIN digitali (2/2) SPI: Serial Peripheral Interface, altro protocollo per la comunicazione seriale, realizzato mediante i pin 10-13 Pin 13: questo è anche automaticamente collegato al LED che dicevamo prima e quindi se questo pin è a valore alto (1) il led è acceso, altrimenti è spento

Altri componenti a disposizione Tralasciando i fili, i componenti principali sono: BreadBoard (in italiano spesso chiamata millefori): è il componente su cui inserire i vari componenti sia per tenerli fermi sia per collegarli tra loro Resistenze: ce ne sono molte e di tipo diverso. La caratteristica principale è il loro valore di resistenza (in ohm). LED: sfruttano la proprietà di alcuni semiconduttori di emettere fotoni tramite emissione spontanea. Di solito hanno due terminali: anodo e catodo. L'anodo è il terminale più lungo, oppure il catodo presenta una piegatura. Per farli funzionare bisogna collegare l'anodo al + (VCC) e il catodo al (GND) Switch o interruttore: uno switch interrompe il flusso di corrente, "spezzando" il circuito quando aperto e chiudendolo quando chiuso. Potenziometro: è un dispositivo che permette la variazione della tensione letta in uscita modificato tramite una manovella la resistenza del dispositivo. Ha 3 terminali, uno da collegare a VCC, uno a GND e il terzo (centrale o isolato) per leggere la tensione variabile.

PRIMO PROGETTO CON ARDUINO SERIE VS PARALLELO NEI CIRCUITI ELETTRICI

Primo Progetto Prima di cominciare a parlare di programmazione di Arduino facciamo un paio di prove per capire il concetto fondamentale di serie e parallelo. Qui Arduino fa solo da tramite fornendo alimentazione al circuito, ma null'altro. Innanzitutto colleghiamo Arduino all'alimentazione. La cosa più pratica è di utilizzare il cavo USB a disposizione nel kit collegandolo ad un computer (ad es il portatile). Componenti necessari: Arduino e breadboard, magari nella piattaforma in legno del kit Due cavi lunghi (poss. rosso e nero) Un led rosso Uno switch o pulsante Una resistenza da 220 ohm Due connettori corti

Primo Progetto Prima di cominciare a parlare di programmazione di Arduino facciamo un paio di prove per capire il concetto fondamentale di serie e parallelo. Qui Arduino fa solo da tramite fornendo alimentazione al circuito, ma null'altro. Innanzitutto colleghiamo Arduino all'alimentazione. La cosa più pratica è di utilizzare il cavo USB a disposizione nel kit collegandolo ad un computer (ad es il portatile). Componenti necessari: Arduino e breadboard, magari nella piattaforma in legno del kit Due cavi lunghi (poss. rosso e nero) Un led rosso Uno switch o pulsante Una resistenza da 220 ohm Due connettori corti

Primo Progetto 1) Scollegare l'alimentazione prima di costruire il circuito 2) Collegare cavo rosso da pin 5V di Arduino a uno qualsiasi dei fori nella linea + della breadboard. Stessa cosa con cavo nero tra pin GND e foro nella linea -. 3) Posizionare lo switch a cavallo delle due parti della breadboard. La piega sui piedini deve andare verso il centro della board 4) Mettere una resistenza da 220 ohm tra VCC e un lato dello switch

Primo Progetto 5) Collegare l'anodo (piedino più lungo) il led rosso con l'altro piedino dello switch mediante un filo (di colore qualsiasi) 6) Collegare l'altro lato (catodo) del led con GND mediante un filo (colore qualsiasi) 7) Collegare l'alimentazione con il cavo USB e provare a premere lo switch

Serie e Parallelo Due componenti si dicono in serie quando vengono uno dopo l'altro. Due componenti di dicono in parallelo se esistono due percorsi paralleli della corrente, uno di fianco all'altro. Modifichiamo l'esempio precedente mettendo prima due switch in serie e poi in parallelo. In questo caso solo la pressione di entrambi gli switch fa accendere il led.

Serie e Parallelo Nel caso del parallelo invece basta che uno degli switch sia premuto per far accendere il led.

PROGRAMMAZIONE ARDUINO INSTALLAZIONE SOFTWARE COMUNICAZIONE CON LA SCHEDA PRIME ISTRUZIONI PRIMO PROGETTO DI PROGRAMMAZIONE

Programmazione dell Arduino Cominciamo a vedere, sempre tramite esempi pratici, come programmare il microcontrollore di Arduino. Programmarlo serve per modificare il suo comportamento a seconda degli ingressi (tipicamente dai sensori) e dell'algoritmo che si vuole realizzare. Tralasceremo se non strettamente necessario di fare disamine teoriche su algoritmi e concetti della programmazione Innanzitutto è necessario che vi scarichiate ed installate l'ide (Integrated Development Environment) per Arduino. Un IDE è un software che vi permette di scrivere direttamente il codice, compilarlo e scaricarlo sulla scheda Arduino per farlo funzionare. Spesso mette a disposizione anche altre funzionalità (come il debugger, l'help, l'evidenziazione delle parole chiavi, ecc.)

Progetto con IDE Il progetto prevedrà 3 led (due rossi e uno verde): inizialmente il led verde sarà acceso e gli altri spenti. Alla pressione di un pulsante (switch già visto) vogliamo che il verde si spenga e i due rossi lampeggino. Componenti necessari: Arduino e breadboard Due cavi lunghi (poss. rosso e nero) Due led rossi e uno verde Uno switch o pulsante Tre resistenze da 220 ohm e una da 10 Kohm Quattro connettori lunghi e uno corto

5) Aggiungiamo una connessione tra un lato dello switch e il PIN digitale 2 Progetto con IDE 1) Come al solito come prima cosa collegiamo GND e VCC 2) Inseriamo i 3 led 3) Colleghiamo l'anodo di ciascuno con un PIN digitale (es: 4 e 5 ai rossi e 3 al verde). Il catodo è invece collegato attraverso una resistenza da 220 ohm a GND 4) Mettiamo lo switch come negli esempi precedenti. Colleghiamo ad alimentazione e a massa attraverso una res. da 10 kohm

Progetto con IDE In pratica noterete che questa volta non c'è un collegamento diretto tra switch e led, ma solo attraverso Arduino che utilizzerà il pin digitale 2 per verificare se è stato premuto lo switch e a questo punto cambierà il comportamento (acceso/spento) dei led mediante i pin digitali 3,4 e 5. Dobbiamo quindi scrivere il codice che effettua questa operazione

Uso dei pin digitali I pin digitali hanno solo due stati possibili: HIGH (o ON, acceso) e LOW (o OFF, spento). Se un PIN in OUTPUT è messo HIGH significa che avrà una tensione di 5V. Come detto in precedenza, i pin digitali di Arduino possono essere posti sia come input che come output Di solito si parte almeno con il pin 2 perché i pin 0 e 1 come visto sono utilizzati per la trasmissione seriale ci serviranno 3 comandi: 1. pinmode per scegliere se un pin è input o output per quel programma 2. digitalread per leggere un valore da un pin digitale in input 3. digitalwrite per scrivere un valore su un pin digitale in output

Uso dei pin digitali Ogni programma o sketch di Arduino ha due funzioni principali. Una funzione è una parte di programma che esegue comandi specifici (simile al concetto di funzione in matematica). Le funzioni hanno nomi univoci e vengono "chiamate" (o "invocate") quando serve. Le funzioni principali di Arduino sono chiamate setup() e loop() (dove le parentesi stanno ad indicare i parametri di ingresso alla funzione che in questo caso non ci sono). La dichiarazione base di queste funzioni è la seguente: void setup() { } void loop() { } Il codice racchiuso tra parentesi graffe rappresenta la lista di comandi di quella funzione

Basti per ora sapere che la dichiarazione di una variabile si fa con: <tipo> <nome> [ = <valore iniziale ]; Uso dei pin digitali I programmi (in qualsiasi linguaggio) ricevono in ingresso dei dati, li elaborano e forniscono in uscita dei risultati. Per raggiungere questo risultato fanno uso di variabili, costanti, funzioni e comandi Le variabili sono delle entità che memorizzano dei dati (all'interno della memoria di Arduino). Esse hanno un nome (significativo), un tipo (che indica quale tipo di dato può essere memorizzato) ed eventualmente un valore iniziale (o di default; se non indicato il valore può essere zero o indefinito a seconda del processore). Il dato contenuto in una variabile può appunto variare valore, a differenza delle costanti.

Uso dei pin digitali Le variabili possono essere dichiarate fuori da qualsiasi funzione (ed in tal caso si chiamano globali) o all'interno di una funzione (ed in tal caso si chiamano locali). Le variabili globali sono "visibili" (cioè utilizzabili) da tutto il programma e da ogni funzione. Le variabili locali sono invece visibili solo all'interno della funzione dove sono dichiarate. Non possono esserci due variabili "allo stesso livello" con lo stesso nome, ma possono esserci (anche se meglio non farlo per evitare confusione) due variabili con lo stesso nome (e tipo diverso volendo!) che tra loro sono visibili. Es: int a=0; int a=0; void setup() { int a=1; int a=1; } void setup() { } OK! NO!!

Il codice Programma di prova (2/3) La fuzione setup() citata prima viene eseguito solo una volta quando l'arduino viene acceso (o la prima volta che viene caricato un nuovo sketch). In questa funzione di solito si fanno le operazioni di inizializzazione del programma. Nel nostro esempio dobbiamo solo settare per i 4 pin digitali se sono input o output. void setup() { pinmode(3,output); pinmode(4,output); pinmode(5,output); pinmode(2,input); }

Il codice La fuzione loop() invece viene eseguita in continuazione dopo la fine dell'esecuzione di setup(). Questo è il cuore del programma. Nel nostro caso dobbiamo leggere il valore del pin 2 per verificare se è stato premuto il bottone e di conseguenza cambiare lo stato switchstate e il comportamento dei led. Per verificare il valore di un pin in input si usa digitalread con un parametro che è il numero del pin da leggere. void loop() { switchstate = digitalread(2); // questo è un commento Se avete necessità di inserire un commento si usano le doppie barre (dritte /, sopra al 7, non quelle rovesciate \ a sinistra di 1). Se c'è tensione sul pin 2 (e si ha solo se il circuito è chiuso dal bottone, quindi il bottone è premuto), allora nella variabile switchstate si mette il valore 1 (HIGH) altrimenti il valore 0 (LOW).

IF ed ELSE Cominciamo a vedere le strutture di controllo. Queste permettono di modificare l esecuzione sequenziale del programma. La prima e più semplice (anche più usata) è l'istruzione condizionale IF che permette di eseguire due parti di programma diverse a seconda che una condizione sia VERA o FALSA. Per verificare una condizione si usano i predicati booleani e gli operatori relazionali o Gli operatori relazionali sono: == (uguale),!= (diverso), <, <=, >, >=. Mettono a confronto due valori e se il confronto è vero (es 5>4) allora restituiscono il valore VERO (true, 1) altrimenti FALSO (false, 0).

IF ed ELSE I predicati booleani si basano sull'algebra di Boole. I simboli (valori) di base dell algebra di Boole sono lo 0 (falso) e 1 (vero), come nel sistema binario. ole operazioni di base dell algebra sono: o somma o OR logico oprodotto o AND logico ocomplemento o NOT logico O Le tabelle di verità di queste operazioni sono le seguenti: Legge di De Morgan: NOT(a AND b) = NOT(a) OR NOT(b) NOT(NOT(a) OR (b AND c)) = a AND NOT(b AND c) = = a AND NOT(b) OR NOT(c)

Il codice Riprendiamo quindi il nostro progetto. Eravamo rimasti alla funzione loop() che iniziava così: void loop() { switchstate = digitalread(2); Ora verifichiamo il valore letto dal pin 2: if (switchstate == LOW) { digitalwrite(3, HIGH); digitalwrite(4, LOW); digitalwrite(5, LOW); } Quindi se il pulsante non è premuto, il pin 2 è a LOW, quindi anche switchstate, quindi si esegue la parte IF accendendo il led verde e tenendo spenti quelli rossi

Il codice Se invece il pulsante viene premuto vogliamo far lampeggiare i due led rossi e spegnere il verde: else { digitalwrite(3, LOW); digitalwrite(4, LOW); digitalwrite(5, HIGH); delay(250); // aspetta per ¼ di secondo digitalwrite(3, LOW); digitalwrite(4, HIGH); digitalwrite(5, LOW); delay(250); // aspetta per ¼ di secondo } } // fine loop()