Não é algo que costume usar - nalguns programas mais puxados até desligo completamente o display para libertar recursos - mas admito que nalgumas situações pode dar jeito apresentar algum tipo de output. Talvez por isso a LEGO tenha colocado a matriz de LEDs 5x5, com algum jeitinho conseguem-se escrever coisas como no inevitável 'Hello World' que fiz há já uns 4 anos:
Entretanto consegui acumular 4 elementos ColorLightMatrix 3x3. Individualmente nunca lhes dei muita atenção, 9 leds RGB... caros como o raio... para que raio pode servir isto?
Ah bem com 4 conseguimos 6x6. Um hub Technic tem 4 fichas por isso consegue controlar isto. E se conseguimos mostrar caracteres em grelhas 5x5 tb conseguimos em 6x6. E lá dei por mim como no tempo do ZX Spectrum a fazer sprites em grelhas quadriculadas, só que 6x6 em vez de 8x8 e em python em vez de BASIC.
o programa em si não é muito complicado mas foi um bocado monótono ter de implementar os caracteres todos um a um (por agora os digitos, as maiúsculas e 3 símbolos). Criei um ficheiro só com a definição dos caracteres, deste género:
Código: Selecionar todos
chr_null = [
[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,0,0,0]
]
chr_0 = [
[0,0,1,1,0,0],
[0,1,0,0,1,0],
[0,1,0,0,1,0],
[0,1,0,0,1,0],
[0,1,0,0,1,0],
[0,0,1,1,0,0]
]
depois criei algumas funções que "partem" a grelha 6x6 em 4 grelhas 3x3, convertem os 0 e 1 para a cor nula (OFF) e branca e enviam para os 4 dispositivos ColorLightMatrix; e uma função que recebe um caracter e se fizer parte dos implementados mostra (convertendo minúsculas em maiúsculas) e se não fizer parte mostra um caracter nulo (que depois numa animação funciona como um espaço).
depois o que deu algum trabalho foi o "scroll" lateral: criei uma função que pega numa string e constrói uma grelha de 6 linhas e (6x comprimentos da string) colunas (na verdade 7x para acomodar um espaço vazio que me dá jeito no final do scroll) e outra função que percorre estra grelha num sentido ou noutro e extrai um bloco 6x6 para apresentar
Ainda tenho de arrumar o código antes de o publicar no github.
A ideia é dedicar um hub para exibição de texto, usando o broadcast entre hubs. Tendo uma pipa de massa podemos juntar vários e fazer um display LCD maior (2 hubs: 6x12, 4 hubs: 6x18... se alguém quiser patrocinar é só dizer
Quando tiver um bocadinho de tempo vou tentar integrar com o Jogo do Galo.

