Anda di halaman 1dari 12

Search Programmazione WxWidgets CodeBlocks Android Elettronica Arduino 1-Wire

AA

Aug

27
2013

74HC595 e 74HC165: un aggiornamento sugli shift register


Arduino, Elettronica Add comments

69.164.218.62 Utente non autenticato Registrati Collegati

Italiano

In un precedente articolo abbiamo visto come espandere gli ingressi digitali con un 74HC165, mentre in un altro
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

English

pdfcrowd.com

abbiamo visto come espandere le uscite tramite 74HC595. Poi col passare degli articoli abbiamo visto come collegare i display LCD HD44780 compaibili attraverso i 74HC595 e per finire abbiamo preparato una libreria apposita per il controllo di questi chip. In questo breve articolo volevo solamente rivisitare i concetti precedentemente visti e metterli tutti insieme.
RSS McMajan Libreria Ss_TFT Arduino, rel e infrarossi. IteadStudio 2.8 TFT Display shield: Una nuova libreria Arduino e RS485: piccoli approfondimenti Arduino cos? (per principianti e anche meno)

I collegamenti
Abbiamo gi visto come collegare entrambi i tipi di chip, ma c una considerazione importante da poter aggiungere. Entrambi necessitano di tre pin, uno per i dati,

Categories Elettronica (36) 1-Wire (8) Arduino (30) Programmazione (26) Android (7) CodeBlocks (9) wxWidgets (11) Senza categoria (1)

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

WEB (1) Wordpress (1)

Elettronica Sito ufficiale Arduino

Programmazione HomePage Code::Blocks HomePage wxWidgets

Blog QR Code

uno per il clock ed uno che potremmo definire di abilitazione che nel caso della lettura f si che il chip prepari le letture per essere lette mentre nel caso della scrittura trascrive il buffer interno sulle uscite vere e proprie. La domanda : non che possiamo risparmiare ulteriormente qualche pin? Il pin dati in un caso settato come input e nellaltro come output, quindi non possono essere certo mescolati. Neanche il pin di abilitazione potr essere mescolato visto che non siamo certo in grado di leggere e scrivere in contemporanea ma possiamo unicamente fare una o laltra operazione nel medesimo istante. ma il pin di clock? Nel momento in cui non
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

leggiamo o scriviamo non rappresenta altro che un pin che sale e schende di livello ma che non ha alcun significato. Per questo motivo possiamo mettere in comune i pin di clock dei due chip cos risparmiamo un pin di Arduino. Oramai lo schema di connessione vi uscir fuori dalle orecchie, ma ve lo ripropongo ugualmente. Anzi, oggi voglio proprio esagerare, vi propongo lo schema del mio prototipo, quello che oramai avete visto in numerose foto e video. Per chi non lo ricordasse composto da un Arduino standalone, un 74HC165 con relativi pulsanti, un connettore FTDI e due 74HC595, uno connesso ad un display ed uno ad un ULN2803A a sua volta collegato a 8 LED alimentati a 12V da un alimentatore esterno. Non fatevi spaventare, non complicato come potrebbe sembrare a prima vista, sono i tre schemi gi proposti in precedenti articoli uniti insieme. Ho provveduto unicamente a unire il pin di clock come abbiamo detto e visto che non lavevo fatto in precedenza, ho messo i condensatori di disaccopiamento sulle linee di alimentazione del 74HC165 e del 74HC595 vista lesperienza con il display di cui vi ho gi raccontato.

Il software
Nei primi articoli abbiamo controllato in modo pi o meno
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

diretto i due chip. Oggi ho approfittato della libreria da me scritta per semplificare il software e connettere un display LCD. In questo modo possiamo scrivere sul display lo stato dei pulsanti in ingresso oltre che usare anche dei led per mostrare lo stato di pressione dei pulsanti. Anzich stampare sul display qualcosa tipo o e 1 per segnalare lo stato degli ingressi, ho stilizzato una lampadina spenta ed accesa, cos ripassiamo lutilizzo dei caratteri personalizzabili. Non ho utilizzato nessun meccanismo di debouncing ed in realt non ne abbiamo neanche mai parlato prima: quando premiamo un pulsante, nel momento i cui le parti metalliche cominciano a toccarsi, il contatto non ancora stabile, si generano delle piccole scintille e c unalternanza di segnali 0 e 1 che si succedono rapidamente fino a che otteniamo un segnale stabile alto. Se effettuiamo pi letture degli ingressi nel periodo instasbile, si avranno delle false letture che possono compromettere il funzionamento di tutto il progetto. Per questo motivo si usano dei meccanismi che cercano di eliminare questo problema. Possono essere sia di tipo hardware che software. In questultimo caso non si f che prendeere due o pi letture in un ristretto periodo di tempo e quando queste sono coerenti viene interpretata la reale
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

