viernes, 30 de noviembre de 2018
ESP32 con matriz 16x16 dos imagenes que cambian usando millis() con un retardo de 1000 ms
//salidas que se van a utilizar
#define dataPin 13
#define clockPin 12
#define latchPin 14
uint16_t dato1[] = {
0xFFFF,
0x8001,
0xBFFD,
0xA005,
0xAFF5,
0xA815,
0xABD5,
0xAA55,
0xAA55,
0xABD5,
0xA815,
0xAFF5,
0xA005,
0xBFFD,
0x8001,
0xFFFF
};
uint16_t dato2[] = {
0x0000,
0x7FFE,
0x4002,
0x5FFA,
0x500A,
0x57EA,
0x542A,
0x55AA,
0x55AA,
0x542A,
0x57EA,
0x500A,
0x5FFA,
0x4002,
0x7FFE,
0x0000
};
byte i, j;
byte fi_L, fi_H;
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
for (i = 0; i < 16; i++) dato1[i] ^= 0xFFFF;
for (i = 0; i < 16; i++) dato2[i] ^= 0xFFFF;
}
void loop() {
muestra (dato1);
//delay(1000);
muestra (dato2);
//delay(1000);
}
void muestra (uint16_t *matriz) {
double t_inicio;
unsigned int retardo=1000;
uint16_t aux;
byte enviar;
uint16_t n_fila;
int n;
t_inicio = millis();
while (millis()<(t_inicio+retardo)) {
n_fila = 1;
for (i = 0; i < 16; i++, n_fila <<= 1) {
fi_L = n_fila & 0xFF;
fi_H = (n_fila >> 8) & 0xFF;
digitalWrite(latchPin, 0);
shiftOut(dataPin, clockPin, LSBFIRST, fi_L);
shiftOut(dataPin, clockPin, LSBFIRST, fi_H);
aux = matriz[i];
enviar = aux & 0x00ff;
shiftOut(dataPin, clockPin, LSBFIRST, enviar);
enviar = (aux >> 8) & 0x00ff;
shiftOut(dataPin, clockPin, LSBFIRST, enviar);
digitalWrite(latchPin, 1);
}
}
}
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario