Merge branch 'ide-1.5.x'

This commit is contained in:
Federico Fissore
2015-01-22 17:15:05 +01:00
15 changed files with 196 additions and 148 deletions

24
README.adoc Normal file
View File

@@ -0,0 +1,24 @@
= Liquid Crystal Library for Arduino =
This library allows an Arduino board to control LiquidCrystal displays (LCDs) based on the Hitachi HD44780 (or a compatible) chipset, which is found on most text-based LCDs.
For more information about this library please visit us at
http://arduino.cc/en/Reference/LiquidCrystal
== License ==
Copyright (c) Arduino LLC. All right reserved.
This library 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 2.1 of the License, or (at your option) any later version.
This library 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 this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

View File

@@ -44,7 +44,7 @@ LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() { void setup() {
// set up the LCD's number of columns and rows: // set up the LCD's number of columns and rows:
lcd.begin(16,2); lcd.begin(16, 2);
} }
void loop() { void loop() {
@@ -52,12 +52,12 @@ void loop() {
lcd.setCursor(0, 0); lcd.setCursor(0, 0);
// print from 0 to 9: // print from 0 to 9:
for (int thisChar = 0; thisChar < 10; thisChar++) { for (int thisChar = 0; thisChar < 10; thisChar++) {
lcd.print(thisChar); lcd.print(thisChar);
delay(500); delay(500);
} }
// set the cursor to (16,1): // set the cursor to (16,1):
lcd.setCursor(16,1); lcd.setCursor(16, 1);
// set the display to automatically scroll: // set the display to automatically scroll:
lcd.autoscroll(); lcd.autoscroll();
// print from 0 to 9: // print from 0 to 9:

View File

@@ -53,7 +53,7 @@ void loop() {
// Turn off the blinking cursor: // Turn off the blinking cursor:
lcd.noBlink(); lcd.noBlink();
delay(3000); delay(3000);
// Turn on the blinking cursor: // Turn on the blinking cursor:
lcd.blink(); lcd.blink();
delay(3000); delay(3000);
} }

View File

@@ -54,7 +54,7 @@ void loop() {
// Turn off the cursor: // Turn off the cursor:
lcd.noCursor(); lcd.noCursor();
delay(500); delay(500);
// Turn on the cursor: // Turn on the cursor:
lcd.cursor(); lcd.cursor();
delay(500); delay(500);
} }

View File

@@ -119,7 +119,7 @@ void setup() {
lcd.print("I "); lcd.print("I ");
lcd.write(byte(0)); // when calling lcd.write() '0' must be cast as a byte lcd.write(byte(0)); // when calling lcd.write() '0' must be cast as a byte
lcd.print(" Arduino! "); lcd.print(" Arduino! ");
lcd.write(1); lcd.write((byte) 1);
} }

View File

@@ -54,7 +54,7 @@ void loop() {
// Turn off the display: // Turn off the display:
lcd.noDisplay(); lcd.noDisplay();
delay(500); delay(500);
// Turn on the display: // Turn on the display:
lcd.display(); lcd.display();
delay(500); delay(500);
} }

View File

@@ -55,6 +55,6 @@ void loop() {
// (note: line 1 is the second row, since counting begins with 0): // (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
// print the number of seconds since reset: // print the number of seconds since reset:
lcd.print(millis()/1000); lcd.print(millis() / 1000);
} }

View File

