Paso 3: Crear un nuevo nodo para el Imp eléctrico
Si tienes 20 caracteres LCD Cambie la variable CharactersInLCD a 20.
Cuando se ejecuta en el imp, debe mostrar similar a la imagen.
Código debajo de esta línea es para el nodo.
Pantalla de LCD de coche 3.3v utilizando una mochila de Sparkfun SerLCD de un IMP eléctrico
hardware.uart12.Configure (9600, 8, PARITY_NONE, 1, NO_RX);
CharactersInLCD < - 16;
Mensaje <-"abcdefghijklm123nopqrstuvwxyz456";
Valores de brillo de la retroiluminación de 128 a 157
128 - sin retroiluminación
140 - 40% en
150 - 73% en
157 - 100% en
función LCDBacklight(Brightness)
{
Si ((Brightness>127) & &(Brightness<158))
{
hardware.uart12.Write(124);
hardware.uart12.Write(Brightness);
}
}
Se establece el módulo de SerLCD el correcto tipo de LCD.
3 - 20 caracteres de ancho
4 - 16 caracteres de ancho
5 - 4 líneas
6 - 2 líneas
función SerLCDTypeSetup(LCDType)
{
Si ((LCDType>3) || (LCDType < 4) || (LCDType < 5) || (LCDType<6))
{
hardware.uart12.Write(124);
hardware.uart12.Write(LCDType);
}
}
Define la pantalla de bienvenida.
función LCDSetSplash(Message)
{
LCDClear();
hardware.uart12.Write(Message);
Imp.Sleep (1);
hardware.uart12.Write(0x7C);
hardware.uart12.Write(0x0a);
Imp.Sleep (1);
}
Pantalla de bienvenida de palanca de encendido/apagado
función LCDToggleSplash()
{
hardware.uart12.Write(0x7C);
hardware.uart12.Write(0x09);
}
función LCDClear()
{
hardware.uart12.Write(254);
hardware.uart12.Write(0x01);
hardware.uart12.Write(254);
hardware.uart12.Write(128);
LCDBoxCursorOff();
}
función LCDMoveCursorRight()
{
hardware.uart12.Write(254);
hardware.uart12.Write(0x14);
}
función LCDMoveCursorLeft()
{
hardware.uart12.Write(254);
hardware.uart12.Write(0x10);
}
función LCDScrollRight()
{
hardware.uart12.Write(254);
hardware.uart12.Write(0x1c);
}
función LCDScrollLeft()
{
hardware.uart12.Write(254);
hardware.uart12.Write(0x18);
}
función LCDVisualDisplayOn()
{
hardware.uart12.Write(254);
hardware.uart12.Write(0x0c);
}
función LCDVisualDisplayOff()
{
hardware.uart12.Write(254);
hardware.uart12.Write(0x08);
}
función LCDUnderlineCursorOn()
{
hardware.uart12.Write(254);
hardware.uart12.Write(0x0E);
}
función LCDUnderlineCursorOff()
{
hardware.uart12.Write(254);
hardware.uart12.Write(0x0c);
}
función LCDBoxCursorOn()
{
hardware.uart12.Write(254);
hardware.uart12.Write(0x0d);
}
función LCDBoxCursorOff()
{
hardware.uart12.Write(254);
hardware.uart12.Write(0x0c);
}
Posición es cero basado en
función LCDSetCursorPosition(Line,Position)
{
local 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 + posición + 128);
}
función LCDWriteMessage(LCDMessage)
{
hardware.uart12.Write(LCDMessage);
}
Lazo de ejecución principal
la función loop()
{
Lazo de actividades - ejecuta una vez cada activación
Imp.WakeUp (2.0, bucle);
}
Configuración de actividades - sólo se ejecuta una vez
Imp.Configure («LCD ejemplos», [], []);
LCDClear();
LCDWriteMessage(Message);
Pausa 2 segundos antes de comenzar el bucle principal - ajustar al gusto
Imp.WakeUp (2.0, bucle);