OSCAR ADRIAN MEDINA DURAN
#include <avr/io.h> const uint8_t letraD[8] = {
#include <util/delay.h> 0b11111110,
0b10000001,
// Definición de pines para la matriz LED 0b10000001,
#define COL1_PIN PD0 0b10000001,
#define COL2_PIN PD1 0b10000001,
#define COL3_PIN PD2 0b10000001,
#define COL4_PIN PD3 0b10000001,
#define COL5_PIN PD4 0b11111110
#define COL6_PIN PD5 };
#define COL7_PIN PD6
#define COL8_PIN PD7 const uint8_t letraR[8] = {
0b11111110,
#define ROW1_PIN PB0 0b10000001,
#define ROW2_PIN PB1 0b10000001,
#define ROW3_PIN PB2 0b11111110,
#define ROW4_PIN PB3 0b10001000,
#define ROW5_PIN PB4 0b10000100,
#define ROW6_PIN PB5 0b10000010,
#define ROW7_PIN PB6 0b00000000
#define ROW8_PIN PB7 };
// Definición de los patrones de cada letra para una matriz const uint8_t letraI[8] = {
LED 8x8
0b11111111,
const uint8_t letraA[8] = {
0b00011000,
0b01111110,
0b00011000,
0b10000001,
0b00011000,
0b10000001,
0b00011000,
0b10000001,
0b00011000,
0b11111111,
0b00011000,
0b10000001,
0b11111111
0b10000001,
};
0b10000001
};
const uint8_t letraN[8] = {
0b10000001, // Pequeño retraso para asegurar que se vea la fila
0b11000001, _delay_ms(2);
0b10100001, }
0b10010001, }
0b10001001, // Desactivar todas las filas (para evitar ghosting)
0b10000101, PORTB = 0xFF; // Todas las filas apagadas
0b10000011, PORTD = 0x00; // Todos los pines de datos apagados
0b10000001 }
};
int main(void) {
// Arreglo que contiene las letras del nombre "Adrian" // Configuración de pines de salida para las filas de la
matriz LED
const uint8_t *letras[] = {letraA, letraD, letraR, letraI, letraA,
letraN}; DDRB = 0xFF; // Todas las filas como salida
const int numLetras = sizeof(letras) / sizeof(letras[0]); // PORTB = 0xFF; // Todas las filas apagadas inicialmente
Número total de letras
// Configuración de pines de datos para la matriz LED
// Función para mostrar una letra en la matriz LED (PD0-PD7)
void mostrarLetra(const uint8_t *letra) { DDRD = 0xFF; // Todos los pines de datos como salida
// Repetir la visualización de cada letra varias veces para PORTD = 0x00; // Todos los pines de datos apagados
mayor visibilidad inicialmente
for (int repeat = 0; repeat < 50; repeat++) { // Ajusta este
valor para cambiar la duración de cada letra
// Bucle principal
// Recorrer cada fila de la matriz LED (8 filas)
while (1) {
for (int row = 0; row < 8; row++) {
// Mostrar cada letra del nombre "Adrian"
// Desactivar todas las filas antes de activar la
siguiente para evitar ghosting for (int i = 0; i < numLetras; i++) {
PORTB = 0xFF; // Apagar todas las filas mostrarLetra(letras[i]);
_delay_ms(1000); // Retraso entre letras
// Activar la fila correspondiente }
PORTB = ~(1 << row); // Activar la fila row }
// Mostrar los bits de la fila actual return 0;
PORTD = letra[row]; // Enviar los datos de la fila a los }
pines correspondientes