diff -r 01fec4ddad17 -r f4cbe008da72 lib/lcd-pcf8574.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/lcd-pcf8574.c Fri May 02 21:04:20 2014 +0200
@@ -0,0 +1,121 @@
+/*
+ * lcd-pcf8574.c:
+ * Text-based LCD driver library code
+ * This is designed to drive the HD44780U LCD display connected via
+ * a "LCM1602 IIC A0 A1 A2" board with a PCF8574 I2C controller.
+ *
+ * Copyright (c) 2012-2013 Gordon Henderson.
+ * Copyright (c) 2014 Michiel Broek.
+ ***********************************************************************
+ *
+ * mbsePi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * mbsePi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with wiringPi. If not, see .
+ ***********************************************************************
+ */
+
+#include "../config.h"
+#include "mbselib.h"
+
+//#include
+//#include
+//#include
+//#include
+
+//#include
+//#include
+
+//#include
+//#include
+//#include
+
+//#ifndef TRUE
+//# define TRUE (1==1)
+//# define FALSE (1==2)
+//#endif
+
+
+// Defines for the pcf8574 Pi LCD interface board
+
+//#define AF_BASE 100
+
+//#define AF_RS (AF_BASE + 0)
+//#define AF_RW (AF_BASE + 1)
+//#define AF_E (AF_BASE + 2)
+//#define AF_BACKLIGHT (AF_BASE + 3)
+
+//#define AF_DB4 (AF_BASE + 4)
+//#define AF_DB5 (AF_BASE + 5)
+//#define AF_DB6 (AF_BASE + 6)
+//#define AF_DB7 (AF_BASE + 7)
+
+
+// User-Defined character test
+
+// Global lcd handle:
+
+int lcdHandle;
+
+
+/*
+ * setBacklight:
+ *********************************************************************************
+ */
+
+void setBacklight (int value)
+{
+ pinMode (AF_BACKLIGHT, OUTPUT) ;
+ digitalWrite (AF_BACKLIGHT, (value & 1)) ;
+}
+
+
+
+/*
+ * initLCD:
+ *********************************************************************************
+ */
+
+int initLCD (int cols, int rows)
+{
+ if (!((rows == 1) || (rows == 2) || (rows == 4)))
+ {
+ fprintf (stderr, "rows must be 1, 2 or 4\n") ;
+ return EXIT_FAILURE ;
+ }
+
+ if (!((cols == 16) || (cols == 20)))
+ {
+ fprintf (stderr, "cols must be 16 or 20\n") ;
+ return EXIT_FAILURE ;
+ }
+
+ wiringPiSetupSys () ;
+ pcf8574Setup (AF_BASE, 0x27) ;
+
+ setBacklight (1) ;
+
+ pinMode (AF_RW, OUTPUT) ;
+ digitalWrite (AF_RW, LOW) ; // Not used with wiringPi - always in write mode
+
+ // The other control pins are initialised with lcdInit ()
+
+ lcdHandle = lcdInit (rows, cols, 4, AF_RS, AF_E, AF_DB4, AF_DB5, AF_DB6, AF_DB7, 0, 0, 0, 0) ;
+
+ if (lcdHandle < 0)
+ {
+ fprintf (stderr, "lcdInit failed\n") ;
+ return -1 ;
+ }
+
+ lcdClear (lcdHandle) ;
+ return 0 ;
+}