pressione del pulsante. Se invece non sono coerenti si interpreta levento come un falso contatto per cui il software si comporta come se non fosse successo nulla. Non ho trovato nessuna libreria pronta che effettui questo lavoro sugli shift register in ingresso, potrebbe essere unidea per un prossimo articolo. Oggi per ci limitiamo alla semplice lettura degli ingressi per cui la sketch definitiva sar:

#include <HC595.h> hc595 My595(12,11,13,2); // latch,clock,data,number of 74hc595

const int IN_PL = 9; const int IN_Data=10; const int IN_Clock=11; // era 8 nel vecchio articolo ma lo abbiamo accorpato a

int attuale=0; int lettura=0; unsigned char lampOFF[8] = { B01110, B10001, B10001, B10001, B01010, B01010, B unsigned char lampON[8] = { B01110, B11111, B11111, B11111, B01110, B01010, B0 void setup()
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

{ pinMode(IN_PL,OUTPUT); pinMode(IN_Data,INPUT); pinMode(IN_Clock,OUTPUT);

My595.DisplayReset(LCD595_BASIC_DISPLAY_INIT | LCD595_MORELINES ,0); My595.DisplayWrite("Setup is OK...",0); // serve solo a ripassare come scrive delay(1500); // piccola attesa per permetterci di leggere la scritta sopra My595.DisplayClean(0); // cancella il display My595.CreateChar(0,lampOFF,0); // crea il carattere ridefinito 0 per la lampa My595.CreateChar(1,lampON,0);// crea il carattere ridefinito 0 per la lampadi }

void loop() { delay(50); digitalWrite(IN_PL, LOW); digitalWrite(IN_PL, HIGH); lettura=shiftIn(IN_Data, IN_Clock, MSBFIRST ); if(lettura!=attuale) // se non ci sono variazioni non perde tempo ad aggiorna { attuale=lettura; My595.Send595Pin(attuale,1); // setta lo stato dei led sul secondo 74HC595 for(int i=0;i<8;i++)
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

My595.SetCursor(i,i%2,2,0); if(bitRead(attuale,i)) My595.DisplayChar(1,0); // 1 il carattere ridefini else My595.DisplayChar(0,0); // 0 il carattere ridefinito con la lampad } } }

Eccovi unimmagine del progetto in funzione. Anche se non si vede in foto, ho premuto il terzo, quarto e quinto pulsante, cosa che si riflette sullaccensione dei relativi LED e sulla visualizzazione nel display.
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Be Sociable, Share!

Tw eet

Like

Share

Articoli correlati: 1. Arduino, display HD44780 compatibile e 74HC595 2. Arduino e 74HC595: libreria per display HD44780 compatibili e uscite digitali. 3. 74HC165: come espandere gli ingressi digitali di Arduino. 4. Arduino e display HD44780 compatibile Related posts brought to you by Yet Another Related Posts
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Plugin.

Stefano

Stefano Smania, medico radiologo Programma in C dalla fine degli anni 80. Ha conoscenze discrete di C++, php, javascript, html, sql. Possiede approfondite conoscienze sullo standard DICOM. Bazzica con l'elettronica e unisce le diverse passioni in un progetto di domotica. Ha realizzato da solo un piano della propria casa, dal rivestimento termico, ai muri interni, l'impianto elettrico e domotico, idraulico, riscaldamento a pavimento, infissi e quant'altro vi venga in mente. Gli piace cucinare ma ha poco tempo per applicarvisi. Scrive questi articoli nella speranza che servano a qualcuno
Posted by Stefano at 14:30 Tagged w ith: 74HC165, 74HC595, arduino, caratteri personalizzati, display, HD44780, lcd

2 Responses to 74HC595 e 74HC165: un aggiornamento sugli shift register

1.

electro-logic says:
%A %B %e%q, %Y at %I:%M %p

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

Salve, Ho dato unocchiata al suo blog e lo trovo molto ben fatto. E possibile contattarla tramite il blog senza lasciare commenti? Log in to Reply

Stefano says:
%A %B %e%q, %Y at %I:%M %p Certo possibile anche se le risposte allinterno del blog di solito sono preferibili in quanto lasciano in eredit le risposte anche agli altri. Comunque la mia mail smania2000@alice.it Log in to Reply

Leave a Reply
You must be logged in to post a comment.

Arduino e 74HC595: libreria per display

IR Daikin: decodificare

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

HD44780 compatibili e uscite digitali.

protocolli infrarossi complessi.

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

Anda mungkin juga menyukai