Diferencia entre revisiones de «shiftOut()»
(→Vea también) |
(→Vea también) |
||
Línea 79: | Línea 79: | ||
== Vea también == | == Vea también == | ||
<categorytree mode=all>Funciones bit y byte</categorytree> | <categorytree mode=all>Funciones bit y byte</categorytree> | ||
− | |||
* [[not bit a bit]] - (<nowiki>~</nowiki>) | * [[not bit a bit]] - (<nowiki>~</nowiki>) | ||
* [[and bit a bit]] - (<nowiki>&</nowiki>) | * [[and bit a bit]] - (<nowiki>&</nowiki>) |
Revisión del 23:58 11 jun 2019
Contenido
Descripción
Envia en un byte de datos un bit a cada vez por el pin indicado. Comienza a partir del bit más significativo (más a la izquierda)(MSB) o menos significativo (más a la derecha)(LSB) dependiendo del parámetro bitOrden. Cada bit se escribe a su vez en un pin de datos, después de lo cual un pulso de reloj se activa (pasa a nivel alto, y a continuación, a nivel bajo) para indicar que el bit está disponible.
Nota: Si está interactuando con un dispositivo que está administrado por bordes ascendentes (RISING), deberá asegurarse de que el pin del reloj esté bajo antes de la llamada shiftOut(), por ejemplo, con una llamada a digitalWrite(clockPin, LOW).
Sintexis
shiftOut(dataPin, clockPin, bitOrder, valor);
Parámetros
- dataPin
- el pin en el que se muestra cada bit int
- clockPin
- el pin para alternar una vez que el dataPin se ha establecido en el valor correcto int
- bitOrder
- qué orden desplazar los bits; ya sea MSBFIRST o LSBFIRST. (Bit más significativo primero, o, bit menos significativo primero)
- value
- los datos para desplazarse. byte
Retorna
La función shiftOut() escribe en la salida 1 byte (8 bits) por lo que requiere una operación de dos pasos para valores de salida mayores que 255 osea variables de 2 bytes tipo int.
Advertencias
- Los dataPin y clockPin deben estar ya configurados como salida con pinMode().
Ejemplo 1
En este ejemplo conectamos un 74x595 con 7 LED. Vcc(16)=MR(10)=+5V, GND(8)=OE(13)=GND.
const byte dataPin = 8; //Pin 14 de 74x595
const byte clockPin = 9; //Pin 11 de 74x595
const byte latchPin = 10; //Pin 12 de 74x595
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
for (byte i=0; i<256; i++) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, i);
digitalWrite(latchPin, HIGH); //Muestra
delay(500);
}
}
Ejemplo 2
En este ejemplo conectamos un 74x595 con un display 7 segmentos. Vcc(16)=MR(10)=+5V, GND(8)=OE(13)=GND.
const byte dataPin = 8; //Pin 14 de 74x595
const byte clockPin = 9; //Pin 11 de 74x595
const byte latchPin = 10; //Pin 12 de 74x595
const byte dig[10]={
252, //0
96, //1
218, //2
242, //3
102, //4
182, //5
190, //6
224, //7
254, //8
230 //9
};
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
for (byte i=0; i<10; i++) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, dig[i]);
digitalWrite(latchPin, HIGH); //Muestra
delay(500);
}
}
Vea también
- not bit a bit - (~)
- and bit a bit - (&)
- or bit a bit - (|)
- xor bit a bit - (^)
- bitshift left - (<<)
- or bit a bit compuesto (|=)
- and bit a bit compuesto (&=)
- EEPROM
Referencias
- Guia de referencia
- Funciones de Arduino - Prometec