Ένα ιστολόγιο για όσους αγαπούν τις ηλεκτρονικές κατασκευές...

Δευτέρα 13 Νοεμβρίου 2017

ARDUINO pin expander με το 74HC595

Το arduino pin extender είναι ένα μικρό πλακετάκι που βοηθάει να αυξήσουμε τις εξόδους του  arduino. Μπορούμε να στήσουμε το κύκλωμα στο breadboard αλλά το πλακετάκι μας βοηθάει να έχουμε λιγότερες συνδέσεις με καλώδια και καταλαμβάνει πολύ μικρό χώρο. 


Σχηματικό διάγραμμα
Με την βοήθεια των δύο 74HC595 shift register μπορούμε να επεκτείνουμε τις εξόδους του arduino κατά 13 εξόδους. Δηλαδή απασχολούμε 3 από τις διαθέσιμες ψηφιακές εξόδους του arduino και έχουμε 16 ψηφιακές εξόδους + τις υπόλοιπες 10 ψηφιακές εξόδους που απέμειναν.

Υπόψη ότι η διάταξη αυτή εισάγει καθυστέρηση στην εκτέλεση του προγράμματος. Η εμφάνιση των 16 ψηφίων στις 16 εξόδους θα χρειαστεί αντίστοιχους κύκλους ρολογιού. Ενώ λοιπόν θεωρητικά μπορούμε να επεκτείνουμε ακόμη περισσότερο τις εξόδους προσθέτοντας περισσότερα 74HC595 σε σειρά αυτό θα πρέπει να γίνεται με μέτρο. Αν η εφαρμογή μας δεν απαιτεί υψηλές ταχύτητες εκτέλεσης μπορούμε να προσθέσουμε περισσότερους shift registers.


Η πλακέτα έχει δοθεί παραγγελία για κατασκευή και είναι σε αναμονή. Μόλις έρθουν θα ανεβάσω περισσότερες φωτογραφίες.



Η πραγματική πλακέτα πριν απο το κόλλημα όπως ήρθε από το εργοστάσιο παραγωγής.
Πλακέτες υπάρχουν διαθέσιμες δείτε εδώ

Στην πράξη,



Χρήση των επιπλέον pin.

Κώδικα για δοκιμές μπορείτε να βρείτε στο επίσημο site του arduino
----------------------------------------------------------
Μετά από έρευνα στο δίκτυο κατέληξα στο συμπέρασμα ότι η πιο χρηστική βιβλιοθήκη για την χρήση των επιπλέον pin είναι η παρακάτω Shift-Register-74HC595-Arduino-Library-master

Έχει δύο functions που επιτρέπουν να ορίσεις όλα τα pin με μια εντολή high ή low
HIGH  sr.setAllHigh();  
LOW  sr.setAllLow(); 

Μπορεί να ορίσει οποιοδήποτε pin HIGH ή LOW
int pin = 0;
sr.set(pin, HIGH); // ισοδύναμο με το sr.set(pin, 1);

Μπορεί να ορίσει όλα pin ταυτόχρονα
// sets all pins at once (pin 0 low, pin 1 high, ...)
uint8_t pinValues[] = { B10101010 };
sr.setAll(pinValues);


Το ίδιο για περισσότερους από έναν shift register.
// set multiple pins at once when using two shift registers in series
uint8_t pinValues[] = { B00011000, B10101010 };
sr.setAll(pinValues);


Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

Count down timer - χρονικό αντίστροφης μέτρησης

Μια απλή κατασκευή χρονομέτρου με αντίστροφη μέτρηση. Μπορεί να μετρήσει μέχρι 100 λεπτά με βήμα του ενός δευτερολέπτου. Είναι ιδανικό για ...