Beispiel #1
0
        static void PrintString(RPi.I2C.Net.I2CBus bus, char[] text)
        {
            int positionInLine = 0;
            int dram;
            int i;

            for (i = 0; text[i] != '\0'; i++)
            {
                //      byte_to_binary(string[i]);
                if (positionInLine == rowNumber)
                {
                    dram = 0xC0 | LCD_DDRAMADDRESS;
                    WriteLCD(bus, PCF_ADDR, (byte)dram, (byte)LCD_COMMAND_MODE);       //jump to next line
                    positionInLine = 0;
                }
                if (text[i] == '\n')
                {
                    dram = 0xC0 | LCD_DDRAMADDRESS;
                    WriteLCD(bus, PCF_ADDR, (byte)dram, (byte)LCD_COMMAND_MODE);
                    positionInLine = 0;
                }
                else
                {
                    WriteLCD(bus, PCF_ADDR, (byte)text[i], (byte)LCD_CHARACTER_MODE);
                    positionInLine = positionInLine + 1;
                }
            }
        }
Beispiel #2
0
 static void WriteLCD(RPi.I2C.Net.I2CBus bus, int address, byte reg, int mode)
 {
     gpio_reg |= mode << PIN_RS;
     bus.WriteByte(PCF_ADDR, (byte)gpio_reg);
     Thread.Sleep(1);
     gpio_reg = gpio_reg | (reg >> 4) << 4;
     Pulse(bus);
     gpio_reg = gpio_reg & (0xff - (0xf0));
     gpio_reg = gpio_reg | (reg & 0x0f) << 4;
     Pulse(bus);
     gpio_reg = gpio_reg & (0xff - (1 << PIN_RS) - (0xf0));
 }
Beispiel #3
0
 static void Pulse(RPi.I2C.Net.I2CBus bus)
 {
     Thread.Sleep(1);
     gpio_reg &= (0xff - (1 << PIN_ENABLE));
     bus.WriteByte(PCF_ADDR, (byte)gpio_reg);
     Thread.Sleep(1);
     gpio_reg |= 1 << PIN_ENABLE;
     bus.WriteByte(PCF_ADDR, (byte)gpio_reg);
     Thread.Sleep(1);
     gpio_reg &= (0xff - (1 << PIN_ENABLE));
     bus.WriteByte(PCF_ADDR, (byte)gpio_reg);
     Thread.Sleep(1);
 }
Beispiel #4
0
        static void CursorBlink(RPi.I2C.Net.I2CBus bus, bool state)
        {
            if (state)
            {
                displayControl =
                    (displayControl | LCD_DISPLAYON | LCD_DISPLAYCONTROL | LCD_CURSORBLINKON);
            }
            else
            {
                displayControl =
                    (displayControl | LCD_DISPLAYON | LCD_DISPLAYCONTROL | LCD_CURSORBLINKOFF) & ~LCD_CURSORBLINKON;
            }

            WriteLCD(bus, PCF_ADDR, (byte)displayControl, (byte)LCD_COMMAND_MODE);
        }
Beispiel #5
0
 static void MoveCursor(RPi.I2C.Net.I2CBus bus, int movement)
 {
     if (movement == CURSOR_RIGHT)
     {
         WriteLCD(bus, PCF_ADDR, (byte)0x14, (byte)LCD_COMMAND_MODE);
     }
     else if (movement == CURSOR_LEFT)
     {
         WriteLCD(bus, PCF_ADDR, (byte)0x10, (byte)LCD_COMMAND_MODE);
     }
     else
     {
         WriteLCD(bus, PCF_ADDR, (byte)0x02, (byte)LCD_COMMAND_MODE);
     }
 }
Beispiel #6
0
        static void CursorControl(RPi.I2C.Net.I2CBus bus, bool state)
        {
            if (state)
            {
                displayControl =
                    (displayControl | LCD_DISPLAYON | LCD_DISPLAYCONTROL | LCD_SHOWCURSOR);
            }
            else
            {
                displayControl =
                    (displayControl | LCD_DISPLAYON | LCD_DISPLAYCONTROL | LCD_HIDECURSOR) &
                    ~LCD_SHOWCURSOR;
            }

            WriteLCD(bus, PCF_ADDR, (byte)displayControl, (byte)LCD_COMMAND_MODE);
        }
Beispiel #7
0
        static void InitialiseLCD(RPi.I2C.Net.I2CBus bus)
        {
            colNumber = 2;
            rowNumber = 16;
            gpio_reg  = 0;

            gpio_reg = gpio_reg | (1 << PIN_BACKLIGHT);
            bus.WriteByte(PCF_ADDR, (byte)gpio_reg);

            WriteLCD(bus, PCF_ADDR, (byte)0x33, (byte)LCD_COMMAND_MODE);
            WriteLCD(bus, PCF_ADDR, (byte)0x30, (byte)LCD_COMMAND_MODE);
            WriteLCD(bus, PCF_ADDR, (byte)0x06, (byte)LCD_COMMAND_MODE);

            displayControl =
                (displayControl | LCD_DISPLAYCONTROL) | LCD_DISPLAYON;

            WriteLCD(bus, PCF_ADDR, (byte)displayControl, (byte)LCD_COMMAND_MODE);
        }
