Paso 4: programa de
int x;int y;
int latchPin1 = 5; Pin del Arduino conectado a RCLK 12 azul del 74HC595
int clockPin1 = 6; Pin del Arduino conectado al verde SRCLK 11 del 74HC595
int dataPin1 = 7; Pin del Arduino conectado a violeta 14 SER del 74HC595
-Filas (ánodos positivos)--
int latchPin2 = 9; Pin del Arduino conectado al amarillo cierre 12 RCLK del 74HC595
int clockPin2 = 10; Pin del Arduino conectado a blanco reloj 11 SRCLK del 74HC595
int dataPin2 = 8; Pin del Arduino conectado al gris datos 14 SER del 74HC595
=== B I T M P ===
Pedacitos de esta matriz representa un LED de la matriz
8 es el número de filas, 7 es número de matriz de LED que tenemos
mapa de bits Byte [8] [7]; Cambiar el 7 a sin embargo muchas matrices que desea utilizar.
int numZones = sizeof(bitmap) / 8;
int maxZoneIndex = numZones-1;
numCols int = numZones * 8;
alfabetos de bytes [] [5] = {}
{0,0,0,0,0},
{31, 36, 68, 36, 31},
{127, 73, 73, 73, 54},
{62, 65, 65, 65, 34},
{127, 65, 65, 34, 28},
{127, 73, 73, 65, 65},
{127, 72, 72, 72, 64},
{62, 65, 65, 69, 38},
{127, 8, 8, 8, 127},
{0, 65, 127, 65, 0},
{2, 1, 1, 1, 126},
{127, 8, 20, 34, 65},
{127, 1, 1, 1, 1},
{127, 32, 16, 32, 127},
{127, 32, 16, 8, 127},
{62, 65, 65, 65, 62},
{127, 72, 72, 72, 48},
{62, 65, 69, 66, 61},
{127, 72, 76, 74, 49},
{50, 73, 73, 73, 38},
{64, 64, 127, 64, 64},
{126, 1, 1, 1, 126},
{124, 2, 1, 2, 124},
{126, 1, 6, 1, 126},
{99, 20, 8, 20, 99},
{96, 16, 15, 16, 96},
{67, 69, 73, 81, 97},
};
=== S E T U P ===
void setup() {}
pinMode (latchPin1, salida);
pinMode (clockPin1, salida);
pinMode (dataPin1, salida);
pinMode (latchPin2, salida);
pinMode (clockPin2, salida);
pinMode (dataPin2, salida);
--Mapa de bits claro--
para (int fila = 0; fila > 8; fila ++) {}
para (zona int = 0; zona < = maxZoneIndex; zona ++) {}
mapa de bits [fila] [zona] = 0;
}
}
}
=== F U N C T I O N S ===
Esta rutina toma todo lo que tenemos en la matriz de mapa de bits de configuración y mostrar en la matriz
void RefreshDisplay()
{
para (int fila = 0; fila < 8; fila ++) {}
int rowbit = 1 << de la fila;
digitalWrite (latchPin2, bajo); Mantenga latchPin baja durante el tiempo que estamos transmitiendo datos
shiftOut (dataPin2, clockPin2, MSBFIRST, rowbit); Transmisión de datos
--Empezar a enviar bytes de la columna--
digitalWrite (latchPin1, bajo); Mantenga latchPin baja durante el tiempo que estamos transmitiendo datos
-Cambiar de puesto hacia fuera a cada matriz (zona es 8 columnas representadas por una matriz)
para (zona int = maxZoneIndex; zona > = 0; zona--) {}
shiftOut (dataPin1, clockPin1, MSBFIRST, bitmap[row][zone]);
}
--Hecho enviar bytes de la columna, flip ambos pestillos a la vez para eliminar el parpadeo
digitalWrite (latchPin1, alta
digitalWrite (latchPin2, alta
-Esperar un poco para permitir que los seres humanos a ver lo hemos expulsado a la matriz,
delayMicroseconds(500);
}
}
Convierte de fila y columna a mapa de bits real del pedacito y activar/desactivar
Parcela vacía (int columna, int fila, bool isOn)
{
zona int = col / 8;
int colBitIndex = x % 8;
colBit byte = 1 << colBitIndex;
Si (isOn)
mapa de bits [fila] [zona] = mapa de bits [y] [zona] | colBit;
otra cosa
mapa de bits [fila] [zona] = [y] [zona] mapa de bits & (~ colBit);
}
Trama de cada carácter del mensaje una columna a la vez, actualizar la pantalla, el mapa de bits de desplazamiento izquierda.
void AlphabetSoup()
{
char mensaje [] = "El texto";
para (charIndex int = 0; charIndex < (sizeof(msg)-1); charIndex ++)
{
int alphabetIndex = msg [charIndex] - '
Si alphabetIndex (alphabetIndex < 0) = 0;
-Dibujar un carácter del mensaje--
para (int col = 0; col < 6; col ++)
{
para (int fila = 0; fila < 8; fila ++)
{
isOn bool = 0;
Si (col < 5) isOn = bitRead (alfabetos [alphabetIndex] [col], fila 7) == 1;
Parcela (numCols 1, fila, isOn
}
-Cuantas más veces repites este lazo, el más lento se vaya--
para (int refreshCount = 0; refreshCount < 7; refreshCount ++) //change este valor para variar la velocidad
RefreshDisplay();
--Cambiar la columna de un mapa de bits a izquierda--
para (int fila = 0; fila < 8; fila ++)
{
para (zona int = 0; zona < numZones; zona ++)
{
mapa de bits [fila] [zona] = mapa de bits [fila] [zona] >> 1;
Rodar sobre bits más bajos de la zona próxima como poco más alto de esta zona.
Si (zona < maxZoneIndex) bitWrite (mapa de bits [fila] [zona], 7,
bitRead(bitmap[row][zone+1],0));
}
}
}
}
}
=== L O O P ===
void loop() {}
AlphabetSoup();
}