Stap 9: Nuttige Code - dimmen de VFD
De Noritake LCD-compatibele VFD ik koos ondersteunt 4 helderheidsniveaus - 100%, 75%, 50% en 25%. De display is zeer helder zijn op de instelling van de helderste en eruit zou zien schitteren in een donkere kamer. Ik bekabeld een LDR met een 10K Ohm weerstand om te vormen van een spanning divider. Deze veranderende spanning wordt gelezen op pin A0. Ik update de helderheid bij elke nieuwe tekenreeks. U kon het vaker zeker doen als je wilde.Hier is de functie van de instelling helderheid:
functie setDisplayBright()
Hiermee stelt u de helderheid van een LCD-compatibele Noritake vfd
op basis van het omgevingslicht
vereist aangepaste LiquidCrystal bibliotheek met lcd.vfdDim()
verwacht niets
nothing als resultaat
LDRreading en LDRpin gebruikt als globals
VOID setDisplayBright()
{
LDRreading = analogRead(LDRpin);
Als (LDRreading > 800)
{
lcd.vfdDim(0);
}
anders als ((LDRreading < = 800) & & (LDRreading > 450))
{
lcd.vfdDim(1);
}
anders als ((LDRreading < = 450) & & (LDRreading > 200))
{
lcd.vfdDim(2);
}
anders
{
lcd.vfdDim(3);
}
Serial.println(LDRreading);
terugkeer;
}
Wat is lcd.vfdDIm()? Het is een functie die ik heb toegevoegd aan mijn lokale kopie van de LiquidCrystal-bibliotheek. Hier is hoe toe te voegen:
De volgende bibliotheekbestanden onder de LiquidCrystal Bibliotheek map bewerken. Opmerking de ' >' is van diff, waaruit blijkt hoe het verschilt van de oorspronkelijke versie:
LiquidCrystal.cpp:
255,270d 254
< / / set dimmen op Noritake LCD-compatibele VFD
< / / Dimniveau's:
< / / 0 = 100%
< / / 1 = 75%
< / / 2 = 50%
< / / 3 = 25%
< void LiquidCrystal::vfdDim (uint8_t dimmen) {}
< als ((dimmen > -1) & & (dimmen < 4)) {}
< digitalWrite (_rw_pin, laag);
< verzenden (0x28, laag);
< digitalWrite (_rw_pin, hoge);
< verzenden (dimmen, hoge);
< digitalWrite (_rw_pin, laag);
<}
<}
<
LiquidCrystal.h:
79d 78
< void vfdDim (uint8_t dimmen);