1
0
mirror of https://github.com/taigrr/arduinolibs synced 2025-01-18 04:33:12 -08:00

Document LCD examples

This commit is contained in:
Rhys Weatherley 2012-04-11 14:22:12 +10:00
parent 9f0f4a4ccf
commit 45c2d09347
7 changed files with 223 additions and 14 deletions

View File

@ -668,7 +668,7 @@ EXCLUDE_SYMBOLS =
# directories that contain example code fragments that are included (see
# the \include command).
EXAMPLE_PATH =
EXAMPLE_PATH = ../libraries
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp

99
doc/lcd-form.dox Normal file
View File

@ -0,0 +1,99 @@
/*
* Copyright (C) 2012 Southern Storm Software, Pty Ltd.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
/**
\file lcd-form.dox
\page lcd_form Form example for LCD displays
The Form and Field classes simplify the process of building user interfaces
for Arduino projects that use a <a href="http://www.freetronics.com/pages/16x2-lcd-shield-quickstart-guide">Freetronics LCD</a> shield. That shield has a
16x2 LCD display and five buttons for Up, Down, Left, Right, and Select.
The user interface is organised as a "form" which consists of one or more
"fields" that display or modify a single program parameter. The Left and
Right buttons are used to navigate between fields, and the Up and Down
buttons are used to modify the value of the currently-displayed field.
We start by including the classes from the library that we will need:
\dontinclude FreetronicsLCD/examples/Form/Form.pde
\skip FreetronicsLCD.h
\until BoolField.h
Next, we initialize the LCD display, create the main form, and populate
it with fields:
\dontinclude FreetronicsLCD/examples/Form/Form.pde
\skip lcd;
\until lcd;
\skip mainForm
\until durationField
Each field has a specific type, which may be one of the following classes:
\li BoolField displays a boolean on/off value with the Up, Down, or Select
buttons used to toggle its state.
\li IntField displays an integer value within a specified range, with the
Up and Down buttons used to modify the value.
\li TextField displays a read-only value, which is typically used for
status messages and program results.
\li TimeField displays a time in hours, minutes, and seconds. The field may
be either read-only or writable. Writable time fields can be modified with
the Up, Down, Left, and Right buttons to select a specific duration.
Returning to our example, the above code creates the following fields:
\li \c welcomeField to display the program's name and version.
\li \c timeField to display the number of seconds since reset, wrapping around
after 24 hours. This field is read-only.
\li \c volumeField which displays a volume between 0 and 100, with an Up/Down
step of 5, and a suffix of "%".
\li \c ledField which displays the current boolean state of the status LED on
D13; the LED will change state when the user toggles the field's value.
\li \c durationField which displays a read-write time field for selecting a
duration between 0 and 24 hours.
Now that we have defined our form, we need to initialize the program and
show it for the first time:
\dontinclude FreetronicsLCD/examples/Form/Form.pde
\skip STATUS_LED
\until }
An application can have multiple forms, but only one can be shown at any
given time. To switch to another form, call Form::hide() on the old
form and Form::show() on the new form.
All that remains is to define our application's \c loop function which
retrieves button events from FreetronicsLCD::getButton() and dispatches them
to the form:
\dontinclude FreetronicsLCD/examples/Form/Form.pde
\skip loop()
\until }
\until }
\until }
The full source code for the example follows:
\include FreetronicsLCD/examples/Form/Form.pde
*/

83
doc/lcd-helloworld.dox Normal file
View File

