Search Programmazione WxWidgets CodeBlocks Android Elettronica Arduino 1-Wire

AA

A

Aug

18
2013

Arduino e 74HC595: libreria per display HD44780 compatibili e uscite digitali.
Arduino, Elettronica Add comments

69.164.218.62 Utente non autenticato Registrati Collegati

Italiano

In un precedente articolo ve l’avevo promesso: ho scritto una libreria che permette di comandare display HD44780
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

English

pdfcrowd.com

com . Una raccamandazione: almeno per i display usate il condensatore di decoupling.attraverso un 74HC595 in contemporanea al controllo di uscite digitali poste sulla stessa linea. solo che per ogni linea impiegate tre pin digitali di Arduino in più.8 TFT Display shield: Una nuova libreria Arduino e RS485: piccoli approfondimenti Arduino – cos’è? (per principianti e anche meno) Categories Elettronica (36) 1-Wire (8) Arduino (30) Programmazione (26) Android (7) CodeBlocks (9) wxWidgets (11) Senza categoria (1) pdfcrowd. Vi dirò di più. Nulla vieta di creare due linee distinte. sino ad un massimo di 256 chip 74HC595 per cui potreste comandare 256 display o 2048 uscite digitali. Vi dico ciò perchè senza di esso avevo notato che dopo diverse migliaia di istruzioni inviate al display. IteadStudio 2. ma dubito che ci sia qualcuno a cui servono così tante uscite in contemporanea. potete tranquillamente utilizzare più di un display in contemporanea senza alcun problema e quante uscite digitali volete. Comunque ne ho provati solamente due per cui la velocità effettiva che si avrebbe utilizzando 256 chip in serie non ho idea di quale possa essere. saltuariamente vi era qualche isolato errore di open in browser PRO version Are you a developer? Try out the HTML to PDF API RSS McMajan Libreria Ss_TFT Arduino.1uF (100nF) che deve connettere Vcc e GND stando il più vicino possibile ai pin dell’integrato. relè e infrarossi. o una situazione mista come 5 display e 2008 uscite digitali. ossia il condensatore ceramico da 0.

number of 74hc595 Come vedete ci sono 4 parametri che corrispondono ai tre pin di latch. L’utilizzo ad alto livello è estremamente semplice.11. clock e data e per ultimo il numero di 74HC595 messi in serie su quella linea. Dopo aver incluso la libreria con #include <HC595. Nel caso specifico abbiamo open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd. Dopo decine di ore di debugging del software senza trovare nessun errore. WEB (1) Wordpress (1) Elettronica Sito ufficiale Arduino Usare la libreria per gestire uscite digitali La libreria può esssere utilizzata sia ad alto che a basso livello.interpretazione che andava ad alterare il contenuto del display.data.clock. ho messo i condensatori in ogni chip e non ho avuto più problemi.h>.2).com . // latch.13. mi sono detto: che sia quello? Detto fatto. ho infatti creato una classe in cui tutte le variabili e le funzioni sono pubbliche in questo modo è possibile interagire con la libreria a qualsiasi livello. dobbiamo preparare un’istanza alla classe hc595: Programmazione HomePage Code::Blocks HomePage wxWidgets Blog QR Code hc595 My595(12.

Set595Pin(Leds.Set595Pin(Leds. Fate MOLTA attenzione che il primo shift register sarà il numero 0 per cui l’1 rappresenta il secondo chip.com . Come vi dicevo potete accedere direttamente a tutte le funzioni e variabili della classe per cui se volete settare in modo diretto il buffer interno risparmiando una chiamata a funzione.Tutte le funzioni che cominciano con “Set” non fanno altro che modificare il buffer interno senza inviare nulla agli shift register. potete sostituire la My595. il clock all’11.il latch collegato al pin 12 di Arduino. data al 13 e sono connessi in serie due chip 74HC595. A questo punto se vogliamo settare le uscite di un determinato chip non facciamo altro che: My595.1). In questo caso setta i singoli bit che compongono il char Leds per le uscite dello shif register numero 1 (secondo parametro). Se volete inviare subito i dati aggiornati agli shift register usate la funzione Send595(). In questo modo è possibile modificare il contenuto di numerosi shift register con un solo ciclo di scrittura verso il display.. Send595().1) con open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.

