Números binarios y su representación con Arduino

por | Jul 29, 2024 | Compluino

Los números binarios son fundamentales en el mundo de la electrónica y la programación. Utilizados en todo, desde los circuitos más básicos hasta los ordenadores más avanzadas, los números binarios forman la base de la computación digital. Si eres profesor y te gusta trabajar con microcontroladores como Arduino, que los alumnos comprendan los números binarios y cómo manipularlos es esencial. En esta entrada, exploraremos qué son los números binarios, cómo convertirlos a decimal y cómo programar una secuencia binaria en Arduino con el kit de Compluino Modular para contar del 0 al 15.

¿Qué son los números binarios?

Un número binario es una representación de un valor numérico usando sólo dos símbolos: el 0
y el 1.
Así pues, un número binario se representa mediante una sucesión de unos y ceros en las que
cada dígito tiene un valor o peso en función de su posición. De derecha a izquierda los pesos
de los números binarios son 20= 1, 21= 2, 22= 4, 23= 8 …. y así sucesivamente.
En general, puedes elegir una cantidad cualquiera de símbolos y aún podrías representar
cualquier número. A esa cantidad se le llama la base del sistema numérico. De esta manera
«en base diez » hace referencia al sistema numérico decimal y «en base dos» hace referencia
al sistema numérico binario.

Conversión de binario a decimal

Para convertir un número binario a decimal, se necesita entender el valor posicional de cada bit. Cada bit en un número binario tiene un valor que es una potencia de 2, empezando desde el bit menos significativo (el más a la derecha) hasta el bit más significativo (el más a la izquierda).

Por ejemplo, para convertir el número binario 1101 a decimal:

  • El bit más a la derecha (1) representa 20 , que es 1. (LED_V en el programa)
  • El siguiente bit (0) representa 21, que es 2. (LED_AMAR en el programa)
  • El siguiente bit (1) representa 22, que es 4. (LED_VERDE en el programa)
  • El bit más a la izquierda (1) representa 23, que es 8. (LED_ROJO en el programa)

Sumando estos valores, obtenemos: 8+4+0+1=13. Por lo tanto, el número binario 1101 es igual al número decimal 13.

Programar números binarios con LEDs en Arduino

Ahora que entendemos los conceptos básicos de los números binarios, vamos a ver cómo podemos implementar una secuencia binaria en Arduino para contar del 0 al 15. Para este ejemplo, usaremos LEDs para representar cada bit de un número binario. Necesitaremos cuatro LEDs, ya que el número binario más grande que podemos representar con cuatro bits es 1111 (15 en decimal).

El ejemplo lo vamos a realizar con la base de trabajo de Compluino modular, ya que simplifica las conexiones eléctricas y la disposición de los LEDs ayuda a ver claramente los números representados.

La tabla en la que aparecen los números decimales del 0 al 15 y su equivalencia en binario quedaría así:

DECIMALBINARIO
00000
10001
20010
30011
40100
50101
60110
70111
81000
91001
101010
111011
121100
131101
141110
151111

Y el programa en el que cada segundo se muestra un número distinto sería así:

// REPRESENTACIÓN DE NÚMEROS BINARIOS EN ARDUINO CON 4 LEDs

#define LED_V 5     //posición 0001
#define LED_AMAR 4  //posición 0010
#define LED_VERDE 3 //posición 0100
#define LED_ROJO 2  //posición 1000

void setup() 
{
  pinMode(LED_V, OUTPUT);
  pinMode(LED_AMAR, OUTPUT); 
  pinMode(LED_VERDE, OUTPUT);
  pinMode(LED_ROJO, OUTPUT); 
}