@ -0,0 +1,83 @@
/*
* Copyright (C) 2012 Southern Storm Software, Pty Ltd.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
/**
\file lcd-helloworld.dox
\page lcd_hello_world Hello World for Freetronics LCD
The FreetronicsLCD class provides an enhanced version of the standard
Arduino <a href="http://arduino.cc/en/Reference/LiquidCrystal">LiquidCrystal</a>
library that supports the additional features of the
<a href="http://www.freetronics.com/pages/16x2-lcd-shield-quickstart-guide">Freetronics LCD</a> shield;
namely the back light and the Up, Down, Left, Right, and Select buttons.
This tutorial explains how to use the FreetronicsLCD class to perform
basic text output and to use the enhanced shield features. We start by
including the library and initializing it:
\dontinclude FreetronicsLCD/examples/HelloWorld/HelloWorld.pde
\skip FreetronicsLCD.h
\until lcd
Unlike the LiquidCrystal library we don't normally need to specify the pin
assignments for this shield. The one exception is when the shield is used
with the USBDroid and the D9 pin is reassigned as described on
<a href="http://www.freetronics.com/pages/combining-the-lcd-keypad-shield-and-the-usbdroid">this page</a>. In that case, the initialization sequence
would look something like this instead:
\code
FreetronicsLCD lcd(A1);
\endcode
The next step is to enable the screen saver and print some text
in the \c setup function:
\dontinclude FreetronicsLCD/examples/HelloWorld/HelloWorld.pde
\skip setup()
\until }
The screen saver is a built-in feature of the FreetronicsLCD class that
turns off the display and the back light after a specific timeout
(the default is 10 seconds). Pressing any of the keys on the shield
or calling FreetronicsLCD::display() will wake up the screen again.
In the program's \c loop function we print the number of seconds
since startup to the second line of the LCD display:
\dontinclude FreetronicsLCD/examples/HelloWorld/HelloWorld.pde
\skip loop()
\until millis()
We then print the name of the button that is currently pressed:
\dontinclude FreetronicsLCD/examples/HelloWorld/HelloWorld.pde
\skip setCursor(8, 1)
\until }
The FreetronicsLCD::getButton() function returns the key that has
been pressed or released, or LCD_BUTTON_NONE if no key has been
pressed or released this time through the loop.
The full source code for the example follows:
\include FreetronicsLCD/examples/HelloWorld/HelloWorld.pde
*/

View File

@ -1,6 +1,38 @@
/*
* Copyright (C) 2012 Southern Storm Software, Pty Ltd.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
/**
\file mainpage.dox
\mainpage
Utility libraries for enhanced use of standard Arduino shields.
Utility libraries for enhanced use of standard Arduino main boards
and shields.
\section main_FreeTronics Freetronics LCD Shield
\li FreetronicsLCD class to manage the extended features of the Freetronics
LCD shield.
\li Form and Field classes to build simple property sheet UI's on LCD displays.
\li \ref lcd_hello_world "Hello World" example for the Freetronics LCD shield.
\li \ref lcd_form "Form" example for LCD displays.
*/

View File

@ -26,6 +26,9 @@
/**
* \class Form Form.h <Form.h>
* \brief Manager for a form containing data input/output fields.
*
* See the \ref lcd_form "Form example" for more information on
* creating an application that uses forms and fields.
*/
/**

View File

@ -71,6 +71,9 @@
* generic button has been pressed with <tt>button &gt; 0</tt> and if a
* generic button has been released with <tt>button &lt; 0</tt>.
*
* See the \ref lcd_hello_world "Hello World" example for more
* information on using the FreetronicsLCD class.
*
* \sa Form
*/

View File

@ -8,10 +8,7 @@ http://www.freetronics.com/pages/16x2-lcd-shield-quickstart-guide
This example is placed into the public domain.
*/
// include the library code:
#include <FreetronicsLCD.h>
// initialize the library
FreetronicsLCD lcd;
// Note: if you are using the USBDroid and have reassigned pin D9 on the LCD shield to some
@ -20,22 +17,14 @@ FreetronicsLCD lcd;
// See also: http://www.freetronics.com/pages/combining-the-lcd-keypad-shield-and-the-usbdroid
void setup() {
// Enable the screen saver, which will automatically blank the screen after 10 seconds.
// The screen will wake up again when a button is pressed or lcd.display() is called.
lcd.enableScreenSaver();
// Print a message to the LCD.
lcd.print("hello, world!");
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
lcd.print(millis() / 1000);
// print the name of the button that is currently pressed
lcd.setCursor(8, 1);
int button = lcd.getButton();
if (button == LCD_BUTTON_LEFT)