Περιγραφή
Μετατοπίζει κάθε φορά προς τα έξω ένα bit ενός byte δεδομένων. Ξεκινά είτε από το αριστερότερο (MSB), είτε από το δεξιότερο (LSB) bit. To κάθε bit γράφεται με τη σειρά του σε έναν ακροδέκτη δεδομένων. Στην συνέχεια ένας ακροδέκτης ρολογιού δέχεται παλμούς. Στην αρχή έναν υψηλό παλμό και αμέσως μετά έναν χαμηλό παλμό. Αυτό συμβαίνει για να δείξει ότι το bit είναι διαθέσιμο.
Σημείωση: Εάν διασυνδέεστε με μια συσκευή η οποία χρονίζεται από την άνοδο των παρυφών, τότε θα πρέπει να βεβαιωθείτε ότι ο ακροδέκτης ρολογιού βρίσκεται στην κατάσταση low (χαμηλή) πριν από την κλήση της συνάρτησης shiftOut(). Για παράδειγμα μπορείτε να καλέσετε την συνάρτηση digitalWrite(clockPin, LOW).
Σύνταξη
shiftOut(dataPin, clockPin, bitOrder, τιμή)
Παράμετροι
dataPin: ο ακροδέκτης στον οποίο θα εξαχθεί το κάθε bit (ακέραιος).
clockPin: ο ακροδέκτης της εναλλαγής αφού πρώτα έχει τεθεί η σωστή τιμή στο dataPin (ακέραιος).
bitOrder: με ποιά σειρά να γίνει η προς τα έξω μετατόπιση των bits. Δηλαδή να ξεκινήσει πρώτα από τα αριστερά (MSB) ή πρώτα από τα δεξιά (LSB).
τιμή: το δεδομένο της εξωτερικής μετατόπισης (byte).
Επιστρέφει
Τίποτα
Σημείωση
Το dataPin και το clockPin πρέπει ήδη να έχουν διαμορφωθεί ως έξοδοι μετά από μια κλήση του pinMode().
Επί του παρόντος, το shiftOut είναι γραμμένο να βγάζει στην έξοδο 1 byte (8 bits). Έτσι αυτό απαιτεί μια διαδικασία των δύο βημάτων για να εξάγει τιμές μεγαλύτερες από το 255.
// Do this for MSBFIRST serial int data = 500; // shift out highbyte shiftOut(dataPin, clock, MSBFIRST, (data >> 8)); // shift out lowbyte shiftOut(dataPin, clock, MSBFIRST, data); // Or do this for LSBFIRST serial data = 500; // shift out lowbyte shiftOut(dataPin, clock, LSBFIRST, data); // shift out highbyte shiftOut(dataPin, clock, LSBFIRST, (data >> 8));
Παράδειγμα
//**************************************************************//
// Name : shiftOutCode, Hello World //
// Author : Carlyn Maw,Tom Igoe //
// Date : 25 Oct, 2006 //
// Version : 1.0 //
// Notes : Code for using a 74HC595 Shift Register //
// : to count from 0 to 255 //
//****************************************************************
//Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;
void setup() {
//set pins to output because they are addressed in the main loop
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
//count up routine
for (int j = 0; j < 256; j++) {
//ground latchPin and hold low for as long as you are transmitting
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, j);
//return the latch pin high to signal chip that it
//no longer needs to listen for information
digitalWrite(latchPin, HIGH);
delay(1000);
}
}
Επιστροφή στην σελίδα Παραπομπές Γλώσσας
