Вы находитесь на странице: 1из 4

Explico un poco.

:
Arduino trabaja a nivel de byte, entonces tenemos 8 bits

Como el ejercicio se restringe a 4 bits solo usaremos los 4 bits menos


significativos
No se usaran

se utilizaran

Entonces los nmeros que nos piden construir son


0: 0000
1: 0001
2: 0010
3: 0011
.
16: 1111
Hasta aqu todo claro!!!!
Entonces si queremos representar en los leds el numero 3, entonces
3=0011
Lo que implica que:
led1=apagado
led2=apagado
led3=encendido
led4=encendido
entonces almacenamos el 3 en nuestro byte
0
0
0
0
0
0

Nota: las casillas en rojo se llenan con 0 debido a normas de programacin.


Entonces necesito sacar los valores para encender los leds
Primero veo las posiciones del vector y como puedo acceder a un byte
0
0
0
0
0
0
1
1
7
6
5
4
3
2
1
0
posiciones
Entonces para obtener el primer valor que en este caso es 0 hago lo
siguiente
0
0
0
0
0
0
1
1
3
Siendo b el byte
int x = b >> 3

//Por qu x es int? R: por estrategias de programacin


ya que transformara el byte en su valor decimal

lo que hace esta instruccin es recorrer tres puestos el vector

Realizo una operacin lgica

x = x & 1;
lo que hace es: eliminar los bits en las posiciones 7 al 1 del byte, menos el primer bit
osea el de a posicion 0, que es el que posicione anteriormente en la primera posicin

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
-----------------------------------------------------------------------------------0
0
0
0
0
0
0
0
Siendo 0 mi resultado, lo que significa que el primer led no se
enciende
Luego entro a mi switch para ver a que led pertenece
switch (c)
{
case 1:
if(x==1){digitalWrite(PPin1,HIGH);}
if(x==0){digitalWrite(PPin1,LOW);}
break;
case 2:
if(x==1){digitalWrite(PPin2,HIGH);}
if(x==0){digitalWrite(PPin2,LOW);}
break;
case 3:
if(x==1){digitalWrite(PPin3,HIGH);}
if(x==0){digitalWrite(PPin3,LOW);}
break;
case 4:
if(x==1){digitalWrite(PPin4,HIGH);}
if(x==0){digitalWrite(PPin4,LOW);}
break;
default: break;
}
c++;
si observa bien es un proceso que debo repetir 4 veces entonces utilizo un
for para que me gire 4 veces
en la segunda iteracin tengo
0
0
0

1
2

Realizando la operaion logica tengo


0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
-----------------------------------------------------------------------------------0
0
0
0
0
0
0
0
Siendo 0 mi resultado lo que significa que el segundo led no se
enciende

En la tercera iteracin tengo


0

1
1

Realizando la operaion logica tengo


0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
-----------------------------------------------------------------------------------0
0
0
0
0
0
0
1
Siendo 1 mi resultado, lo que significa que el tercer led se
enciende
En la ultima iteracin tengo
0

0
Realizando la operacion logica tengo
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
1
-----------------------------------------------------------------------------------0
0
0
0
0
0
0
1
Siendo 1 mi resultado, lo que significa que el cuarto led se
enciende
Entonces obtengo el siguiente resultado
led1=apagado
led2=apagado
led3=encendido
led4=encendido

Вам также может понравиться