@@ -70,8 +70,8 @@ void loop() {
delay(150); delay(150);
} }
// scroll 16 positions (display length + string length) to the left // scroll 16 positions (display length + string length) to the left
// to move it back to center: // to move it back to center:
for (int positionCounter = 0; positionCounter < 16; positionCounter++) { for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
// scroll one position left: // scroll one position left:
lcd.scrollDisplayLeft(); lcd.scrollDisplayLeft();

View File

@@ -41,8 +41,8 @@
// initialize the library with the numbers of the interface pins // initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup(){ void setup() {
// set up the LCD's number of columns and rows: // set up the LCD's number of columns and rows:
lcd.begin(16, 2); lcd.begin(16, 2);
// initialize the serial communications: // initialize the serial communications:
Serial.begin(9600); Serial.begin(9600);

View File

@@ -1,40 +1,40 @@
/* /*
LiquidCrystal Library - TextDirection LiquidCrystal Library - TextDirection
Demonstrates the use a 16x2 LCD display. The LiquidCrystal Demonstrates the use a 16x2 LCD display. The LiquidCrystal
library works with all LCD displays that are compatible with the library works with all LCD displays that are compatible with the
Hitachi HD44780 driver. There are many of them out there, and you Hitachi HD44780 driver. There are many of them out there, and you
can usually tell them by the 16-pin interface. can usually tell them by the 16-pin interface.
This sketch demonstrates how to use leftToRight() and rightToLeft() This sketch demonstrates how to use leftToRight() and rightToLeft()
to move the cursor. to move the cursor.
The circuit: The circuit:
* LCD RS pin to digital pin 12 * LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11 * LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5 * LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4 * LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3 * LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2 * LCD D7 pin to digital pin 2
* LCD R/W pin to ground * LCD R/W pin to ground
* 10K resistor: * 10K resistor:
* ends to +5V and ground * ends to +5V and ground
* wiper to LCD VO pin (pin 3) * wiper to LCD VO pin (pin 3)
Library originally added 18 Apr 2008 Library originally added 18 Apr 2008
by David A. Mellis by David A. Mellis
library modified 5 Jul 2009 library modified 5 Jul 2009
by Limor Fried (http://www.ladyada.net) by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009 example added 9 Jul 2009
by Tom Igoe by Tom Igoe
modified 22 Nov 2010 modified 22 Nov 2010
by Tom Igoe by Tom Igoe
This example code is in the public domain. This example code is in the public domain.
http://arduino.cc/en/Tutorial/LiquidCrystalTextDirection http://arduino.cc/en/Tutorial/LiquidCrystalTextDirection
*/ */
// include the library code: // include the library code:
#include <LiquidCrystal.h> #include <LiquidCrystal.h>

View File

@@ -49,7 +49,7 @@ LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() { void setup() {
// set up the LCD's number of columns and rows: // set up the LCD's number of columns and rows:
lcd.begin(numCols,numRows); lcd.begin(numCols, numRows);
} }
void loop() { void loop() {
@@ -60,7 +60,7 @@ void loop() {
// loop over the rows: // loop over the rows:
for (int thisRow = 0; thisRow < numCols; thisRow++) { for (int thisRow = 0; thisRow < numCols; thisRow++) {
// set the cursor position: // set the cursor position:
lcd.setCursor(thisCol,thisRow); lcd.setCursor(thisCol, thisRow);
// print the letter: // print the letter:
lcd.write(thisLetter); lcd.write(thisLetter);
delay(200); delay(200);

1
keywords.txt Executable file → Normal file
View File

@@ -30,6 +30,7 @@ rightToLeft KEYWORD2
scrollDisplayLeft KEYWORD2 scrollDisplayLeft KEYWORD2
scrollDisplayRight KEYWORD2 scrollDisplayRight KEYWORD2
createChar KEYWORD2 createChar KEYWORD2
setRowOffsets KEYWORD2
####################################### #######################################
# Constants (LITERAL1) # Constants (LITERAL1)

9
library.properties Normal file
View File

@@ -0,0 +1,9 @@
name=LiquidCrystal
version=1.0
author=
maintainer=Arduino <info@arduino.cc>
sentence=Allows communication with alphanumerical liquid crystal displays (LCDs). For all Arduino boards.
paragraph=This library allows an Arduino board to control LiquidCrystal displays (LCDs) based on the Hitachi HD44780 (or a compatible) chipset, which is found on most text-based LCDs. The library works with in either 4 or 8 bit mode (i.e. using 4 or 8 data lines in addition to the rs, enable, and, optionally, the rw control lines).
category=Display
url=http://arduino.cc/en/Reference/LiquidCrystal
architectures=*

View File

@@ -87,10 +87,11 @@ void LiquidCrystal::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) {
_displayfunction |= LCD_2LINE; _displayfunction |= LCD_2LINE;
} }
_numlines = lines; _numlines = lines;
_currline = 0;
setRowOffsets(0x00, 0x40, 0x00 + cols, 0x40 + cols);
// for some 1 line displays you can select a 10 pixel high font // for some 1 line displays you can select a 10 pixel high font
if ((dotsize != 0) && (lines == 1)) { if ((dotsize != LCD_5x8DOTS) && (lines == 1)) {
_displayfunction |= LCD_5x10DOTS; _displayfunction |= LCD_5x10DOTS;
} }
@@ -157,6 +158,14 @@ void LiquidCrystal::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) {
} }
void LiquidCrystal::setRowOffsets(int row0, int row1, int row2, int row3)
{
_row_offsets[0] = row0;
_row_offsets[1] = row1;
_row_offsets[2] = row2;
_row_offsets[3] = row3;
}
/********** high level commands, for the user! */ /********** high level commands, for the user! */
void LiquidCrystal::clear() void LiquidCrystal::clear()
{ {
@@ -172,12 +181,15 @@ void LiquidCrystal::home()
void LiquidCrystal::setCursor(uint8_t col, uint8_t row) void LiquidCrystal::setCursor(uint8_t col, uint8_t row)
{ {
int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 }; const size_t max_lines = sizeof(_row_offsets) / sizeof(*_row_offsets);
if ( row >= max_lines ) {
row = max_lines - 1; // we count rows starting w/0
}
if ( row >= _numlines ) { if ( row >= _numlines ) {
row = _numlines-1; // we count rows starting w/0 row = _numlines - 1; // we count rows starting w/0
} }
command(LCD_SETDDRAMADDR | (col + row_offsets[row])); command(LCD_SETDDRAMADDR | (col + _row_offsets[row]));
} }
// Turn the display on/off (quickly) // Turn the display on/off (quickly)

4
LiquidCrystal.h → src/LiquidCrystal.h Executable file → Normal file
View File

@@ -77,6 +77,7 @@ public:
void autoscroll(); void autoscroll();
void noAutoscroll(); void noAutoscroll();
void setRowOffsets(int row1, int row2, int row3, int row4);
void createChar(uint8_t, uint8_t[]); void createChar(uint8_t, uint8_t[]);
void setCursor(uint8_t, uint8_t); void setCursor(uint8_t, uint8_t);
virtual size_t write(uint8_t); virtual size_t write(uint8_t);
@@ -100,7 +101,8 @@ private:
uint8_t _initialized; uint8_t _initialized;
uint8_t _numlines,_currline; uint8_t _numlines;
uint8_t _row_offsets[4];
}; };
#endif #endif