Está en la página 1de 3

OBJETIVO.

El objetivo en este laboratorio es el poder diseñar e implementar un programa que muestre el


código de Gray de tres bits y hallar la posible secuencia si la señal x=0 . Si x=1 el programa debe
mostrar el código ‘’EXCESO DE TRES’’

-cada combinación debe mostrarse durante 2 segundos

MARCO TEORICO.

EL CODGIO GRAY

nombrado así en honor del investigador Frank Gray, es un sistema de numeración binario en el
que dos números consecutivos difieren solamente en uno de sus dígitos.

De un valor en código Gray al siguiente solo hay un cambio de un bit, como puede apreciarse en la
siguiente tabla. Se han incluido en ella las expresiones BCD, que ya son conocidas.

Observa también que los bits son simétricos respecto a la línea en la que se cambia de color.

PROCEDIMIENTO :

//Definir pines para LEDs y botón

const int led1 = 2;

const int led2 = 3;

const int led3 = 4;

const int ledX = 5;

const int button = 6;

//Definir variables para la secuencia de bits y para x

int bit1, bit2, bit3, x;

//Función para mostrar la secuencia de bits

void mostrarSecuencia(int b1, int b2, int b3) {

digitalWrite(led1, b1);

digitalWrite(led2, b2);

digitalWrite(led3, b3);

delay(2000);
}

//Función para actualizar el valor de x

void actualizarX() {

x = digitalRead(button);

digitalWrite(ledX, x);

void setup() {

//Configurar pines como entradas o salidas

pinMode(led1, OUTPUT);

pinMode(led2, OUTPUT);

pinMode(led3, OUTPUT);

pinMode(ledX, OUTPUT);

pinMode(button, INPUT_PULLUP);

//Inicializar valores de bits y x

bit1 = 0;

bit2 = 0;

bit3 = 0;

x = digitalRead(button);

//Mostrar la secuencia de bits y actualizar x

if (x == 0) {

mostrarSecuencia(bit1, bit2, bit3);

} else {

mostrarSecuencia(bit1 + 1, bit2 + 1, bit3 + 1);

actualizarX();
}

void loop() {

//Cambiar valor de x si el botón es presionado

if (digitalRead(button) != x) {

x = digitalRead(button);

digitalWrite(ledX, x);

//Actualizar la secuencia de bits y mostrarla

if (x == 0) {

bit3 = !bit3;

if (bit3 == 0) {

bit2 = !bit2;

if (bit2 == 0) {

bit1 = !bit1;

mostrarSecuencia(bit1, bit2, bit3);

} else {

mostrarSecuencia(bit1 + 1, bit2 + 1, bit3 + 1);

También podría gustarte