F Malpartida avatar F Malpartida committed b6648f6

Added schematic section and first initial block.

Comments (0)

Files changed (3)

Add a comment to this file

4bit_lcd_connection_schem.jpg

Added
New image
 
 {{https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/I2CLCDextraIO_assemblyProject_small.jpg|LCD library}}
 
-Welcome to the //LCD Library// for Arduino. It is a derivate of the original LiquidCrystal Library as sourced in the Arduino SDK. It has been developed to be compatible with the current LiquidCrystal library, its performance is 3.25 faster and fully extendable if need be. It supports most Hitachi HD44780 based LCDs, or compatible, connected to any project using: 4, 8 wire parallel interface, I2C IO port expander and Shift Regiter.
-
-The //LCD library// is based on the [[I2CIO|I2CIO driver library]] for the PCF8574* I2C IO expander ASIC.
+Welcome to the //LCD Library// for Arduino. It is a derivate of the original LiquidCrystal Library as 
+sourced in the Arduino SDK. It has been developed to be compatible with the current LiquidCrystal library, 
+its performance is 3.25 faster and fully extendable if need be. It supports most Hitachi HD44780 based LCDs, 
+or compatible, connected to any project using: 4, 8 wire parallel interface, I2C IO port expander and Shift Regiter.
 
 It currently supports 4 types of connections:
 * 4 bit parallel LCD interface
 * 8 bit parallel LCD interface
 * I2C IO bus expansion board with the PCF8574* I2C IO expander ASIC.
 * ShiftRegister adaptor board as described [[http://code.google.com/p/arduinoshiftreglcd/|Shift Register project home]].
+* ShiftRegister adaptor board as described [[http://marc.merlins.org/perso/arduino/post_2012-01-23_LiquidCrystal-driver-support-LCD3Wire-hardware-_pebble-and-others_.html]]
 
-They have all been tested, the last one was the ShiftRegister adaptor by [[http://www.3guys1laser.com/blog-cheap-arduino-2-wire-lcd-display-0|piccaso]] - flo, thanks for testing it and sharing.
+They have all been tested, the last one was the ShiftRegister adaptor by 
+[[http://www.3guys1laser.com/blog-cheap-arduino-2-wire-lcd-display-0|piccaso]] - Florian Fida - Flo, 
+thanks for testing it and sharing.
+
+The LiquidCrystal_SR_LCD3 was developed, tested and integrated by Mark Merlin - thanks Mark for
+testing and sharing.
+
+There is a nice freebe in the library: fastIO. This is a collection of fast digital read write operations
+writen by Florian Fida that make the ShiftRegister support as fast as the 4bit parallel LCD.
 
 === Library Overview ===
 
-This library provides the same interface to applications as the LiquidCrystal library sourced by the Arduino SDK. The main changes to the LiquidCrystal Library is that it has been changed to be a pure abstract class from which particular implementations derive from. 
+This library provides the same interface to applications as the LiquidCrystal library sourced by the 
+Arduino SDK. The main changes to the LiquidCrystal Library is that it has been changed to be a pure 
+abstract class from which particular implementations derive from. All the basic functions to control
+an LCD are implemented in the base class, while the particular way to "talk" to the LCD is done
+by a class that simply knows how to write to the LCD.
 
-Therefore, it is possible to create new drivers to the library by simply inhering from the base class and develop the functions that are specific to "talk" to the LCD. 
+Therefore, it is possible to create new drivers to the library by simply inhering from the base class 
+and develop the functions that are specific to "talk" to the LCD. 
 
 The library currently supports 3 types of connections:
 * 4 bit parallel LCD interface
 * I2C IO bus expansion board with the PCF8574* I2C IO expander ASIC.
 * ShiftRegister adaptor board.
 
+The //LCD library// started as a base support for the to support the for the PCF8574* I2C IO expander 
+ASIC [[I2CIO|I2CIO driver library]] but rapidly grew to support other LCD driving mechanism.
 
-The library is also very easy to customize for different I2C IO expansion boards using different 
-I2C expander ASICs.
-
-Since this library is a full class hierarchy, new interfacing mechanisms can be added without having to re-write the entire driver. Drivers for the MCP2300, SPI and Serial are very easy to develop since you would only have to worry about how to write to the particular new device.
+Since this library is a full class hierarchy, new interfacing mechanisms can be added without having 
+to re-write the entire driver. Drivers for the MCP2300, SPI and Serial are very easy to develop since 
+you would only have to worry about how to write to the particular new device.
 
 === Usage ===
 
-The library is used just like the current stock LiquidCrystal LCD library. You only have to tell it what type of LCD and how you have connected to your project and you are set. The main difference is that the //LCD library// is a "collection" of libraries with the same common interface (a class hierarchy with a base abstract class - in the technical jargon).
+The library is used just like the current stock LiquidCrystal LCD library. You only have to tell it 
+what type of LCD and how you have connected to your project and you are set. The main difference is 
+that the //LCD library// is a "collection" of libraries with the same common interface (a class 
+hierarchy with a base abstract class - in the technical jargon).
 
 Here's of how to use the library for a 4 bit LCD interface:
 {{{
 }
 }}}
 
-Being a "collection" of libraries with a common interface, you can develop a complete project just by using a reference to the base LCD class (a pointer to an "LCD variable") and then in the project (sketch) and during the initialization (setup routine) you would just have to pass the "concrete" LCD that you are using.
+Being a "collection" of libraries with a common interface, you can develop a complete project just
+by using a reference to the base LCD class (a pointer to an "LCD variable") and then in the project 
+(sketch) and during the initialization (setup routine) you would just have to pass the "concrete" 
+LCD that you are using.
 
-This is particularly useful for projects that have a MMI built-in where you would like to use it with multiple LCDs maintaining the user interface hidden from the particular LCD you are using. It is also very useful if you have a project and you don't know how you are going to connect the LCD or your change your mind halfway through the project.
+This is particularly useful for projects that have a MMI built-in where you would like to use it 
+with multiple LCDs maintaining the user interface hidden from the particular LCD you are using. 
+It is also very useful if you have a project and you don't know how you are going to connect the 
+LCD or your change your mind halfway through the project.
 
 Using the virtual LCD class in projects:
 {{{
 
 The only difference is the "include" and how you initialize the LCD. Not a bit difference, right!
 
-When you install the library it may come out with a compilation error. This is due to the fact that it can't find the Wire library header files. Please include Wire.h at the beginning of your sketch. Why? Because of the peculiarities of the Arduino compilation environment. I am working on a way to work around this.
+When you install the library it may come out with a compilation error. This is due to the fact that 
+it can't find the Wire library header files. Please include Wire.h at the beginning of your sketch. 
+Why? Because of the peculiarities of the Arduino compilation environment. I am working on a way to work around this.
 
 
 === Downloading and Installation ===
 
-Source code for the library and documentation can be downloaded from the download section of this repository: [[https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads|here]]
+Source code for the library and documentation can be downloaded from the download section of this 
+repository: [[https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads|here]]
 
-The library comes in source and with examples that will get you started. Additionally you have a full description of the library in the docs folder in HTML format that you can browse.
+The library comes in source and with examples that will get you started. Additionally you have a 
+full description of the library in the docs folder in HTML format that you can browse.
 
 To install the library:
 * Download the most recent version of the library.
 * When you start the Arduino IDE, it should contain a new menu "LCD" with examples. (File > Examples > LCD...). It should also appear in the menu Sketch > import library.
 * Alternatively you can install the library in the Arduino SDK library pool. To install and learn about libraries please follow the instructions in [[http://www.arduino.cc/playground/Code/Library|Library Tutorial]], there is a Section in the Tutorial indicating how to install a library.
 
-//The library has been developed to replace the current Arduino library, therefore you will need to remove/backup the LiquidCrystal folder from the Arduino library folder the original LiquidCrystal library and replace it for this one.//
+//The library has been developed to replace the current Arduino library, therefore you will need to 
+remove/backup the LiquidCrystal folder from the Arduino library folder the original LiquidCrystal 
+library and replace it for this one.//
 
-Also in the download section you can find the [[I2CIO|I2CIO driver library]] for the PCF8574* I2C IO expander ASIC. The library has been tested with the [[http://www.electrofunltd.com/p/i2c-lcd-extra-io.html|**LCDI2CextraIO**]] board. 
+Also in the download section you can find the [[I2CIO|I2CIO driver library]] for the PCF8574* I2C IO 
+expander ASIC. The library has been tested with the [[http://www.electrofunltd.com/p/i2c-lcd-extra-io.html|**LCDI2CextraIO**]] board. 
 
-=== Performance benchmarking and Tests ===
-
-==== Tests ====
+=== Tests ===
 All the HW configurations described in the HW section have been tested, the last one was the ShiftRegister adaptor by [[http://www.3guys1laser.com/blog-cheap-arduino-2-wire-lcd-display-0|piccaso]], thanks for testing it and sharing.
 
 The code has been fully tested with a 4 bit interface and with the [[http://www.electrofunltd.com/p/i2c-lcd-extra-io.html|**I2CLCDextraIO**]] (companion board to this library) using the PCF8574* ASIC.
 
-==== Benchmakrs ====
+=== Performance and Benchmakrs ===
 Each supported and tested library class has gone through a performance benchmark and it is compared with respect to the original LiquidCrystal library.
 
 ShiftRegister class benched marked by [[http://www.3guys1laser.com/blog-cheap-arduino-2-wire-lcd-display-0|piccaso]] - flo, thanks for testing it and sharing.
 
 [[schematics|HW schematics]]
 
-
 === Version ===
 Current New LiquidCrystal is the latest zip file in the download section.
 
 = Hardware configurations =
 
-== Description ==
+== 4 bit parallel connection ==
+This is the basic parallel conection to an LCD, using 4 IO for data and 2 to control the LCD.
 
 === Board layout ===
 
+{{https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/4bit_lcd_connection_schem.jpg|4 bit connection}}
+
+The pin assignement is arbitrary and can be mapped to suit your application. Take care when initialising
+the LCD and make sure you pass the correct IO assignement to the LiquidCrystal constructor ("variable" initialization). 
+
+== I2C connection ==
+
+
+=== Board layout ===
+
+{{https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/4bit_lcd_connection_schem.jpg|4 bit connection}}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.