Beispiel #8
0
        static void PrintInt32(RPi.I2C.Net.I2CBus bus, int val)
        {
            int dram;
            int i;

            for (i = 0; i < 32; i++)
            {
                if (i == rowNumber)
                {
                    dram = 0xC0 | LCD_DDRAMADDRESS;
                    WriteLCD(bus, PCF_ADDR, (byte)dram, (byte)LCD_COMMAND_MODE); //jump to next line
                }
                if (((val >> i) & 0x01) == 1)
                {
                    WriteLCD(bus, PCF_ADDR, (byte)0x31, (byte)LCD_CHARACTER_MODE);
                }
                else
                {
                    WriteLCD(bus, PCF_ADDR, (byte)0x30, (byte)LCD_CHARACTER_MODE);
                }
            }
        }
Beispiel #9
0
        public void TestAllCommands(RPi.I2C.Net.I2CBus incomingBus)
        {
            Console.WriteLine("****************************************");
            Console.WriteLine("* Performing all commands test         *");
            Console.WriteLine("****************************************");
            Console.WriteLine();

            Console.WriteLine("Testing COMMAND_ALL_OFF");
            incomingBus.WriteByte(_TBORG_ADDRESS, 0x14);
            Console.WriteLine("Reading response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();

            Console.WriteLine("Testing COMMAND_SET_A_FWD");
            incomingBus.WriteBytes(_TBORG_ADDRESS, new byte[] { 0x08, 0x80 });
            Console.WriteLine("Response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();

            System.Threading.Thread.Sleep(2000);

            Console.WriteLine("Testing COMMAND_ALL_OFF");
            incomingBus.WriteByte(_TBORG_ADDRESS, 0x0E);
            Console.WriteLine("Reading response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();

            System.Threading.Thread.Sleep(2000);

            Console.WriteLine("Testing COMMAND_SET_B_REV");
            incomingBus.WriteBytes(_TBORG_ADDRESS, new byte[] { 12, 0x80 });
            Console.WriteLine("Response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();

            System.Threading.Thread.Sleep(2000);

            Console.WriteLine("Testing COMMAND_SET_LED1");
            incomingBus.WriteBytes(_TBORG_ADDRESS, new byte[] { 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF });
            Console.WriteLine("Response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();

            Console.WriteLine("Testing COMMAND_GET_LED1");
            incomingBus.WriteByte(_TBORG_ADDRESS, 0x02);
            Console.WriteLine("Reading response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();

            Console.WriteLine("Testing COMMAND_SET_LED2");
            incomingBus.WriteBytes(_TBORG_ADDRESS, new byte[] { 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF });
            Console.WriteLine("Response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();

            Console.WriteLine("Testing COMMAND_GET_LED2");
            incomingBus.WriteByte(_TBORG_ADDRESS, 0x04);
            Console.WriteLine("Reading response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();

            Console.WriteLine("Testing COMMAND_SET_LEDS");
            incomingBus.WriteBytes(_TBORG_ADDRESS, new byte[] { 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF });
            Console.WriteLine("Response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();

            Console.WriteLine("Testing COMMAND_SET_A_FWD");
            incomingBus.WriteBytes(_TBORG_ADDRESS, new byte[] { 0x08, 0x80 });
            Console.WriteLine("Response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();

            Console.WriteLine("Testing COMMAND_SET_B_REV");
            incomingBus.WriteBytes(_TBORG_ADDRESS, new byte[] { 0x0C, 0x80 });
            Console.WriteLine("Response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();

            Console.WriteLine("Testing COMMAND_GET_DRIVE_A_FAULT");
            incomingBus.WriteByte(_TBORG_ADDRESS, 0x0E);
            Console.WriteLine("Reading response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();

            Console.WriteLine("Testing COMMAND_GET_DRIVE_B_FAULT");
            incomingBus.WriteByte(_TBORG_ADDRESS, 0x0F);
            Console.WriteLine("Reading response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();

            Console.WriteLine("Testing COMMAND_SET_FAILSAFE");
            incomingBus.WriteBytes(_TBORG_ADDRESS, new byte[] { 0x13, 0x01 });
            Console.WriteLine("Reading response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();

            Console.WriteLine("Waiting for a few seconds...");
            System.Threading.Thread.Sleep(5000);

            Console.WriteLine("Testing COMMAND_SET_FAILSAFE");
            incomingBus.WriteBytes(_TBORG_ADDRESS, new byte[] { 0x13, 0x00 });
            Console.WriteLine("Reading response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();



            Console.WriteLine("Testing COMMAND_GET_BATT_VOLT");
            incomingBus.WriteByte(_TBORG_ADDRESS, 21);
            Console.WriteLine("Response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));

            Console.WriteLine("Testing COMMAND_ALL_OFF");
            incomingBus.WriteByte(_TBORG_ADDRESS, 0x14);
            Console.WriteLine("Reading response: " + ParseBytes(incomingBus.ReadBytes(_TBORG_ADDRESS, 6)));
            Console.WriteLine();
        }
Beispiel #10
0
        static void SetPrintPosn(RPi.I2C.Net.I2CBus bus, int offset)
        {
            int posn = LCD_DDRAMADDRESS | offset;

            WriteLCD(bus, PCF_ADDR, (byte)posn, (byte)LCD_COMMAND_MODE);
        }
Beispiel #11
0
 static void ClearDisplay(RPi.I2C.Net.I2CBus bus)
 {
     WriteLCD(bus, PCF_ADDR, (byte)LCD_CLEARDISPLAY, (byte)LCD_COMMAND_MODE);
 }