Este proyecto sirve para aprender los operadores a nivel de bit y mostrar una referencia visual sin necesidad de una placa con LEDs
- linux
- python3
- matplotlib
Para instalarlos desde linux, en una consola se puede hacer (sin escribir los $)
$ sudo apt update
$ sudo apt install python3 python3-matplotlib
Se puede descargar el proyecto clonando este repositorio haciendo (sin escribir los $)
$ git clone https://github.com/claudiojpaz/bitwise-operators-template.git
o descargando y descomprimiendo el proyecto desde aquí
Una vez descomprimido o clonado, se ingresa al directorio, y si se cumplen todos los requisitos, se compila con
$ make
y eso crea un archivo echo_byte
que se puede ejecutar con
$ ./echo_byte
El programa de ejemplo imprime en la pantalla un byte, bit a bit realizando una secuencia cada 500ms
Se puede visualizar usando python haciendo
$ ./echo_byte | python3 leds.py
En cualquier momento, haciendo foco en la pantalla de los LEDs y presionando la letra q
se termina la ejecución
Se puede editar el archivo echo_byte.c
para probar otro código. Es necesario que se mantenga el while(1)
con sus llaves y agregar el código a evaluar dentro.
También es necesaria la línea fflush(stdout);
ya que es usada por el script de python.
La función msleep
espera un valor en milisegundos que la aplicación se detiene, para posibilitar la visualización de los LEDs, valores menores a 20ms no permiten apreciar los cambios, se recomienda 500ms.
La función integer2byte_rep
devuelve un entero pero solo compuesto de 0 o 1, representando un número en base binaria
#include <stdio.h>
#include "timer.h"
#include "print_tools.h"
int main (void)
{
unsigned char b = 1;
while (1) {
printf("%08u\n", integer2byte_rep(b)); // recomendado no borrar
b <<= 1;
if (b == 0)
b = 1;
msleep(500); // ms
fflush(stdout); // no borrar
}
return 0;
}
Cuando se modifica el código, desde el directorio base del proyecto, hay que hacer
$ make clean
eso borra todos los archivos objeto y permite hacer una instalación limpia. Luego
$ make
ya volver a empezar.