Elkablar och programmering elektriska Imp med en LCD-skärm (3 / 4 steg)
Steg 3: Skapa en ny nod för din elektriska Imp
Om du har en 20 ändra teckens LCD variabeln CharactersInLCD till 20.
När kör på din imp, bör den Visa liknar bilden.
Under raden är för noden.
Enhet 3.3V LCD-skärmen med en Sparkfun SerLCD ryggsäck från en elektrisk IMP
Hardware.uart12.configure (9600, 8, PARITY_NONE, 1, NO_RX);
CharactersInLCD < - 16;
Meddelande <-"abcdefghijklm123nopqrstuvwxyz456";
Bakgrundsbelysningens ljusstyrkevärden från 128 till 157
128 - bakgrundsbelysning av
140 - 40% på
150 - 73% på
157 - 100% på
funktion LCDBacklight(Brightness)
{
om ((Brightness>127) & &(Brightness<158))
{
Hardware.uart12.write(124);
Hardware.uart12.write(Brightness);
}
}
Anger SerLCD modulen till rätt LCD-typ.
3 - 20 tecken brett
4 - 16 tecken brett
5 - 4 rader
6 - 2 rader
funktion SerLCDTypeSetup(LCDType)
{
om ((LCDType>3) || (LCDType < 4) || (LCDType < 5) || (LCDType<6))
{
Hardware.uart12.write(124);
Hardware.uart12.write(LCDType);
}
}
Anger den plaska skärmen.
funktion LCDSetSplash(Message)
{
LCDClear();
Hardware.uart12.write(Message);
IMP.Sleep (1).
Hardware.uart12.write(0x7C);
Hardware.uart12.write(0x0A);
IMP.Sleep (1).
}
Startbild på/av växla
funktion LCDToggleSplash()
{
Hardware.uart12.write(0x7C);
Hardware.uart12.write(0x09);
}
funktion LCDClear()
{
Hardware.uart12.write(254);
Hardware.uart12.write(0x01);
Hardware.uart12.write(254);
Hardware.uart12.write(128);
LCDBoxCursorOff();
}
funktion LCDMoveCursorRight()
{
Hardware.uart12.write(254);
Hardware.uart12.write(0x14);
}
funktion LCDMoveCursorLeft()
{
Hardware.uart12.write(254);
Hardware.uart12.write(0x10);
}
funktion LCDScrollRight()
{
Hardware.uart12.write(254);
Hardware.uart12.write(0x1C);
}
funktion LCDScrollLeft()
{
Hardware.uart12.write(254);
Hardware.uart12.write(0x18);
}
funktion LCDVisualDisplayOn()
{
Hardware.uart12.write(254);
Hardware.uart12.write(0x0C);
}
funktion LCDVisualDisplayOff()
{
Hardware.uart12.write(254);
Hardware.uart12.write(0x08);
}
funktion LCDUnderlineCursorOn()
{
Hardware.uart12.write(254);
Hardware.uart12.write(0x0E);
}
funktion LCDUnderlineCursorOff()
{
Hardware.uart12.write(254);
Hardware.uart12.write(0x0C);
}
funktion LCDBoxCursorOn()
{
Hardware.uart12.write(254);
Hardware.uart12.write(0x0D);
}
funktion LCDBoxCursorOff()
{
Hardware.uart12.write(254);
Hardware.uart12.write(0x0C);
}
Ståndpunkt är nollbaserat
funktion LCDSetCursorPosition(Line,Position)
{
lokala LineBaseAddress = 0;
IF(CharactersInLCD==16)
{
IF(Line==2)
{
LineBaseAddress = 64;
}
IF(Line==3)
{
LineBaseAddress = 16.
}
IF(Line==4)
{
LineBaseAddress = 80.
}
}
IF(CharactersInLCD==20)
{
IF(Line==2)
{
LineBaseAddress = 64;
}
IF(Line==3)
{
LineBaseAddress = 20;
}
IF(Line==4)
{
LineBaseAddress = 84.
}
}
Hardware.uart12.write(254);
Hardware.uart12.write (LineBaseAddress + Position + 128);
}
funktion LCDWriteMessage(LCDMessage)
{
Hardware.uart12.write(LCDMessage);
}
Main utförande loop
funktion loop()
{
Loop verksamhet - körs en gång varje Wakeup
IMP.wakeup (2.0, loop);
}
Setup verksamhet - bara körs en gång
IMP.configure ("LCD exempel", [], []);
LCDClear();
LCDWriteMessage(Message);
Paus 2 sekunder innan huvudloop – justera efter smak
IMP.wakeup (2.0, loop);