com .D5.Buffer[1]=Leds.D6. potete farlo: My595. come in tutte le funzioni. 1). basta che siano dati binari. o quel che più vi aggrada.D1.Set595Pin(D7. L’ultimo parametro. a meno che ovviamente non dobbiate avere determinati effetti di sincronizzazione fra le vare uscite. Se usate solamente uscite digitali non vi serve altro. open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.My595. Se avete numerosi shift register da comandare vi conviene prima settare tutti i pin e poi utilizzare una singola Send595 per inviare tutti i dati con un’unico ciclo. è il numero dello shift register su cui andiamo ad agire.D3.D0. basta settare il buffer o in modo diretto o con una delle due versioni della SetPin e poi inviare il risultato con la Send595. true/false. Se per qualche motivo non mantenete una singola variabile ma volete usare dei bool per ogni singola uscita.D4. Dove D7-D0 sono i singoli bit che possono essere settati a 0/1.D2.

I parametri che possono essere specificati nel primo sono: LCD595_BASIC_DISPLAY_INIT: usa i parametri standar del chip HD44780 LCD595_USEFONT_5X10 : usa il font 5x10 anzichè il 5x8 LCD595_MORELINES: per display con più di una riga. Per farlo c’è una funzione specifica: My595.0). Il primo parametro permette di selezionare numero di righe e font oltre che a fare il reset vero e proprio.Usare la libreria per comandare display HD44780 L’stanza è identica a prima per cui non ci sono novità. Anche se non fanno specificatamente parte del reset fisico del display. Il open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd. Il secondo indica il chip a cui è collegato il display nella catena. la libreria in questa fase esegue anche un’operazione di accensione del display e sua “pulizia”. La prima cosa da fare subito dopo è il reset del display.ResetDisplay(LCD595_BASIC_DISPLAY_INIT | LCD595_MORELINES .com .

Queste tre operazioni sono delegate ad altrettante tre funzioni: My595. Ad esempio io ho un display 16×4: se cercate in rete troverete che gli indirizzi delle prime celle sono normalmente 0×00.0×54 che corrispondono al parametro 1 della mia libreria. ricordandoci che le coordinate partono da 0 e NON da 1.com .0×40. Ma il caso vuole che l’unico display che ho di questa grandezza ha come indirizzi 0×00.0×10. Probabilmente ci open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd. L’ultimo parametro è il numero di shift register a cui e connesso il display.cursore viene mantenuto spento. Fra le opzioni più comuni c’è lo spostamento del cursore e la scrittura di un carattere o una stringa. E il terzo parametro? Questo serve solamente nei display a 4 righe e anche in quel caso nel 90% delle volte lo lascerete sempre a 1.2.0×50 che ho associato al 2 in questo misterioso terzo parametro. Purtroppo nei display LCD l’indirizzo di memoria del primo carattrere di ogni singola riga non è standardizzato. A questo punto il display è pronto ad operare. I primi due parametri sono la X e la Y.3.SetCursor(0.0×14.0×40.0).

0). Una volta settata la posizione del cursore potete scriverci una lettera singola o una stringa con le due funzioni apposite: My595. Questa setta in modo diretto l’indirizzo della cella di memoria del display. Oltre a questa funzione è possibile interagire a più basso livello con un’altra funzione: My595. mentre la seconda scrive la stringa McMajan sempre dove open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd. My595.DisplayWrite("McMajan". il primo parametro indica l’indirizzo di memoria ed il secondo il chip a cui è connesso il display.SetDDRAM_Address(40.DisplayChar('Z'. La prima scrive il carattere Z nella posizione del cursore.sono molti altri casi diversi per cui è presumibile che ne vengano aggiunti altri in futuro. Per la cronaca nemmeno la LiquidCrystal originale gestisce correttamente il mio display.0).0).com .

SendLcdCommand(LCD595_DISPLAY_ON_C.com . Questa funziona può essere usata per comandare il display a basso livello. poi ci pensa la funzione a separare i primi bit dagli ultimi. Il secondo parametro. Vediamo le altri costanti pronte all’uso: LCD595_DISPLAY_ON_CB: Accende il display accendendo il cursore e facendo lampe LCD595_DISPLAY_ON_C: Accende il display accendendo il cursore ma senza fal la LCD595_DISPLAY_ON_B: Accende il display settando il lampeggiamento della posi LCD595_DISPLAY_ON: Accende il display senza cursore open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.si trova il cursore in quel momento. indica la posizione dello shift register nella catena. C’è poi un’altra funzione che permette di inviare comandi al display che è la SendLcdCommand. Questo comando accende il display (se non lo fosse) ed accende anche il cursore fisso (C).0). o può essere usata con delle costanti che ho preparato già pronte per l’uso. settare il pin RS e quant’altro. Ad esempio: My595. In ingresso prende un char contenente gli 8 bit che compongono il comando. come sempre.

0).21.2.CreateChar(0. // metto il cursore del display 0 su 5. Per finire ho implementato una funzione simile alla createChar della LiquidCrystal. // preparo l'array con i valori My595.10.com .DisplayChar(0.0. Per preparare e stampare un carattere potreste usare: byte MyChar[8] = {0. La funzione può essere richiamata con un My595. Il primo parametro indica il carattere da ridefinire (da 0 a 7).0). per creare caratteri personalizzati.MyChar.2 usando coo My595.0).0}.2.17.CreateChar(0.MyChar. // mappo il carattere 0 sul display 0 My595. il secondo contiene l’array con la mappatura del carattere e l’ultimo indica il display a cui applicare la funzione.LCD595_DISPLAY_OFF: Spegene il display. // scrivo il carattere 0 sul display 0 Sketch di esempio #include open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.SetCursor(5.14.10. LCD595_DISPLAY_CLEAR: Pulisce il display facendo un clear.0).

number of 74hc595 unsigned char Leds.1). char str[12]. itoa(Leds.0). My595.1. void setup() { My595.DisplayWrite(str.2). strcat(str. Leds=0.ResetDisplay(LCD595_BASIC_DISPLAY_INIT | LCD595_MORELINES .0).11.3.Leds%2.clock. } void loop() { My595. } open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.13. // latch.com . delay(800). My595.data.0). My595.0). Leds++. My595.hc595 My595(12.DisplayChar(32+Leds%96.SetCursor(Leds%13.Set595Pin(Leds.SetCursor(0.0).str.10).2." ").

ossia l’utilizzo di display LCD e uscite digitali in contemporanea sulla stessa serie di shift register. giusto per mostrarne la corretta attivazione.La sketch di esempio è molto semplice e riflette i comandi prima descritti uno ad uno. inoltre il valore viene scritto sul display e viene utilizzato anche per rappresentare alcuni dei caratteri disponibili che vengono scritti in modo alternato fra la prima e seconda riga. Prevede l’uso di due 74HC595 in serie. avanzando verso destra di un carattere alla volta. Il valore viene utilizzato in modo diretto per impostare i led collegati sul secondo shift register. sul primo è stato collegato un display LCD usando lo schema di collegamento visto nel precedente articolo e che rispecchia il funzionamento della LiquidCrystal originale. Qui sotto ho comunque riportato uno schema che fonde i due menzionati per cui avete un riferimento già pronto. In questo modo vedete all’opera quello che è lo scopo principale della libreria. open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd. La variabile Led viene inizializzata a 0 ed incrementata di uno ad ogni ciclo. ma il discorso è lo stesso).com . si noti comunque l’utilizzo dell’ULN2083A visto che il 74HC595 non è in grado di erogare sufficiente corrente per tutti i LED (in realtà il prototipo nasce per collegare dei relè. Sul secondo shif register ho collegato dei semplici led.

Ma più di mille parole vale sicuramente il video qui sotto che vi mostra il funzionamento della libreria in azione. La complessità dei collegamenti dipende dal fatto che questo open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com .

com . Per lo stesso motivo i led sono alimentati open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd. cosa legata al fatto che nel mio circuito definitivo verranno collegati dei relè e comunque il 74HC595 non è adatto ad erogare sufficiente corrente per tutti i Led.è un prototipo che utilizzo per altri scopi. C’è un Arduino creato in casa con i componenti minimali. ci sono due 74HC595 in uscita di cui uno collegato ad un ULN2803.

Considerazioni open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com .

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd. La pagina per il DOWNLOAD LA TROVATE QUI. Successivamente alla scrittura di questo articolo ho preparato una pagina apposita per il download della libreria in modo da poter tenere traccia degli aggiornamenti man mano che vengono rilasciati. Ho voluto scrivere queste ultime righe solo per spiegare che non ho scritto il software in questo modo perchè non sia in grado di fare di meglio ma è un risultato cercato per rendere la libreria il più possibile leggera e flessibile.com . Certo l’uso delle classi ci permette di semplificare la trasportabilità del software in quanto possiamo aggregare funzioni e variabili di uno specifico oggetto tutte insieme.Chiunque conosca la programmazione C++ non potrà che dire che la libreria è scritta in maniera grezza. infatti vengono ignorati i più basilari aspetti della programmazione come l’uso di metodi e variabili private. Sono però dell’idea che la programmazione a così basso livello non possa lasciare posto ad inutili complicazioni ed astrazioni del software che portano ad eccessivi sprechi delle poche risorse disponibili.

Share! Tw eet 0 Like 0 0 Share Articoli correlati: 1. display HD44780 compatibile e 74HC595 2. Arduino e display HD44780 compatibile 4.Be Sociable. 74HC165: come espandere gli ingressi digitali di Arduino. Arduino. 74HC595 e 74HC165: un aggiornamento sugli shift register 3. open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd. 5. Display HD44780 e caratteri personalizzati.com .

Stefano Stefano Smania. medico radiologo Programma in C dalla fine degli anni 80. javascript. ai muri interni.com . HD44780. php. riscaldamento a pavimento. html. dal rivestimento termico. library. Possiede approfondite conoscienze sullo standard DICOM. Scrive questi articoli nella speranza che servano a qualcuno Posted by Stefano at 23:44 Tagged w ith: 74HC595. Gli piace cucinare ma ha poco tempo per applicarvisi. Ha realizzato da solo un piano della propria casa. Bazzica con l'elettronica e unisce le diverse passioni in un progetto di domotica. libreria Leave a Reply You must be logged in to post a comment. arduino. Ha conoscenze discrete di C++. sql. l'impianto elettrico e domotico. infissi e quant'altro vi venga in mente.Related posts brought to you by Yet Another Related Posts Plugin. idraulico. open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.

Display HD44780 e caratteri personalizzati. 74HC595 e 74HC165: un aggiornamento sugli shift register © 2011 McMajan Suffusion theme by Sayontan Sinha open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com .