Corso base su arduino Seconda parte

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Corso base su arduino Seconda parte"

Transcript

1 Corso base su arduino Seconda parte Gli ingressi digitali Gli stessi piedini utilizzati come uscite digitali possono essere impiegati come ingressi digitali. I livelli logici sono ancora di tipo TTL (livello basso = 0V, livello alto = 5V). Cosa si può collegare a tali ingressi? Il caso più frequente consiste nella lettura dello stato di uno o più pulsanti, ma trovano applicazione anche nella lettura di un fotoaccoppiatore, di un sensore ad effetto Hall (di tipo ON-OFF), di un tastierino numerico, di un segnale impulsivo ad onda rettangolare, dello stato di un sensore PIR, di sensori con uscita digitale, ecc In questa sede tratterò l esempio classico della gestione di un singolo pulsante normalmente aperto. Innanzitutto, come si collega un pulsante alla scheda arduino? Ci sono due modalità possibili: attivo alto quando premo il pulsante mando alla scheda un livello alto, quando lo rilascio alla scheda arriva un livello basso; attivo basso il contrario del caso precedente, premo il pulsante e mando un livello basso. Gli schemi di collegamento sono riportati nella figura seguente Nella parte superiore vediamo un pulsante attivo basso, nelle posizioni aperto (sinistra) e chiuso (destra). Nella parte inferiore notiamo lo schema di collegamento di un pulsante attivo alto. La freccia centrale di tutte e 4 le immagini va collegata ad un piedino di ingresso digitale di arduino, la 1

2 freccia superiore va al terminale 5V e la massa al terminale GND. Il valore consigliato delle resistenze è di 10 KΩ. Nota: le porte di arduino hanno già al loro interno delle resistenze di pullup che si possono attivare nel modo seguente: nella funzione setup() si definisce il piedino come ingresso con l istruzione pinmode(numero_del_piedino, INPUT_PULLUP); Per definire un piedino come ingresso digitale, è necessario inserire nella funzione setup() l istruzione pinmode(numero_del_piedino, INPUT); dove numero_del_piedino può essere una costante da 0 a 13 o una variabile con lo stesso campo di valori. Una volta definito un piedino come ingresso, per leggere lo stato dell ingresso digitale si utilizza la funzione digitalread(numero_del_piedino) che può ritornare solo due valori: HIGH (è stato rilevato un livello alto) oppure LOW (è stato rilevato un livello basso). Per chiarire quanto esposto, vediamo come scrivere un programma che legge lo stato di un pulsante attivo alto e, se questo è premuto, accende il LED L della scheda arduino Uno. Supponiamo di collegare il pulsante al piedino 7 come nello schema di cablaggio seguente: Il programma che accende il LED L può essere: 2

3 #define LED 13 #define PULSANTE 7 LED sul piedino 13 (interno alla scheda) Piedino a cui è collegato il pulsante int val = 0; variabile dove salvo lo stato del pulsante void setup(){ pinmode(led, OUTPUT); Piedino 13 come uscita digitale pinmode(pulsante, INPUT); Piedino 7 come ingresso digitale void loop(){ per sempre val = digitalread(pulsante); salvo in val lo stato del pulsante if (val == HIGH) se lo stato del pulsante è alto digitalwrite(led, HIGH); accendo il LED else digitalwrite(led, LOW); altrimenti spengo il LED Modi alternativi per dichiarare LED e PULSANTE: const int LED = 13; const int PULSANTE = 7; oppure: int LED = 13; int PULSANTE = 7; Programma in forma più compatta: #define LED 13 #define PULSANTE 7 LED sul piedino 13 (interno alla scheda) Piedino a cui è collegato il pulsante void setup(){ pinmode(led, OUTPUT); Piedino 13 come uscita digitale pinmode(pulsante, INPUT); Piedino 7 come ingresso digitale void loop(){ per sempre if (digitalread(pulsante) == HIGH) se lo stato del pulsante è alto digitalwrite(led, HIGH); accendo il LED else digitalwrite(led, LOW); altrimenti spengo il LED Proponiamoci ora di modificare il programma in questo modo: vogliamo che ad ogni pressione del pulsante il LED cambi stato. Premo una volta e il LED si accende, premo un altra volta e il LED si spegne, e così via Non dovrebbe essere così difficile, basta introdurre un ulteriore variabile che memorizzi lo stato del pulsante in questo modo: ogni volta che premo il pulsante la variabile cambia valore da 0 a 1 e viceversa. Poi, se questa variabile vale 0, spengo il LED, se vale 1, lo accendo. 3

4 #define LED 13 #define PULSANTE 7 LED sul piedino 13 (interno alla scheda) Piedino a cui è collegato il pulsante int val = 0; variabile dove memorizzo il livello logico letto dal pulsante variabile dove salvo lo stato del pulsante int stato = 0; void setup(){ pinmode(led, OUTPUT); Piedino 13 come uscita digitale pinmode(pulsante, INPUT); Piedino 7 come ingresso digitale void loop(){ per sempre val = digitalread(pulsante); leggo il livello logico del pulsante if (val == HIGH) se il pulsante è premuto stato = 1 stato; cambio stato if (stato == 1) digitalwrite(led, HIGH); accendo il LED else digitalwrite(led, LOW); altrimenti spengo il LED Il programma appena visto non funziona nel modo previsto ed il comportamento del LED è imprevedibile. Ciò è dovuto, come molti già sapranno, al fatto che le istruzioni contenute nella funzione loop() vengono eseguite in tempi molto più rapidi rispetto ai normali riflessi di una persona e al rimbalzo dei contatti del pulsante Ogni volta che premo o rilascio il pulsante genero un treno di impulsi che complessivamente ha una durata di qualche millisecondo. L immagine, trovata in rete ( si riferisce ad un pulsante attivo alto, ma il fenomeno è lo stesso nel caso di un pulsante attivo basso. Esistono molte tecniche per rimediare a questo problema, sia hardware (uso di reti RC, porte logiche trigger di schmitt) che software. Esiste addirittura una libreria di arduino, denominata Bounce (rimbalzo). Vediamo allora una possibile soluzione di tipo software. Introdurremo una nuova variabile (vecchio_valore) dove verrà memorizzato il valore letto dal pulsante in precedenza e aggiungeremo un po di ritardo nel punto opportuno del programma. #define LED 13 #define PULSANTE 7 LED sul piedino 13 (interno alla scheda) Piedino a cui è collegato il pulsante int val = 0; variabile dove memorizzo il livello logico letto dal pulsante int vecchio_valore = 0; int stato = 0; variabile dove salvo lo stato del pulsante void setup(){ 4

