Funkcia → shiftOut()
Popis :
Posúva bajt dát o jeden bit. Začína buď od najvyššieho (t. j. ľavého) alebo najmenej (pravého) významného bitu.
Každý bit sa postupne zapíše na dátový kolík, po ktorom sa pulzuje hodinový kolík (vysoký, potom nízky), čím sa indikuje, že bit je dostupný.
Poznámka – ak používate rozhranie so zariadením, ktoré je taktované stúpajúcimi hranami, musíte sa pred volaním funkcie shiftOut() uistiť, že hodinový kolík je LOW. s volaním funkcie digitalWrite (clockPin, LOW).
Toto je softvérová implementácia, knižnica SPI, poskytuje hardvérovú implementáciu, ktorá je rýchlejšia, ale funguje len na konkrétnych pinoch.
Syntax :
shiftOut(dataPin, clockPin, bitOrder, value)
Parametre :
dataPin: kolík, na ktorý sa má vypísať každý bit. Povolené typy údajov: int. clockPin: kolík, ktorý sa má prepnúť, keď je dataPin nastavený na správnu hodnotu. Povolené typy údajov: int. bitOrder: v akom poradí sa majú bity posunúť; buď MSBFIRST alebo LSBFIRST. (Najskôr najvýznamnejší bit, alebo Najmenej významný bit ako prvý). hodnota: údaje, ktoré sa majú posunúť. Povolené typy údajov: bajt.
Returns : –
Príklad kódu :
Ovládanie posuvného registra 74HC595.
//Pin pripojený k ST_CP 74HC595
int latchPin = 8;
//Pin pripojený k SH_CP of 74HC595
int clockPin = 12;
////Pin pripojený k DS of 74HC595
int dataPin = 11;
void setup() {
//nastaviť kolíky na výstup, pretože sú adresované v hlavnej slučke
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
//počítať rutina
for (int j = 0; j < 256; j++) {
//zem latchPin Low(nízko) tak dlho, ako budete vysielať
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, j);
//vrátiť vysoko
//už nemusí počúvať informácie
digitalWrite(latchPin, HIGH);
delay(1000);
}
}
Poznámky :
DataPin a clockPin už musia byť nakonfigurované ako výstupy volaním pinMode(). shiftOut sa momentálne zapisuje na výstup 1 bajt (8 bitov), takže na výstup hodnôt väčších ako 255 je potrebná dvojkroková operácia.
// Urobiť to pre seriál MSBFIRST
int data = 500;
// posunúť preč vysoký bajt
shiftOut(dataPin, clock, MSBFIRST, (data >> 8));
//posunuť preč nízky bajt
shiftOut(dataPin, clock, MSBFIRST, data);
//Alebo to urobiť pre seriál LSBFIRST
data = 500;
// posunuť preč nízky bajt
shiftOut(dataPin, clock, LSBFIRST, data);
// posunúť preč vysoký bajt
shiftOut(dataPin, clock, LSBFIRST, (data >> 8));
Pridaj komentár