Skip to content

Instantly share code, notes, and snippets.

@joksan
Created July 15, 2014 01:31
Show Gist options
  • Save joksan/07794d61bf7915099697 to your computer and use it in GitHub Desktop.
Save joksan/07794d61bf7915099697 to your computer and use it in GitHub Desktop.
Pantalla 40x16
const int totalCol = 40;
const int totalFil = 16;
int pinFil[totalFil] = { 22, 24, 26, 28, 30, 32, 34, 36,
38, 40, 42, 44, 46, 48, 50, 52 };
int pinClk = 4;
int pinDout = 2;
int pinClr = 7;
bool frameBuffer[totalFil][totalCol];
const bool alfabeto[26][7][5] = {
{ { 0, 1, 1, 1, 0 },
{ 1, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1 }, },
{ { 1, 1, 1, 1, 0 },
{ 1, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 0 },
{ 1, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 0 }, },
{ { 0, 1, 1, 1, 0 },
{ 1, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 1 },
{ 0, 1, 1, 1, 0 }, },
{ { 1, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 0 },
{ 1, 1, 1, 0, 0 },
{ 1, 0, 0, 1, 0 },
{ 1, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1 }, },
{ { 0, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1 },
{ 0, 1, 1, 1, 1 },
{ 0, 1, 0, 0, 1 },
{ 1, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1 } , },
{ { 0, 1, 1, 1, 0 },
{ 0, 0, 1, 0, 0 },
{ 0, 0, 1, 0, 0 },
{ 0, 0, 1, 0, 0 },
{ 0, 0, 1, 0, 0 },
{ 0, 0, 1, 0, 0 },
{ 0, 1, 1, 1, 0 }, },
{ { 0, 1, 0, 1, 0 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 0, 1, 1, 1, 0 },
{ 0, 0, 1, 0, 0 },
{ 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0 }, },
};
void setup() {
byte i;
//Inicializa los pines del 74LS1764N
pinMode(pinClk, OUTPUT);
pinMode(pinDout, OUTPUT);
pinMode(pinClr, OUTPUT);
digitalWrite(pinClk, HIGH);
digitalWrite(pinDout, LOW);
digitalWrite(pinClr, HIGH);
//Inicializa los pines que controlan las filas
for (i=0; i<totalFil; i++) {
pinMode(pinFil[i], OUTPUT);
digitalWrite(pinFil[i], LOW);
}
}
void loop() {
static byte i = 22;
static byte scaler = 0;
limpiarFrameBuffer();
dibujarCadena("ABC", i, 0);
scaler++;
if (scaler >= 10) {
scaler = 0;
if (i) i--;
else i = 22;
}
refrescarPantalla();
}
void dibujarLetra(char letra, byte x, byte y) {
byte i, j;
for (i=0; i<7; i++) {
for (j=0; j<5; j++) {
frameBuffer[y+i][x+j] = alfabeto[letra-'A'][i][j];
}
}
}
void dibujarCadena(const char *texto, byte x, byte y) {
byte pCadena = 0;
while (texto[pCadena] != 0) {
dibujarLetra(texto[pCadena], x, y);
x += 6;
pCadena++;
}
}
void limpiarFrameBuffer() {
byte i, j;
for (i=0; i<13; i++) {
for (j=0; j<40; j++) {
frameBuffer[i][j] = 0;
}
}
}
void refrescarPantalla() {
byte i;
for (i=0; i<13; i++) {
enviarFila(i);
digitalWrite(pinFil[i], HIGH);
delay(1);
digitalWrite(pinFil[i], LOW);
}
}
void enviarFila(byte nFila) {
byte i;
digitalWrite(pinClr, LOW);
digitalWrite(pinClr, HIGH);
for (i=0; i<totalCol; i++) {
digitalWrite(pinDout, frameBuffer[nFila][i]);
digitalWrite(pinClk, LOW);
digitalWrite(pinClk, HIGH);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment