Diferencia entre revisiones de «bitRead()»
De ArduWiki
(→Ejemplo 2) |
(→Ejemplo 4) |
||
Línea 75: | Línea 75: | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
const byte LED[] = {2, 3, 4, 5, 6, 7, 8, 9}; | const byte LED[] = {2, 3, 4, 5, 6, 7, 8, 9}; | ||
− | const byte | + | const byte boton = 10; |
byte n; | byte n; | ||
Línea 82: | Línea 82: | ||
pinMode(LED[i], OUTPUT); | pinMode(LED[i], OUTPUT); | ||
} | } | ||
− | pinMode( | + | pinMode(boton, INPUT); |
} | } | ||
void loop() { | void loop() { | ||
− | if (digitalRead( | + | if (digitalRead(boton)){ |
− | while(digitalRead( | + | while(digitalRead(boton)){ |
delay(10); | delay(10); | ||
} | } |
Revisión del 23:48 17 jul 2019
Contenido
Descripción
Lee un bit especifico de una variable.
Sintaxis
bitRead(variable, n);
Parámetros
- variable
- variable a evaluar.
- n
- bit a leer. Empezando en 0 el menos significativo (derecha).
Retornos
1 o 0 dependiendo del valor de dicho bit
Advertencias
Nada.
Ejemplo 1
Revisar el bit más significativo (izquierda) es una manera alternativa para detectar un valor entero negativo en un numero tipo char.
char c = 200; // Al ser un tipo de dato con signo, 200 se traduce a -56
if (bitRead(c, 7)){
Serial.println("Es negativo");
}else{
Serial.println("Es positivo");
}
Ejemplo 2
Leer un byte e imprimirlo al reves (izquierda a derecha).
void setup() {
Serial.begin(9600);
byte pinState = B10101010;
for (byte i=0; i<8; i++) {
Serial.print(bitRead(pinState, i));
}
}
void loop(){
//Nada
}
Ejemplo 3
En este ejemplo usamos un 74x595 para manejar 7 LED con 3 pines de Arduino. En los LEd se mostraran los numero de 0~255 en binario.
void setup(){
Serial.begin(115200);
pinMode(9, OUTPUT); //STC (12), Latch pin
pinMode(10, OUTPUT); //SHC (11), Shift register
pinMode(11, OUTPUT); //DS (14), Data in
}
void loop(){
for (byte n=0; n<256; n++){
Serial.println(n);
for (byte i=0; i<8; i++){
digitalWrite(11, bitRead(n,i)); //Ingresamos bit uno a uno
digitalWrite(10, HIGH); //Pulso de Shift
digitalWrite(10, LOW);
}
digitalWrite(9, HIGH); //Pulso de Latch
digitalWrite(9, LOW);
delay(500);
}
}
Ejemplo 4
const byte LED[] = {2, 3, 4, 5, 6, 7, 8, 9};
const byte boton = 10;
byte n;
void setup() {
for (byte i=0; i<8; i++) {
pinMode(LED[i], OUTPUT);
}
pinMode(boton, INPUT);
}
void loop() {
if (digitalRead(boton)){
while(digitalRead(boton)){
delay(10);
}
n++;
for (byte i=0; i<8; i++) {
digitalWrite(LED[i], bitRead(n,i));
}
}
}
Vea también