Estou terminando um projeto - um despertador de jogo LED. Visto que este é um relógio, preciso ter uma maneira de economizar energia, que agora o meu Uno R3 + está comendo como um político. Minha pergunta é: como desligo a tela ou desligo a luz de fundo usando o software somente em uma tela LCD Hitachi HD44780 16x2? Ou como defino um modo de suspensão em um componente? O modo como planejo desligá-lo é com um telêmetro ultrassônico; se eu chegar perto, ele aparece na tela. Se qualquer coisa que eu disser não fizer sentido, peça que eu esclareça que estou com pressa.
arduino-uno
lcd
Mr. Floppy
fonte
fonte
Respostas:
Coloque um transistor em série com um resistor 33R entre o pino do LCD 16 (terra da luz de fundo) e o GND e ligue e desligue o transistor com um pino digital. Dessa forma, você poderá ativar e desativar a luz de fundo.
Você pode ter um controle mais refinado do brilho se colocar um pulso PWM no referido pino. Basta ligar para
analogWrite(D3, value)
ondevalue
está o brilho desejado.Os esquemas estão abaixo. É da Freetronics 16x2 LCD SHield .
fonte
Em vez de vincular a luz de fundo diretamente ao V + e ao GND, conecte-a a um pino PWM (pode ser necessário usar um driver separado se o pino não conseguir gerar / consumir corrente suficiente). Isso permitirá que você controle o brilho via
analogWrite()
.Desligue a tela LCD (
LiquidCrystal::noDisplay()
) quando não estiver em uso. O conteúdo permanecerá na memória, mas os segmentos do LCD não serão acionados.Defina os vários bits no
PRR
registro para desativar os periféricos que ele não usa.E não se esqueça de adormecer a CPU quando ela não precisar ser executada . Consulte a seção "Gerenciamento de energia e modos de suspensão" da folha de dados para obter mais informações sobre isso e o
PRR
registro, bem como a<avr/sleep.h>
documentação do AVR Libc.fonte