void loop() 
{
  //cero 0000
  digitalWrite(LED_V, LOW);
  digitalWrite(LED_AMAR, LOW);
  digitalWrite(LED_VERDE, LOW);
  digitalWrite(LED_ROJO, LOW);
  delay(1000);
  //uno 0001
  digitalWrite(LED_V, HIGH);
  digitalWrite(LED_AMAR, LOW);
  digitalWrite(LED_VERDE, LOW);
  digitalWrite(LED_ROJO, LOW);
  delay(1000);
  //dos 0010
  digitalWrite(LED_V, LOW);
  digitalWrite(LED_AMAR, HIGH);
  digitalWrite(LED_VERDE, LOW);
  digitalWrite(LED_ROJO, LOW);
  delay(1000);
  //tres 0011
  digitalWrite(LED_V, HIGH);
  digitalWrite(LED_AMAR, HIGH);
  digitalWrite(LED_VERDE, LOW);
  digitalWrite(LED_ROJO, LOW);
  delay(1000);
  //cuatro 0100
  digitalWrite(LED_V, LOW);
  digitalWrite(LED_AMAR, LOW);
  digitalWrite(LED_VERDE, HIGH);
  digitalWrite(LED_ROJO, LOW);
  delay(1000);
  //cinco 0101
  digitalWrite(LED_V, HIGH);
  digitalWrite(LED_AMAR, LOW);
  digitalWrite(LED_VERDE, HIGH);
  digitalWrite(LED_ROJO, LOW);
  delay(1000);
  //seis 0110
  digitalWrite(LED_V, LOW);
  digitalWrite(LED_AMAR, HIGH);
  digitalWrite(LED_VERDE, HIGH);
  digitalWrite(LED_ROJO, LOW);
  delay(1000);
  // siete 0111
  digitalWrite(LED_V, LOW);
  digitalWrite(LED_AMAR, HIGH);
  digitalWrite(LED_VERDE, HIGH);
  digitalWrite(LED_ROJO, HIGH);
  delay(1000);
  // ocho 1000
  digitalWrite(LED_V, LOW);
  digitalWrite(LED_AMAR, LOW);
  digitalWrite(LED_VERDE, LOW);
  digitalWrite(LED_ROJO, HIGH);
  delay(1000); 
  // nueve 1001
  digitalWrite(LED_V, HIGH);
  digitalWrite(LED_AMAR, LOW);
  digitalWrite(LED_VERDE, LOW);
  digitalWrite(LED_ROJO, HIGH);
  delay(1000);
  // diez 1010
  digitalWrite(LED_V, LOW);
  digitalWrite(LED_AMAR, HIGH);
  digitalWrite(LED_VERDE, LOW);
  digitalWrite(LED_ROJO, HIGH);
  delay(1000);
  // once 1011
  digitalWrite(LED_V, HIGH);
  digitalWrite(LED_AMAR, LOW);
  digitalWrite(LED_VERDE, HIGH);
  digitalWrite(LED_ROJO, HIGH);
  delay(1000);
  // doce 1100
  digitalWrite(LED_V, LOW);
  digitalWrite(LED_AMAR, LOW);
  digitalWrite(LED_VERDE, HIGH);
  digitalWrite(LED_ROJO, HIGH);
  delay(1000);
  // trece 1101
  digitalWrite(LED_V, HIGH);
  digitalWrite(LED_AMAR, HIGH);
  digitalWrite(LED_VERDE, LOW);
  digitalWrite(LED_ROJO, HIGH);
  delay(1000);
  // catorce 1110
  digitalWrite(LED_V, HIGH);
  digitalWrite(LED_AMAR, HIGH);
  digitalWrite(LED_VERDE, HIGH);
  digitalWrite(LED_ROJO, LOW);
  delay(1000);
  // quince 1111
  digitalWrite(LED_V, HIGH);
  digitalWrite(LED_AMAR, HIGH);
  digitalWrite(LED_VERDE, HIGH);
  digitalWrite(LED_ROJO, HIGH);
  delay(1000);
}

¿Listo para llevar la educación a un nivel superior?

¡Explora nuevas posibilidades con nuestra formación especializada en tecnología y robótica educativa! ¿Tienes preguntas o necesitas más información? Estamos aquí para ayudarte. No dudes en contactarnos y con gusto resolveremos todas tus dudas. Juntos podemos construir un futuro educativo más innovador y emocionante.