5 pinmode(led, OUTPUT); Piedino 13 come uscita digitale pinmode(pulsante, INPUT); Piedino 7 come ingresso digitale void loop(){ per sempre val = digitalread(pulsante); leggo il livello logico del pulsante if ((val == HIGH) && (vecchio_valore == LOW)) { transizione avvenuta stato = 1 stato; cambio stato delay(100); attendi 100 millisecondi (sperimentale) vecchio_valore = val; memorizzo l ultimo valore letto dal pulsante if (stato == 1) digitalwrite(led, HIGH); accendo il LED else digitalwrite(led, LOW); altrimenti spengo il LED Il monitor seriale di arduino In precedenza abbiamo visto che cos è e come si attiva dalla IDE il monitor seriale. Ecco come si presenta: Sul bordo superiore della finestra viene riportata la porta seriale a cui è collegato arduino (la schermata è relativa ad un sistema operativo linux, su Windows viene riportata la porta COMx). Appena sotto c è un area di testo in cui si possono inserire dei caratteri da inviare alla scheda arduino qualora si premesse il pulsante invia. Proseguendo verso il basso, troviamo un area più ampia dove appariranno i caratteri inviati da arduino verso il PC. Sul bordo inferiore, la zona più importante è costituita dal menù a scomparsa posto sul lato destro e recante la scritta 9600 baud. Quest ultima rappresenta la velocità (baud = bit/secondo, perché la comunicazione è a soli due livelli 0 e 1) con cui il PC e la scheda arduino si scambiano i dati. A cosa può servire? 5

6 Rappresenta l equivalente di printf / scanf o cin /cout, pertanto può servire per visualizzare stringhe di caratteri, valori di variabili oppure inviare caratteri che il programma residente su arduino potrà interpretare come comandi. Il canale attraverso cui viaggiano i dati è costituito dalla porta seriale presente nel microcontrollore che comunica col PC tramite il cavo USB. Come si fa a stampare qualcosa? Come prima cosa, occorre inserire la seguente chiamata di funzione all interno della funzione setup(): Serial.begin(9600); Questa ha lo scopo di inizializzare il serial monitor e impostare la velocità di comunicazione (in questo caso a 9600 baud). La velocità deve essere uguale a quella impostata nella finestra del serial monitor. Per i C++isti: si fa riferimento ad un istanza della classe Serial e begin rappresenta l invocazione di un metodo di tale classe. Poi, quando vogliamo visualizzare qualcosa sul serial monitor, all interno del nostro programma inseriamo la chiamata alla funzione Serial.print oppure alla funzione Serial.println (si scrive print elle enne). Ad esempio, se vogliamo stampare una stringa costante di caratteri, possiamo scrivere: Serial.print( Maramao ); Serial.println( Cacao ); viene visualizzato Maramao viene visualizzato Cacao e va a capo della riga successiva Se vogliamo stampare il valore di una variabile: int cubetti_di_porfido = 17; Serial.print(cubetti_di porfido); viene visualizzato 17 La differenza tra Serial.print e Serial.println è che la seconda, dopo aver stampato, va a capo della riga successiva. Queste due funzioni (print e println) consentono di specificare un secondo parametro opzionale che rappresenta il formato e può essere: BIN (base binaria), DEC (base 10), OCT (base 8), HEX (base 16). Esempi: Serial.print(78, BIN) visualizza Serial.print(78, OCT) visualizza 116 Serial.print(78, DEC) visualizza 78 Serial.print(78, HEX) visualizza 4E Nel caso di numeri o variabili float, il secondo parametro è una cifra che rappresenta il numero di decimali da visualizzare (per arrotondamento). Esempi: Serial.println( , 0) visualizza 1 Serial.println( , 2) visualizza 1.23 Serial.println( , 4) visualizza Notare l ultima cifra! Vediamo un esempio di programma che fa uso di queste funzioni per visualizzare un conteggio da 0 in poi. 6

7 int number = 0; il numero di partenza void setup() { Serial.begin(9600); imposto la velocità di comunicazione in baud void loop(){ Serial.print( Numero = ); Serial.println(number); delay(1000); number++; Scrive Numero = scrive il valore della variabile e va a capo pausa di 1 secondo incrementa la variabile ripete dall inizio di loop() Dal monitor seriale è possibile anche inviare caratteri al programma che risiede nella scheda. In base al carattere inviato, si potranno poi prendere diverse decisioni. Il singolo carattere da inviare va scritto sulla riga di testo superiore, a sinistra del pulsante invia, che va poi premuto. Cosa succede se scrivo una stringa di più caratteri? Viene letto solo il primo carattere. C è modo di inviare una stringa di più caratteri? Sì, mediante Serial.readString(), ma esula dal presente corso. Nel programma su arduino, prima di poter leggere il carattere inviato, occorre accertarsi che la porta seriale abbia ricevuto dei caratteri e a tale scopo si invoca la funzione Serial.available() che ritorna il numero di caratteri presenti nel buffer della seriale. Una volta stabilito che la seriale ha ricevuto dei caratteri, la funzione che ci permette di leggere il primo carattere inviato è Serial.read(). Per chiarire quanto esposto, vediamo un esempio di programma che legge un carattere dal monitor seriale, se il carattere è 1, accende il LED sul piedino 13 (L) e visualizza sul monitor seriale la scritta LED acceso, se il carattere è 2, spegne il LED L e visualizza sul monitor seriale la scritta LED spento. Un carattere diverso da 1 o 2 comporterà la visualizzazione della scritta Comando ignoto: seguita dal codice ASCII del carattere stesso. int LED = 13; il piedino dove è collegato il LED void setup() { Serial.begin(9600); imposto la velocità di comunicazione in baud pinmode(led, OUTPUT); piedino 13 impostato come uscita digitale void loop(){ if (Serial.available()>0) { se la seriale ha ricevuto caratteri int comando = Serial.read(); leggo primo carattere if (comando == 1 ) { se è stato ricevuto il carattere 1 digitalwrite(led, HIGH); accende il LED L Serial.println( LED acceso ); stampa stringa e va a capo else if (comando == 2 ) { è stato ricevuto il car. 2 digitalwrite(led, LOW); spegne il LED Serial.println( LED spento ); else { nessuno dei due Serial.print( Comando ignoto: ); Serial.println(comando); stampa carattere non riconosciuto 7

8 fine if (Serial.available().... fine loop() Il display alfanumerico LCD Il monitor seriale risulta molto comodo nella fase di stesura del programma, ma richiede la presenza del PC collegato alla scheda arduino tramite cavo USB. Nelle applicazioni comuni della scheda arduino, il PC è inutile, ingombrante e dispensioso. Come fare allora per visualizzare informazioni numeriche o testuali? Pensate ad un distributore di bevande o di merendine, ad un termostato per caldaia, alla lavatrice, ecc, le informazioni vengono visualizzate su display alfanumerici o grafici a cristalli liquidi (LCD) di piccole dimensioni. Limitandoci ai display LCD alfanumerici, i più comuni visualizzano 2 o 4 righe di 16, 20 o più caratteri e sono dotati, in gran parte, di un interfaccia standard. Normalmente, la gestione di questi display non è semplice, ma arduino dispone di una libreria di funzioni che rende tutto più facile. Prima di trattare l aspetto software però, vediamo come si interfaccia un display 16 x 2 (due righe da 16 caratteri, compatibile HD44780) dal punto di vista dei segnali elettrici. l display retroilluminati hanno normalmente 16 piedini e di solito è presente un riferimento scritto che indica qual è il primo, l ultimo, oppure entrambi. Il piedino 1 va collegato a massa (GND di arduino) e il 2 a +5 V. Il terzo piedino serve per regolare il contrasto; va collegato al cursore di un potenziometro (10 KΩ, valore non critico) i cui terminali estremi vanno a GND e +5V. Il piedino RS (register select) serve per far capire al display, tramite un livello logico alto o basso, se gli stiamo inviando un carattere oppure un comando. Va collegato ad un uscita digitale di arduino. Il piedino R/W ci permette di leggere (livello alto) oppure scrivere (livello basso) nella memoria del 8

9 display. Usualmente si inviano caratteri per poterli visualizzare, quindi questo piedino viene posto stabilmente a livello basso (collegato a GND). Il piedino E (Enable) serve per sincronizzare la scrittura di un comando o di un carattere. In pratica, si fornisce il carattere / comando ai piedini dei dati del display e si provoca una breve variazione di livello logico, di durata predefinita, su questo piedino. In questo modo, il carattere / comando viene visualizzato / eseguito. Anche questo va collegato ad un uscita digitale di arduino. I successivi 8 piedini sono quelli che ricevono il carattere / comando in forma binaria e vanno collegati anch essi alle uscite digitali di arduino. Restano altri due piedini, utilizzati per la retroilluminazione del display. Vengono trattati come un LED pertanto, il catodo (piedino 16) va posto a GND e l anodo a +5V con in serie un resistore da 330 Ω. (Alcuni display non necessitano di resistore in serie, va consultato il datasheet). Facendo i conti, per pilotare un display di questo tipo servirebbero 10 uscite digitali della scheda arduino, un po troppe! Fortunatamente, esiste una modalità di comunicazione che sfrutta solo le 4 linee dati più significative del display (da D4 a D7), riducendo il numero di uscite digitali impegnate a 6 (RS, E, D4, D5, D6, D7). Il carattere / comando viene spezzato in due gruppi di 4 bit ciascuno e inviato in due scritture successive. Volendo ridurre ulteriormente il numero di uscite impegnate, si deve ricorrere a display con interfaccia su bus i2c, che costano qualcosina di più ma comunicano mediante 2 soli piedini (clock e dati, SCL e SDA). Ecco un esempio grafico di come va effettuato il collegamento tra la scheda arduino Uno ed un display LCD: In questo esempio, che non è vincolante come vedremo, RS è collegato al piedino 12 di arduino, E al piedino 11, D4, D5, D6, D7 rispettivamente ai piedini 5, 4, 3, 2. Notate la presenza del trimmer per la regolazione del contrasto, della resistenza in serie all anodo della retroilluminazione e il segnale R/W posto a massa (display sempre in scrittura). 9

10 Gestione software del display, la libreria LiquidCrystal Gestire un display LCD alfanumerico partendo da zero non è per niente semplice. La cosa diventa praticabile se ci si appoggia all apposita libreria già presente nel software di arduino. Innanzitutto, bisogna includere la libreria con l istruzione #include <LiquidCrystal.h> attenzione alle maiuscole e minuscole! La libreria ci mette a disposizione diverse funzioni (metodi C++), ma prima bisogna dichiarare un oggetto di tipo LiquidCrystal che di solito assume il nome di lcd e indicare a quali piedini di arduino sono collegati i segnali del display. La modalità d uso più comune è la seguente: LiquidCrystal lcd(rs, enable, d4, d5, d6, d7); dove, al posto dei termini dentro alle parentesi, vanno scritti i numeri dei piedini. Esempio che coincide con lo schema di cablaggio riportato in precedenza: LiquidCrystal lcd(12,11, 5, 4, 3, 2); Possiamo anche utilizzare altri piedini digitali al posto di quelli indicati, basta cambiare il cablaggio tra display e scheda arduino. Esistono altre modalità per dichiarare il display che prevedono di includere il piedino R/W e / o tutti e 8 i segnali dati (da D0 a D7), ma quella riportata è la più usata perché spreca meno piedini. Creato l oggetto lcd, nella funzione setup() bisogna inizializzare il display e specificare il numero di colonne e di righe dello stesso: lcd.begin(16,2); Inizializzo un display che si chiama lcd, con 16 colonne e 2 righe di caratteri A questo punto, abbiamo a disposizione le seguenti funzioni (metodi): lcd.clear(); Cancella lo schermo e posiziona il cursore sul primo carattere della prima riga lcd.home(); Non cancella, posiziona solo il cursore sul primo carattere della prima riga lcd.setcursor(colonna, riga); /* posiziona il cursore su colonna e riga indicate (possono essere numeri o variabili). La numerazione parte da 0 in entrambi i casi, quindi nel display in figura le colonne vanno da 0 a 15 e le righe da 0 a 1. Le successive scritture partiranno da tale posizione.*/ lcd.print (dato); dato può essere char, byte, int, float, stringa di caratteri Esempi: lcd.print( Mammalucco ); visualizza la stringa Mammalucco a partire dalla posizione del cursore float temp = 12.1; lcd.print(temp); visualizza il valore 12.1 assegnato alla variabile temp int i = 123; lcd.print(i); visualizza il valore 123 assegnato alla variabile i lcd.print(i, BIN); visualizza , cioè il valore di i in binario 10

11 lcd.print(i,hex); visualizza 7B, cioè il valore di i in esadecimale lcd.write(dato); visualizza il carattere (uno solo) assegnato a dato lcd.cursor() ; mostra il cursore (normalmente non si vede) lcd.nocursor(); nasconde il cursore lcd.blink(); fa lampeggiare il cursore (solo il cursore, non il testo!) lcd.noblink(); cursore fisso, non lampeggiante lcd.display(); mostra il contenuto del display lcd.nodisplay(); nasconde il testo nel display, assieme si possono usare per far lampeggiare il testo presente sul display lcd.scrolldisplayleft(); sposta il testo di un carattere verso sinistra lcd.scrolldisplayright(); sposta il testo di un carattere verso destra Inserite in un ciclo possono spostare il testo di un certo numero di caratteri a sinistra o a destra. lcd.autoscroll(); ogni volta che viene scritto un carattere, sposta il testo che lo precede di un carattere verso sinistra lcd.noautoscroll(); cessa l autoscroll lcd.createchar(num,data); permette di creare fino a 8 simboli personalizzati. Vedere documentazione su internet. Quello che segue è un piccolo programma dimostrativo di alcune delle funzionalità della libreria LiquidCrystal. Programma dimostrativo delle funzionalità della libreria LiquidCrystal A. Visentini Display 16x2 HD44780 compatibile collegato: pin 1 GND, pin 2 5V, pin 3 contrasto trimmer 10k, pin 4 Register Select a pin 12 arduino pin 5 Read/Write a GND pin 6 Enable a pin 11 arduino pin 11 DB4 a pin 5 arduino pin 12 DB5 a pin 4 arduino pin 13 DB6 a pin 3 arduino pin 14 DB7 a pin 2 arduino pin 15 Backlight anodo a +5V con in serie 330 ohm pin 16 Backlight catodo a GND #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); RS, E, D4, D5, D6, D7 int i; void setup() { lcd.begin(16, 2); 11 display 16 colonne 2 righe

12 void loop() { lcd.clear(); pulisce il display lcd.print("dimostrazione"); lcd.setcursor(0,1); riga inferiore delay(500); lcd.print("della libreria"); delay(1500); lcd.clear(); lcd.print("liquidcrystal"); delay(1000); for (i = 0; i < 13; i++) { lcd.scrolldisplayleft(); delay(200); for (i = 0; i < 13; i++) { lcd.scrolldisplayright(); delay(200); for (i = 0; i < 10; i++) { lcd.nodisplay(); delay(200); lcd.display(); delay(200); lcd.clear(); lcd.print("variabile = "); for ( i = 0; i < 10; i++){ lcd.setcursor(13, 0); lcd.print(i); delay(1000); Gli esempi svolti in classe e le esperienze di laboratorio proposte agli studenti La parte teorica della gestione dei pulsanti è quella riportata all inizio di questa dispensa. Per la parte laboratoriale, propongo le seguenti esperienze: Collegare 4 LED ed un pulsante alla scheda arduino e fare in modo che ad ogni pressione del pulsante si accenda un LED in sequenza. Ad esempio, numerando i LED da 1 a 4 e partendo con tutti i LED spenti, premo il pulsante e si accende il LED 1, premo ancora e si accende il LED 2 e così via fino al LED 4, poi si ricomincia dal LED 1. Naturalmente occorre inserire nel codice la tecnica antirimbalzo. Collegare alla scheda arduino un display a 7 segmenti ed un pulsante. Ad ogni pressione del pulsante la cifra visualizzata deve incrementarsi di una unità. La cifra deve partire da 0 ed arrivare a 9, per poi ripartire da 0. Come la precedente, ma con due pulsanti; col primo incremento il conteggio fino al massimo di 9, col secondo lo decremento fino al minimo di 0. Un po come i tasti per il controllo del volume di certe autoradio o lettori mp3. Interfacciamento di un sensore PIR (sensibile al calore umano) con arduino. Quando il sensore rileva una presenza si accende un LED e resta acceso per alcuni secondi anche dopo che il soggetto si è allontanato dal sensore. 12

13 Le esperienze che si possono realizzare col display LCD sono, a questo punto del programma svolto, le seguenti: Visualizzare un conteggio. Controllare attentamente i collegamenti perché il display è delicato e non sopporta inversioni di tensione. Far lampeggiare una scritta. In seguito, dopo aver spiegato il funzionamento degli ingressi analogici e del sensore ad ultrasuoni, le possibilità d uso del display LCD si ampliano notevolmente. Materiale extra: porta seriale virtuale per arduino Abbiamo visto che la porta seriale di arduino, che fa capo ai piedini digitali 0 e 1, viene utilizzata per trasferire i programmi dal PC alla scheda e per il monitor seriale. A volte è necessario utilizzarla per interfacciare altri dispositivi seriali (moduli GPS, moduli Bluetooth, moduli mp3, ecc ); in tal caso, la procedura da seguire prevede prima di inviare il programma alla scheda e poi,tolta l alimentazione, collegare il dispositivo seriale ai piedini 0 e 1. Converrete che la tecnica risulta oltremodo scomoda. Fortunatamente, la IDE di arduino ha già al suo interno una libreria che permette di emulare una porta seriale su qualsiasi coppia di piedini digitali. Tale libreria, denominata SoftwareSerial, non raggiunge le prestazioni della seriale hardware del microcontrollore, ma è utilizzabile senza problemi fino a 9600 baud e oltre. La SoftwareSerial mette a nostra disposizione le stesse funzioni (metodi) della seriale standard, pertanto possiamo utilizzarla per inviare e ricevere caratteri, stringhe, numeri interi e float. Come si usa? Prima di tutto, bisogna includere la libreria nel nostro programma con: #include <SoftwareSerial> Poi bisogna definire una coppia di piedini da utilizzare per la ricezione e per la trasmissione dei dati, ad esempio: int rxpin = 3; int txpin = 2; A questo punto, creare un oggetto di tipo SoftwareSerial al quale possiamo attribuire un nome valido di identificatore, ad esempio: SoftwareSerial la_mia_porta_seriale(rxpin, txpin); Nella funzione setup(), inserire l inizializzazione della porta con i parametri di trasmissione: la_mia_porta_seriale.begin(9600); 9600 baud 8N1 (8bit, no parità, 1 bit di stop) Ora è possibile utilizzarla con le stesse funzioni della seriale standard, avendo cura di sostituire la parola Serial con l identificatore che abbiamo scelto. Nel nostro esempio: 13

14 la_mia_porta_seriale.print( Bella giornata ); if (la_mia_porta_seriale.available()) la_mia_porta_seriale.read(); eccetera Materiale extra: Arduino e Bluetooth In commercio sono reperibili, a costi contenuti, dei moduli che permettono ad una scheda arduino di comunicare tramite protocollo Bluetooth 2.0. A dire il vero, sono apparsi ultimamente anche moduli BLE (Bluetooth Low Energy) a basso consumo, ma il loro costo e la difficoltà di gestione li rende, al momento, poco interessanti. I moduli a cui faccio riferimento sono gli HC-05 e HC-06; il primo costa 8-9 euro (Amazon) e dispone di maggiori funzionalità (può operare sia come master che come slave, tra l altro), il secondo costa intorno agli 8 euro (Amazon, molto meno su ebay, Ali express, Banggood, ecc ) e opera solo come slave. Nella maggior parte delle applicazioni è sufficiente lo HC-06. Entrambi comunicano con arduino mediante protocollo seriale, vengono alimentati a 5 V con un assorbimento di circa 20 ma, dispongono di un LED che fa vedere se sono accoppiati con un dispositivo Bluetooth (tablet, smartphone, PC) ed hanno un range di una decina di metri. Come si interfacciano? Con 4 terminali: Vcc, GND, TX, RX (HC-05 ne possiede altri 2 che non tratterò). Attenzione: i livelli logici dei piedini RX e TX del modulo Bluetooth operano con livelli logici (0V, 3,3V). Il piedino Vcc di HC va collegato al piedino 5V di arduino, il piedino GND di HC va collegato al piedino GND di arduino, il piedino TX di HC va collegato al piedino che useremo come RX di arduino (senza problemi di interfacciamento), il piedino RX di HC va collegato al piedino che useremo come TX di arduino, interponendo un partitore di tensione formato da 2 resistenze. Dal TX di arduino colleghiamo in serie una R = 1 K al piedino RX del modulo HC e da quest ultimo, una R = 2 K verso GND (vedere schema pratico più avanti). (Trasmissione di arduino alla ricezione del modulo Bluetooth e viceversa.) Esempio di utilizzo Come esempio, proposto anche ai miei studenti, vediamo come si possono comandare 4 carichi ONOFF (io ho usato 4 LED) collegati alla scheda arduino, tramite una app residente in uno smartphone o tablet android (gli iphone, ipad non vanno bene perché limitano l uso del Bluetooth. Se sapete come fare, ditemelo). Il collegamento sarà di tipo bi-direzionale, nel senso che inviando un comando tramite app accenderemo o spegneremo uno dei LED e nella app vedremo una frase inviata da arduino che ce lo confermerà. La app utilizzata si chiama Blueterm2, ma ce ne sono a bizzeffe che fanno le stesse cose. Prima di tutto, lo schema di cablaggio: 14

15 Vediamo adesso il programma, tenendo presente quanto segue: scrivendo 1 sulla tastiera della app, accenderemo il LED sul piedino 4, premendo 2 lo spegneremo, scrivendo 3 accenderemo il LED sul piedino 5, premendo 4 lo spegneremo, e così via fino a 8. Notate che è stata utilizzata la libreria SoftwareSerial, attribuendo RX al pin 3 di arduino e TX al pin 2. Il programma non è stato ottimizzato volutamente, per renderlo più comprensibile agli studenti. Prima di poterlo usare, occorre fare il pairing tra il Bluetooth dello smartphone e quello del modulo. La password del modulo è 1234 (si può cambiare). Poi, dall interno della app, è necessario connettersi con il modulo (di serie si chiamano HC-05, HC-06, i nomi si possono modificare). /* Comanda accensione 4 LED collegati ai pin 4, 5, 6 e 7 di arduino con R in serie da 330 ohm. Su terminale Bluetooth Android connesso: 1 accende led1 2 spegne led1 3 accende led2 4 spegne led2 5 accende led3 6 spegne led3 7 accende led4 8 spegne led4 Collegare pin 3 arduino a pin TX modulo Bluetooth. 15

16 Collegare pin 2 arduino a R2=1K e altro capo di R1 a RX Bluetooth. Collegare R2=2K tra RX Bluetooth e GND. Modulo Bluetooth alimentato a 5V. Provato con HC05 e HC06 */ #include <SoftwareSerial.h> includo libreria seriale virtuale int rxpin = 3; pin 3 arduino = RX seriale virtuale int txpin = 2; pin 2 arduino = TX seriale virtuale SoftwareSerial bluetooth(rxpin, txpin); associo TX e RX alla seriale virtuale che ho chiamato bluetooth char comando; variabile char che conterrà il comando ricevuto const int Led1 = 4; piedini associati ai LED const int Led2 = 5; const int Led3 = 6; const int Led4 = 7; void setup() { Serial.begin(9600); Inizializzo monitor seriale bluetooth.begin(9600); Inizializzo seriale virtuale chiamata bluetooth pinmode(led1,output); piedini con i LED come uscite digitali pinmode(led2,output); pinmode(led3,output); pinmode(led4,output); void loop(){ while(bluetooth.available()){ finchè ci sono caratteri nel buffer comando=bluetooth.read(); leggo carattere e lo assegno a comando if(!bluetooth.available()){ elaboro l ultimo carattere ricevuto switch (comando){ case '1': se comando = 1 digitalwrite(led1, HIGH); accendo LED1 bluetooth.println("led1 ON"); invio conferma alla app Serial.println("Led1 ON"); e anche al monitor seriale delay(20); piccolo ritardo comando=' '; sostituisco comando con uno non valido break; case '2': digitalwrite(led1, LOW); bluetooth.println("led1 OFF"); Serial.println("Led1 OFF"); delay(20); comando=' '; break; case '3': digitalwrite(led2, HIGH); bluetooth.println("led2 ON"); Serial.println("Led2 ON"); delay(20); comando=' '; break; case '4': digitalwrite(led2, LOW); bluetooth.println("led2 OFF"); Serial.println("Led2 OFF"); delay(20); comando=' '; break; case '5': 16

17 digitalwrite(led3, HIGH); bluetooth.println("led3 ON"); Serial.println("Led3 ON"); delay(20); comando=' '; break; case '6': digitalwrite(led3, LOW); bluetooth.println("led3 OFF"); Serial.println("Led3 OFF"); delay(20); comando=' '; break; case '7': digitalwrite(led4, HIGH); bluetooth.println("led4 ON"); Serial.println("Led4 ON"); delay(20); comando=' '; break; case '8': digitalwrite(led4, LOW); bluetooth.println("led4 OFF"); Serial.println("Led4 OFF"); delay(20); comando=' '; fine switch fine if(!bluetooth.available()) fine loop() 17

Corso Base Arduino ed Elettronica

Corso Base Arduino ed Elettronica Corso Base Arduino ed Elettronica Quarto incontro Display LCD, Sensori avanzati Relatore: Roberto Beligni rbeligni@altratecnoloiga.com Sensore di temperatura LM35 Il sensore di temperatura LM35 Possiede

Dettagli

ACCENDERE E SPEGNERE UN DIODO LED

ACCENDERE E SPEGNERE UN DIODO LED ACCENDERE E SPEGNERE UN DIODO LED ACCENDERE E SPEGNERE UN DIODO LED ACCENDERE E SPEGNERE UN DIODO LED ACCENDERE E SPEGNERE UN DIODO LED CON UN PULSANTE ACCENDERE E SPEGNERE UN DIODO LED CON UN PULSANTE

Dettagli

CTU Presenta. Contest Automation con Arduino. IK0XBX - Francesco

CTU Presenta. Contest Automation con Arduino. IK0XBX - Francesco CTU Presenta Contest Automation con Arduino IK0XBX - Francesco Arduino cosa è??? Arduino Uno lo standard Arduino Mega più in/out e 4 seriali Arduino Nano quello tascabile Arduino è una piattaforma open-source

Dettagli

Interfaccia seriale per LM709SW

Interfaccia seriale per LM709SW Interfaccia seriale per LM709SW Caratteristiche tecniche : Alimentazione di ingresso : 6.6 VDC 12 VDC Interfaccia di collegamento : RS232 Segnalazione a led di rx e tx seriale Segnalazione a led per errori

Dettagli

PRIMI PASSI CON ARDUINO

PRIMI PASSI CON ARDUINO PRIMI PASSI CON ARDUINO 1) Accensione e spegnimento del led presente sulla scheda Arduino. La scheda Arduino presenta, a bordo, alcuni led uno dei quali può essere controllato dal pin digitale 13; quando

Dettagli

Facciamo lampeggiare un led

Facciamo lampeggiare un led Facciamo lampeggiare un led Passiamo a fare qualche esercizio, il più semplice per iniziare a programmare con Arduino è il canonico esercizio blink, che trovate anche negli esempi del programma. Si tratta

Dettagli

Termometro digitale. Ivancich Stefano

Termometro digitale. Ivancich Stefano Termometro digitale Ivancich Stefano 11 Gennaio 2015 SOMMARIO Di seguito si illustra il progetto di un termometro digitale. Il progetto è molto utile per capire il funzionamento delle dinamiche interne

Dettagli

CORSO ARDUINO. Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM Jacopo Belli Giulio Fieramosca Luca Mattii

CORSO ARDUINO. Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM Jacopo Belli Giulio Fieramosca Luca Mattii CORSO ARDUINO Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM 206 Di cosa parliamo oggi... Generazione di suoni Sensoristica complessa: i protocolli di comunicazione; Shield per Arduino: circuiti avanzati

Dettagli

ARDUINO. Colleghiamolo al PC/MAC - FUNZIONA?

ARDUINO. Colleghiamolo al PC/MAC - FUNZIONA? ARDUINO Colleghiamolo al PC/MAC - FUNZIONA? DUE LED PREINSTALLATI led L è connesso al pin13. PWR indica se l alimentazione c è, e implicitamente se la porta USB è corretta ARDUINO Composizione del codice

Dettagli

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

CORSO ARDUINO. Corso ASEV Giulio Fieramosca Stefano Panichi. Stefano Panichi e Giulio Fieramosca CORSO ARDUINO Giulio Fieramosca Stefano Panichi Corso ASEV 2015 Pulsanti e interruttori Pushbutton Momentary button Pulsante monostabile A B Switch Interruttore bistabile C A B C D C B A Pulsanti e interruttori

Dettagli

Far lampeggiare un led o forse un semaforo?

Far lampeggiare un led o forse un semaforo? Far lampeggiare un led o forse un semaforo? Lezione 1 di Arduino Grazie per le slide a Giacomo Magisano, Duilio Peroni, Michele Maffucci Il circuito Un circuito è un percorso chiuso fatto da conduttore

Dettagli

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

Corso Arduino Maggio Riccardo Binetti Lezione 1 - Blinking LEDs with style Corso Arduino 2014 21 Maggio 2014 Riccardo Binetti punkerbino@gmail.com Lezione 1 - Blinking LEDs with style Riccardo Binetti Arduino 2014 Lezione 1 1 / 24 Fate domande Riccardo Binetti Arduino 2014 Lezione

Dettagli

Corso Base Arduino ed Elettronica

Corso Base Arduino ed Elettronica Corso Base Arduino ed Elettronica Terzo incontro Sensori e comunicazione con il computer Relatore: Roberto Beligni rbeligni@altratecnoloiga.com Il comunicazione seriale Per comunicare con la seriale abbiamo

Dettagli

Corso di programmazione Arduino DI MALVEZZI DAVIDE

Corso di programmazione Arduino DI MALVEZZI DAVIDE Corso di programmazione Arduino DI MALVEZZI DAVIDE Argomenti Pin digitali e pin analogici Gestione di timer e bottoni Utilizzo della porta seriale Oggetto String Controllo di schermi LCD Utilizzo dell

Dettagli

Relazione progetto Arduino

Relazione progetto Arduino Relazione progetto Arduino A cura di Francesca Cella e Andrea Marras Il progetto che abbiamo realizzato è un dispositivo in grado di leggere la temperatura, l umidità presente nell aria e di tenere il

Dettagli

14^ parte : Sensore a ultrasuoni HC SR04 e Arduino. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

14^ parte : Sensore a ultrasuoni HC SR04 e Arduino. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) 14^ parte : Sensore a ultrasuoni HC SR04 e Arduino Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) La GPRS Shield Un sensore a ultrasuoni come il HC SR 04 misura il tempo impiegato dalle onde

Dettagli

Il protocollo RS Introduzione. 1.2 Lo Standard RS-232

Il protocollo RS Introduzione. 1.2 Lo Standard RS-232 1 Il protocollo RS232 1.1 Introduzione Come noto un dispositivo di interfaccia permette la comunicazione tra la struttura hardware di un calcolatore e uno o più dispositivi esterni. Uno degli obiettivi

Dettagli

7^ parte : Acquisizione della temperatura con LM35 e visualizzazione su display LCD. Author: Ing. Sebastiano Giannitto (ITIS M.

7^ parte : Acquisizione della temperatura con LM35 e visualizzazione su display LCD. Author: Ing. Sebastiano Giannitto (ITIS M. 7^ parte : Acquisizione della temperatura con LM35 e visualizzazione su display LCD Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) Esperienzan 6 Lo scopo del progetto è realizzare un termometro

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 2ª) ver. Classe 3BN (elettronica) marzo 22 Giorgio Carpignano I.I.S. Primo LEVI - TORINO Il menù per oggi Lettura dei pulsanti Comunicazione

Dettagli

L'alfabeto di Arduino

L'alfabeto di Arduino L'alfabeto di Arduino Introduzione all'uso di Arduino lezione 4 Struttura della lezione Argomenti Input analogico - sensore di temperatura Uso del display LCD Il codice e le slide utilizzate sono suscettibili

Dettagli

EEPROM SERIALI IN I2C BUS.

EEPROM SERIALI IN I2C BUS. Corso di BASCOM 8051 - (Capitolo 3 0 ) Corso Teorico/Pratico di programmazione in BASCOM 8051. Autore: DAMINO Salvatore. EEPROM SERIALI IN I2C BUS. Tra i dispositivi più utilizzati, nelle applicazioni

Dettagli

Internetworking V a nno

Internetworking V a nno Internetworking V anno Introduzione ad Arduino Introduzione La scheda Arduino nasce nel 2005 dall idea di alcuni giovani ricercatori guidati da Massimo Banzi. Il loro obiettivo era quello di creare una

Dettagli

Circuiti antirimbalzo

Circuiti antirimbalzo Circuiti antirimbalzo La figura seguente mostra una semplice applicazione di un latch SR per l'accensione o lo spegnimento di un LED mediante due pulsanti "con ritorno": Le due resistenze R sono resistenze

Dettagli

Il Theremin con il microcontrollore

Il Theremin con il microcontrollore Il Theremin con il microcontrollore Possiamo costruire uno strumento simile al Theremin utilizzando un dispositivi programmabile come il microcontrollore e un sensore di distanza (ultrasuoni). A secondo

Dettagli

22/09/2010. Rossato Alessio

22/09/2010. Rossato Alessio Hardware del PC roxale@hotmail.it 1 I componenti del computer Possiamo paragonare il computer al corpo umano che, come sappiamo, è formato da un elemento centrale, il busto, al quale sono collegati gli

Dettagli

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

Tipologie dei dati nell SDK di Arduino come in un vero LP ad alto livello : Questa è una breve guida alla sintassi di base della famosa scheda a microprocessore Arduino. Maggiori informazioni potrete trovarle sul sito ufficiale a questo link Tipologie dei dati nell SDK di Arduino

Dettagli

Display numerico con i LED

Display numerico con i LED Display numerico con i LED Ferrari, Porti, Zannetti 1 febbraio 2016 1 Scheda Questo progetto prevede l unione di più caratteristiche prese dai vari progetti fatti in precedenza, per riuscire a formare

Dettagli

Apparecchiatura Kit KS.ino2.1 Preliminare 0.1c

Apparecchiatura Kit KS.ino2.1 Preliminare 0.1c Apparecchiatura Kit KS.ino2.1 Preliminare 0.1c Pagina 1 L apparecchiatura KS.ino2.1 è un Kit realizzato a scopo didattico, sperimentale; si presta ottimamente anche all utilizzo di automazioni casalinghe

Dettagli

CONTASECONDI CON DISPLAY A 7 SEGMENTI ARDUINO LIKE

CONTASECONDI CON DISPLAY A 7 SEGMENTI ARDUINO LIKE SCHEDA DI LABORATORIO N 3 CONTASECONDI CON DISPLAY A 7 SEGMENTI ARDUINO LIKE Si vuole realizzare un contasecondi con display a 7 segmenti utilizzando la scheda Arduino. Materiale occorrente: N 1 Bread

Dettagli

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

In questo tutorial decodificheremo i segnali provenienti da un telecomando qualsiasi e utilizzeremo gli stessi segnali per comandare Arduino a Arduino lettore e trasmettitore di codici IR In questo tutorial decodificheremo i segnali provenienti da un telecomando qualsiasi e utilizzeremo gli stessi segnali per comandare Arduino a distanza per

Dettagli

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

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

Dettagli

Le sintonie elettroniche per l ATV

Le sintonie elettroniche per l ATV Le sintonie elettroniche per l ATV II Meeting ATV Magenta 18/04/2004 IW2LFD Luciano Arrigoni iw2lfd@libero.it http://digilander.libero.it/iw2lfd A.R.I. Sezione di Gallarate IQ2GM - http://www.qsl.net/iq2gm/

Dettagli

Programma di simulazione per Arduino

Programma di simulazione per Arduino Programma di simulazione per Arduino Un interessante simulatore di circuiti elettronici che possono impiegare Arduino (ma non solo) si può usare online all indirizzo circuits.io Per utilizzare questo servizio

Dettagli

Macchina con Arduino Uno comandata tramite dispositivo Android e sensore ultrasuoni per fermarsi istantaneamente di fronte ad un ostacolo

Macchina con Arduino Uno comandata tramite dispositivo Android e sensore ultrasuoni per fermarsi istantaneamente di fronte ad un ostacolo Macchina con Arduino Uno comandata tramite dispositivo Android e sensore ultrasuoni per fermarsi istantaneamente di fronte ad un ostacolo Progetto di fine anno Gruppo C, A.S 2015/2016 Realizzato da Classe:

Dettagli

Gateway KNX/DALI 64/16 - da guida DIN GW Manuale Tecnico

Gateway KNX/DALI 64/16 - da guida DIN GW Manuale Tecnico Gateway KNX/DALI 64/16 - da guida DIN GW 90872 Manuale Tecnico 1 Sommario 1 Introduzione... 3 2 Applicazione... 3 2.1 Limiti delle associazioni... 3 3 Menù Generale... 4 3.1 Parametri... 4 3.2 Oggetti

Dettagli

============================================================================

============================================================================ progetto con rfid Scritto da tigiemme - 02/08/2013 22:10 Salve a tutti Avrei bisogno di aiuto per creare un progetto che mi frulla in testa da un po di tempo. Comincio col dire che sono un principiante

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 2ª) giugno 2013 Giorgio Carpignano I.I.S. PRIMO LEVI C.so Unione Sovietica 490 (TO) Materiale didattico: www.iisprimolevi.it Il menù per

Dettagli

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

FC-51: IR Infrared Obstacle Detection Sensor Module 2-30cm FC-51: IR Infrared Obstacle Detection Sensor Module 2-30cm Giorgio De Nunzio Giovanni Marsella 0 Premessa: i raggi infrarossi (IR) Fig. 0 Lo spettro delle onde elettromagnetiche, in cui è presente la porzione

Dettagli

Corso di BASCOM (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM Autore: DAMINO Salvatore. D I S P L A Y L C D (3).

Corso di BASCOM (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM Autore: DAMINO Salvatore. D I S P L A Y L C D (3). Corso di BASCOM 8051 - (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM 8051. Autore: DAMINO Salvatore. D I S P L A Y L C D (3). GESTIONE DI UNA SEMPLICE CALCOLATRICE. Questo programma

Dettagli

I SENSORI DI PROSSIMITA

I SENSORI DI PROSSIMITA I SENSORI DI PROSSIMITA In questa lezione su Arduino, parleremo di un interessante trasduttore, che può essere utile per tantissimi progetti: il sensore di presenza o di prossimità I sensori di prossimità

Dettagli

COMUNICAZIONE SERIALE a cura dell' Ing. Buttolo Marco

COMUNICAZIONE SERIALE a cura dell' Ing. Buttolo Marco COMUNICAZIONE SERIALE a cura dell' Ing. Buttolo Marco Un PC può comunicare in vari modi con le periferiche. Fondamentalmente esistono due tipi di comunicazione molto comuni: 1. La comunicazione seriale

Dettagli

SENSORI OTTICI - FOTORESISTENZE

SENSORI OTTICI - FOTORESISTENZE SENSORI OTTICI - FOTORESISTENZE ComponentI elettronici con resistenza inversamente proporzionale alla quantità di luce che lo colpisce. La corrente che attraversa una fotoresistenza è direttamente proporzionale

Dettagli

TM1638 BOARD con ARDUINO

TM1638 BOARD con ARDUINO TM1638 BOARD con ARDUINO 8-Bit LED 8-Bit Digital 8-Bit Key TM1638. Ci sono solo tre linee di controllo.c'è una libreria e la scheda ha solo 3 pin di controllo, più alimentazione e la terra. I pin di controllo

Dettagli

Rappresentazione binaria delle variabili (int e char)

Rappresentazione binaria delle variabili (int e char) Rappresentazione binaria delle variabili (int e char) int e char son i due tipi utilizzati dal linguaggio C per la rappresentazione di valori interi; ai valori delle variabili del primo tipo sono assegnati

Dettagli

Arduino. Led, pulsanti, PWM, tastierino, display sette segmenti, display LCD

Arduino. Led, pulsanti, PWM, tastierino, display sette segmenti, display LCD Arduino Led, pulsanti, PWM, tastierino, display sette segmenti, display LCD Accendere e spegnere i led in void setup() { for(int i=2;i

Dettagli

Progetto per il corso di Microcontrollori: Gestore Ambientale

Progetto per il corso di Microcontrollori: Gestore Ambientale UNIVERSITÀ DEGLI STUDI DELL INSUBRIA Corso di Laurea Magistrale in Informatica Progetto per il corso di Microcontrollori: Gestore Ambientale Studente: Bonizzi Mauro Matr. 711020 Anno Accademico 2013/2014

Dettagli

Indice. Introduzione 15. L hardware 24. Il software 43. Introduzione al linguaggio di Arduino 60. Basi del linguaggio di Arduino 65

Indice. Introduzione 15. L hardware 24. Il software 43. Introduzione al linguaggio di Arduino 60. Basi del linguaggio di Arduino 65 Indice Introduzione 15 1.1 - Un po di storia 15 1.2 - Le vecchie schede 18 1.3 - La filosofia open 23 L hardware 24 2.1 - La scheda Arduino UNO 24 2.1.1 - Avvertenze sull uso della scheda 27 2.2 - Il microcontrollore

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

CORSO ARDUINO. Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM Jacopo Belli Giulio Fieramosca Luca Mattii

CORSO ARDUINO. Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM Jacopo Belli Giulio Fieramosca Luca Mattii CORSO ARDUINO Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM 2016 1 FAQ time domande e risposte? 2 Iterazioni: while Si usa per ripetere un blocco di codice finché una condizione è vera, ma senza tenere

Dettagli

Lettura da tastiera e scrittura su monitor

Lettura da tastiera e scrittura su monitor Lettura da tastiera e scrittura su monitor Per poter leggere UN SINGOLO CARATTERE dalla tastiera e visualizzare UN SINGOLO CARATTERE sul monitor si possono utilizzare le funzioni: int getchar (void) (per

Dettagli

PowerFATT Modulo di vendita al banco e. Stampa su dispositivi fiscali

PowerFATT Modulo di vendita al banco e. Stampa su dispositivi fiscali PowerFATT Modulo di vendita al banco e Stampa su dispositivi fiscali Il software PowerFATT comprende un modulo di vendita al banco con il quale è possibile vendere gli articoli inseriti, come con un normale

Dettagli

Alunna: Gennuso Ylenia classe VB a.s. 2014/2015

Alunna: Gennuso Ylenia classe VB a.s. 2014/2015 Alunna: Gennuso Ylenia classe VB a.s. 2014/2015 Arduino è una piattaforma di sviluppo open-source basata su una semplice scheda I / O con un µc e un ambiente di sviluppo che implementa hardware e software

Dettagli

STRUTTURE DI CONTROLLO DEL C++

STRUTTURE DI CONTROLLO DEL C++ STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto

Dettagli

Tutorial Display LCD e PIC

Tutorial Display LCD e PIC Tutorial Display LCD e PIC Si fa presente per coloro che sono a "digiuno" con la programmazione dei PIC di leggersi il tutorial in questo link http://www.grix.it/viewer.php?page=429 Descrizione Questo

Dettagli

Scheda Didattica di Sperimentazione.

Scheda Didattica di Sperimentazione. Corso di BASCOM 8051 - (Capitolo 4 6 ) Corso Teorico/Pratico di programmazione in BASCOM 8051. Autore: DAMINO Salvatore. Scheda Didattica di Sperimentazione. La DEB 01 (Didactics Experimental Board) è

Dettagli

NMRONDOAS1-NMATX3-NMATX2S

NMRONDOAS1-NMATX3-NMATX2S NMRONDOAS1-NMATX3-NMATX2S SIRENA AUTOALIMENTATA VIA RADIO, BIDIREZIONALE, A PILE ALCALINE Descrizione generale Scheda ricetrasmittente in grado di comandare fino a 8 sirene radio con possibilità di ricevere

Dettagli

Bus RS-232. Ing. Gianfranco Miele April 28, 2011

Bus RS-232. Ing. Gianfranco Miele  April 28, 2011 Ing. Gianfranco Miele (g.miele@unicas.it) http://www.docente.unicas.it/gianfranco_miele April 28, 2011 Alcune definizioni Comunicazione seriale Bit trasmessi in sequenza Basta una sola linea Più lenta

Dettagli

Indruduzione... 1 Il modulo Bluetooth HC il firmware... 4 Collegamento della scheda... 4 L applicazione Android... 6

Indruduzione... 1 Il modulo Bluetooth HC il firmware... 4 Collegamento della scheda... 4 L applicazione Android... 6 Sommario Indruduzione... 1 Il modulo Bluetooth HC-06... 2 il firmware... 4 Collegamento della scheda... 4 L applicazione Android... 6 Indruduzione un semplice Dimmer Controller da 3,5 A/12 V, per gestire

Dettagli

Applicazioni dei microcontrollori PIC

Applicazioni dei microcontrollori PIC Applicazioni dei microcontrollori PIC In questa unità vengono esposte le modalità di realizzazione di un circuito hardware con il microcontroller PIC16C84 (o PIC16F84), per la prova dei programmi presentati

Dettagli

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

Arduino Tutorial #7 - Nunchuk materiale utilizzato Arduino, cavi elettrici, breadboard, nunchuk, 3 led. www.creativecommons.org Arduino Tutorial #7 - Nunchuk materiale utilizzato Arduino, cavi elettrici, breadboard, nunchuk, 3 led. Per vedere tutti i tutorial: /arduino/ In questo tutorial colleghiamo il

Dettagli

Gestione Termometro e Termostato.

Gestione Termometro e Termostato. Corso di BASCOM 8051 - (Capitolo 4 0 ) Corso Teorico/Pratico di programmazione in BASCOM 8051. Autore: DAMINO Salvatore. Gestione Termometro e Termostato. Un interessante dispositivo della Dallas (Maxim),

Dettagli

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

Domotica con Arduino. Prima di proseguire con la descrizione del progetto, elenco, di seguito, il materiale utilizzato: Domotica con Arduino Questo progetto, che chiamo sinteticamente come da titolo, si occupa di gestire l accensione e lo spegnimento di elettrodomestici e illuminazione, attraverso una semplice interfaccia

Dettagli

TERMOMETRO LCD BASATO SUL TRASDUTTORE DI TEMPERATURA ANALOGICO LM 35

TERMOMETRO LCD BASATO SUL TRASDUTTORE DI TEMPERATURA ANALOGICO LM 35 ESERCITAZIONE CON ARDUINO N 5 TERMOMETRO LCD BASATO SUL TRASDUTTORE DI TEMPERATURA ANALOGICO LM 35 Con il presente circuito, si vuole realizzare un termostato ambientale per un caseificio, che utilizza

Dettagli

Word 2003 Lavorare col testo

Word 2003 Lavorare col testo Word 2003 Lavorare col testo Scrivere cancellare selezionare 1 Modalità di visualizzazione 2 Prima di cominciare a scrivere bisogna conoscere le diverse modalità con cui Word 2003 permette di visualizzare

Dettagli

Corso Arduino Maggio Riccardo Binetti Lezione 2 - Il calore dell analogico

Corso Arduino Maggio Riccardo Binetti Lezione 2 - Il calore dell analogico Corso Arduino 2014 28 Maggio 2014 Riccardo Binetti punkerbino@gmail.com Lezione 2 - Il calore dell analogico Riccardo Binetti Arduino 2014 Lezione 2 1 / 27 Segnali analogici L altra volta abbiamo lavorato

Dettagli

Prof. Capuzzimati Mario - ITIS Magistri Cumacini - Como MICROCONTROLLORE

Prof. Capuzzimati Mario - ITIS Magistri Cumacini - Como MICROCONTROLLORE Microcontrollori MICROCONTROLLORE I Microcontrollori (MCU: MicroController Unit) sono dispositivi integrati su un singolo chip, che interagiscono direttamente col mondo esterno, grazie a un programma residente.

Dettagli

Realizzate il circuito come indicato nello schema seguente:

Realizzate il circuito come indicato nello schema seguente: Esercizio 1 Fare lampeggiare contemporaneamente due diodo LED collegati rispettivamente al pin 12 e 11 di Arduino con tempi di accensione e spegnimento pari ad 1 secondo. Realizzate il circuito come indicato

Dettagli

Lab. Sistemi - Classe 5Bn A. S. 2000/2001 ITIS Primo Levi - Torino AA.AA. STANDARD SERIALE DI COMUNICAZIONE: RS232 Lo standard seriale di

Lab. Sistemi - Classe 5Bn A. S. 2000/2001 ITIS Primo Levi - Torino AA.AA. STANDARD SERIALE DI COMUNICAZIONE: RS232 Lo standard seriale di STANDARD SERIALE DI COMUNICAZIONE: RS232 Lo standard seriale di interfacciamento è stato introdotto al fine di collegare dispositivi remoti a bassa velocità con un calcolatore centrale. In questo genere

Dettagli

Manuale d uso e manutenzione

Manuale d uso e manutenzione 2 Serial I/F RS22 optoisolata Manuale d uso e manutenzione 5904517201 Codice ordine: Data: 04/2014 - Rev: 1.2 Sommario 1. Generalità... 2. Caratteristiche tecniche.... Modalità di configurazione... 4.

Dettagli

EFA Automazione S.r.l. Serial Bridge 3 - Modbus RTU slave to PICnet (01 ITA).doc pag. 1 / 8

EFA Automazione S.r.l. Serial Bridge 3 - Modbus RTU slave to PICnet (01 ITA).doc pag. 1 / 8 EFA Automazione S.r.l. Serial Bridge 3 - Modbus RTU slave to PICnet (01 ITA).doc pag. 1 / 8 Applicazione Integrazione di reti PICnet mediante l interfacciamento del modulo master (PN MAS dotato di porta

Dettagli

Quindi dopo aver collegato tutto avremo qualcosa di simile:

Quindi dopo aver collegato tutto avremo qualcosa di simile: Arduino + IMU In questa lezione cercheremo di utilizzare un Arduino UNO e un IMU (giroscopi e accelerometri) per attivare dei motori a spazzole (brushed) a seconda dell'inclinazione dei sensori, in modo

Dettagli

Corso base su arduino Terza parte

Corso base su arduino Terza parte orso base su arduino Terza parte Gli ingressi analogici caratteristiche hardware Il microcontrollore di arduino Uno possiede al suo interno un convertitore analogico digitale con 10 bit di risoluzione.

Dettagli

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software: Il Software L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software: un insieme di programmi che permettono di trasformare un insieme di circuiti

Dettagli

CORSO ARDUINO. Jacopo Beli Giulio Fieramosca Luca Mati GOLEM Jacopo Belli Giulio Fieramosca Luca Mattii 1

CORSO ARDUINO. Jacopo Beli Giulio Fieramosca Luca Mati GOLEM Jacopo Belli Giulio Fieramosca Luca Mattii 1 CORSO ARDUINO Jacopo Beli Giulio Fieramosca Luca Mati GOLEM 2016 Jacopo Belli Giulio Fieramosca Luca Mattii 1 Cosa c'è dietro Arduino? Jacopo Belli Giulio Fieramosca Luca Mattii 2 Cosa c'è dietro Arduino?

Dettagli

Genere DATA Generalità Note Distribuzione

Genere DATA Generalità Note Distribuzione UTILIZZO DISPLAY 16X2 SU BREAD-BOARD ARDUINO RIFERIMENTI GENERALITA Genere DATA Generalità Note Distribuzione radio Feb 16 laboratorio af Utilizzare ARDUINO con efficacia per prove in laboratorio richiede

Dettagli

TMD 2CSG524000R2021 ABB

TMD 2CSG524000R2021 ABB TMD 2CSG524000R2021 2CSG445018D0901 ABB ABB ABB S.p.a Divisione ABB SACE V.le dell Industria, 18 20010 Vittuone (MI) Tel +39 02 9034 1 FAX +39 02 9034 7609 2 I Principali funzionalità Un eccessivo incremento

Dettagli

IST-1395.CS01.01/A CE395CS / Istruzioni d uso Pag. 2/6

IST-1395.CS01.01/A CE395CS / Istruzioni d uso Pag. 2/6 IT IST-1395.CS01.01/A File: IST-1395.CS01.01-A_CE395CS-IT_Convertitore RS232-RS422.docx CONVERTITORE SERIALE RS232-RS485 CE395CS ISTRUZIONI D USO TECNOCONTROL S.r.l. Via Miglioli, 4720090 SEGRATE (MI)

Dettagli

Bytronic s.r.l. via Como, Cairate (VA) Tel. 0331/ Fax. 0331/ Partita IVA SCHEDA TECNICA BY5165T

Bytronic s.r.l. via Como, Cairate (VA) Tel. 0331/ Fax. 0331/ Partita IVA SCHEDA TECNICA BY5165T BY5165T CARICABATTERIA INTELLIGENTE 2 x 12V/4A La presente documentazione è di proprietà esclusiva di Bytronic S.r.l. Via Como 55 21050 Cairate (VA) ITALY. Essa non può essere copiata, modificata o distribuita

Dettagli

DISPOSITIVO PER LA LETTURA DI UN ENCODER INCREMENTALE

DISPOSITIVO PER LA LETTURA DI UN ENCODER INCREMENTALE DISPOSITIVO PER LA LETTURA DI UN ENCODER INCREMENTALE Si propone l'uso di un microcontrollore pic16f84 della Microchip. Si acquisiscono i segnali di un encoder con due canali in quadratura con la possibilità

Dettagli

UNA CERTIFICAZIONE PER IL FUTURO

UNA CERTIFICAZIONE PER IL FUTURO UNA CERTIFICAZIONE PER IL FUTURO Test attitudinale 14 Maggio 2014 Alunno Nome: Cognome: Svolgere i seguenti esercizi a risposta multipla segnando una sola tra le soluzioni proposte. 1) Che tipo di computer

Dettagli

Variabili e Istruzioni

Variabili e Istruzioni Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome

Dettagli

Real Time Clock, in I2C BUS, Provvisto di RAM.

Real Time Clock, in I2C BUS, Provvisto di RAM. Corso di BASCOM 8051 - (Capitolo 4 1 ) Corso Teorico/Pratico di programmazione in BASCOM 8051. Autore: DAMINO Salvatore. Real Time Clock, in I2C BUS, Provvisto di RAM. Il PCF 8583 è un diffusissimo dispositivo

Dettagli

File binari e file di testo

File binari e file di testo I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file

Dettagli

HyperTerminal e Serie IDP TR

HyperTerminal e Serie IDP TR Sensori di spostamento a triangolazione laser INTRODUZIONE: HyperTerminal e Serie IDP TR In questo breve documento viene presentata una procedura per la configurazione del programma HyperTerminal di Microsoft

Dettagli

I dispositivi di input/output

I dispositivi di input/output I dispositivi di input/output I dispositivi di input/output (anche detti periferiche), permettono di realizzare l'interazione tra l'uomo e la macchina La loro funzione primaria è quella di consentire l'immissione

Dettagli

Progetto di Domotica

Progetto di Domotica Progetto di Domotica Titolo dell esercitazione: Progetto di Domotica Descrizione sommaria dell esperienza: Realizzazione di un circuito che permette il controllo di vari sensori all interno di un edificio.

Dettagli

FONDAMENTI DI ARDUINO

FONDAMENTI DI ARDUINO FONDAMENTI DI ARDUINO LEZIONE 1: LE BASI 8 novembre 2016 presso POLIFACTORY il makerspace del Politecnico di Milano PROGRAMMA DEL CORSO 8/11 Le basi, corrente elettrica, led, resistenze 10/11 Ingressi

Dettagli

Informatica! Appunti dal laboratorio 1!

Informatica! Appunti dal laboratorio 1! Informatica! Appunti dal laboratorio 1! Sistema Operativo! Windows 7, Windows 8, Mac OS X, Linux, Debian, Red Hat, etc etc! Il sistema operativo è un programma che serve a gestire TUTTE le risorse presenti

Dettagli

Specifiche del protocollo di comunicazione semplificato per il modulo seriale di I/O

Specifiche del protocollo di comunicazione semplificato per il modulo seriale di I/O Specifiche del protocollo di comunicazione semplificato per il modulo seriale di I/O Architettura del frame di comunicazione Il frame di comunicazione è lungo 13 bytes ed ha questo formato nell ordine

Dettagli

Dispositivi Power Line: manuale per l'installatore

Dispositivi Power Line: manuale per l'installatore Dispositivi Power Line: manuale per l'installatore Versione 1.0 Data: 13/03/12 Indice generale Introduzione...3 X-Gate...4 Collegamenti...4 Pulsanti e Led...5 Installazione e manutenzione...5 X-PL24...6

Dettagli

Sensori di Prossimità Guida Utente

Sensori di Prossimità Guida Utente Sensori di Prossimità Guida Utente 1 INDICE: 1 INTRODUZIONE... 2 2 NORME DI INSTALLAZIONE... 2 2.1 Precauzioni... 2 2.2 Connessione elettrica... 3 3 SETTAGGIO DEI CANALI CON ACQUISITORI GET... 3 4 CARATTERISTICHE

Dettagli

Tesina di Maturità. Gianfriddo Giuseppe Classe: 5^B I.T.I.S Indirizzo: Elettronica ed elettrotecnica Anno: 2014/15. Autore: Gianfriddo Giuseppe

Tesina di Maturità. Gianfriddo Giuseppe Classe: 5^B I.T.I.S Indirizzo: Elettronica ed elettrotecnica Anno: 2014/15. Autore: Gianfriddo Giuseppe 1 Tesina di Maturità Gianfriddo Giuseppe Classe: 5^B I.T.I.S Indirizzo: Elettronica ed elettrotecnica Anno: 2014/15 2 3 Premesse 4 L obiettivo che mi sono prefissato, inizialmente era quello di progettare,

Dettagli

D sistema d allarme con sensori magnetici

D sistema d allarme con sensori magnetici D sistema d allarme con sensori magnetici Il sistema di allarme proposto in questa nota prevede l utilizzo di sensori reed per rilevare l apertura di porte e/o finestre. Il programma prevede due sensori,

Dettagli

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

5^ parte : Controllare un LED RGB con 3 potenziometri. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) 5^ parte : Controllare un LED RGB con 3 potenziometri Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) Esperienzan 3 Lo scopo è riuscire a controllare i tre canali di un led RGB attraverso dei

Dettagli

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,

Dettagli

Modulo analogico D1-15A. Manuale Utente

Modulo analogico D1-15A. Manuale Utente Modulo analogico D1-15A Manuale Utente Modulo analogico D1-15A Manuale Utente Sielco Elettronica S.r.l. via Edison 209 20019 Settimo Milanese (MI ) Italia http://www.sielcoelettronica.com info@sielcoelettronica.com

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE

INTRODUZIONE ALLA PROGRAMMAZIONE INTRODUZIONE ALLA PROGRAMMAZIONE Prof. Enrico Terrone A. S: 2008/09 Definizioni Programmare significa risolvere problemi col computer, cioè far risolvere problemi al computer attraverso un insieme di informazioni

Dettagli

L interruttore viene montato su un dispositivo di accoppiamento bus.

L interruttore viene montato su un dispositivo di accoppiamento bus. L interruttore viene montato su un dispositivo di accoppiamento bus. I pulsanti possono inviare comandi di commutazione, regolazione di lampade, controllo di tapparelle o telegrammi da 1 byte agli attuatori

Dettagli

I CARATTERI E LE STRINGHE

I CARATTERI E LE STRINGHE I CARATTERI E LE STRINGHE IL CODICE ASCII Per memorizzare i simboli grafici corrispondenti ai caratteri bisogna associare un numero intero a ciascuno di essi Il codice ASCII / æski/ (American Standard

Dettagli

E labirinto cronaca di un fallimento

E labirinto cronaca di un fallimento E labirinto cronaca di un fallimento Non tutte le ciambelle riescono con il buco e questa e la relazione di un fallimento, poiche il risultato finale non e stato raggiunto. Ma il prototipo funziona correttamente

Dettagli