Paso 9: Código útil - atenuación del VFD
El Noritake LCD compatible con VFD elegí soporta 4 niveles de brillo - 100%, 75%, 50% y 25%. La pantalla es muy brillante en la posición más brillante y sería evidente en un cuarto oscuro. Cableado un LDR con una resistencia de 10K para formar un divisor de tensión. Este voltaje cambia se lee en el pin A0. Actualizar el brillo en cada nueva cadena. Lo podría sin duda hacer más a menudo si querías.Esta es la función de ajuste de brillo:
función setDisplayBright()
establece el brillo de un vfd Noritake LCD compatible con
basado en el nivel de luz ambiente
requiere personalizada librería LiquidCrystal con lcd.vfdDim()
espera nada
devolver nada
utiliza LDRreading y LDRpin como globales
void setDisplayBright()
{
LDRreading = analogRead(LDRpin);
Si (LDRreading > 800)
{
lcd.vfdDim(0);
}
else if ((LDRreading < = 800) & & (LDRreading > 450))
{
lcd.vfdDim(1);
}
else if ((LDRreading < = 450) & & (LDRreading > 200))
{
lcd.vfdDim(2);
}
otra cosa
{
lcd.vfdDim(3);
}
Serial.println(LDRreading);
retorno;
}
¿Qué es lcd.vfdDIm()? Es una función que he añadido a mi copia local de la librería LiquidCrystal. Aquí está cómo agregarlo:
Editar los siguientes archivos de la biblioteca en el directorio de biblioteca LiquidCrystal. Nota el ' >' es de diff, que muestra cómo es diferente de la versión original:
LiquidCrystal.cpp:
d 255.270 254
< / / sistema de atenuación de Noritake LCD compatible con VFD
< / / niveles de atenuación:
< / / 0 = 100%
< / / 1 = 75%
< / / 2 = 50%
< / / 3 = 25%
< anular LiquidCrystal::vfdDim (uint8_t atenuación) {}
< si ((atenuación > -1) & & (atenuación < 4)) {}
< digitalWrite (_rw_pin, bajo);
< enviar (0x28 baja);
< digitalWrite (_rw_pin, HIGH);
< enviar (atenuación, alto);
< digitalWrite (_rw_pin, bajo);
<}
<}
<
LiquidCrystal.h:
d 79 78
< vfdDim vacío (uint8_t amortigua);