@@ -18,7 +18,7 @@ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
1818ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1919*/
2020
21-
21+ # include < arduino.h >
2222#include < LiquidCrystal.h>
2323#include " MenuLCD.h"
2424
@@ -36,34 +36,73 @@ MenuLCD::MenuLCD(int LCDRS, int LCDE, int LCDD4, int LCDD5, int LCDD6, int LCDD7
3636
3737bool MenuLCD::MenuLCDSetup ()
3838{
39- m_pLcd = new LiquidCrystal (m_LCDRS, m_LCDE, m_LCDD4, m_LCDD5, m_LCDD6, m_LCDD7);
40- m_pLcd ->begin (m_characters, m_lines);
39+ m_pLCD = new LiquidCrystal (m_LCDRS, m_LCDE, m_LCDD4, m_LCDD5, m_LCDD6, m_LCDD7);
40+ m_pLCD ->begin (m_characters, m_lines);
4141}
4242
4343bool MenuLCD::PrintMenu ( char * pString[], int nLines, int nSelectedLine = 0 )
4444{
45- m_pLcd ->clear ();
45+ m_pLCD ->clear ();
4646 for ( int i =0 ; i < nLines; i++ )
4747
4848 {
4949 if ( i == nSelectedLine )
5050 {// this line should be surrounded by []
51- m_pLcd ->setCursor (0 , i);
52- m_pLcd ->write ( ' [' );
53- m_pLcd ->setCursor (1 ,i);
54- m_pLcd ->print ( pString[i] );
55- m_pLcd ->setCursor (m_characters - 1 , i);
56- m_pLcd ->write ( ' ]' );
51+ m_pLCD ->setCursor (0 , i);
52+ m_pLCD ->write ( ' [' );
53+ m_pLCD ->setCursor (1 ,i);
54+ m_pLCD ->print ( pString[i] );
55+ m_pLCD ->setCursor (m_characters - 1 , i);
56+ m_pLCD ->write ( ' ]' );
5757 }
5858 else
5959 {
60- m_pLcd ->setCursor (0 ,i);
61- m_pLcd ->print ( pString[i] );
60+ m_pLCD ->setCursor (0 ,i);
61+ m_pLCD ->print ( pString[i] );
6262 }
6363
6464 }
6565}
6666
67+ void MenuLCD::WipeMenu ( char * pString[], int nLines, MenuLCD::Direction dir )
68+ {
69+ char lineBuff[ 256 ];
70+ m_pLCD->clear ();
71+ for ( int i = 0 ; i < m_characters; ++i )
72+ {
73+ for ( int j =0 ; j < nLines; ++j )
74+ {
75+ m_pLCD->setCursor ( 0 , j );
76+ m_pLCD->setCursor (0 ,j);
77+ if (strlen ( pString[j] ) > i )
78+ {
79+ if ( dir == LEFT )
80+ {
81+ strcpy (lineBuff, (pString[j] + i ) );
82+ strcat (lineBuff, " " );
83+ }
84+ else
85+ {
86+ lineBuff[0 ] = ' \0 ' ;
87+ for ( int k = 0 ; k < i; ++k )
88+ {
89+ strcat (lineBuff, " " );
90+ }
91+ strcat (lineBuff, pString[j]);
92+ }
93+ }
94+ else
95+ {
96+ strcpy (lineBuff, " " );
97+ }
98+ m_pLCD->print ( lineBuff );
99+
100+ }
101+ delay (50 );
102+ }
103+ }
104+
105+
67106bool MenuLCD::PrintLineRight ( char * pString, int iRow )
68107{
69108 // clear the line
@@ -72,11 +111,18 @@ bool MenuLCD::PrintLineRight( char* pString, int iRow )
72111 {
73112 buff[i] = ' ' ;
74113 }
75- m_pLcd ->setCursor ( 0 , iRow );
76- m_pLcd ->print ( buff );
114+ m_pLCD ->setCursor ( 0 , iRow );
115+ m_pLCD ->print ( buff );
77116 // now print the new number
78- m_pLcd->setCursor (m_characters - strlen (pString),iRow);
79- m_pLcd->print ( pString );
117+ m_pLCD->setCursor (m_characters - strlen (pString),iRow);
118+ m_pLCD->print ( pString );
119+ }
120+
121+ bool MenuLCD::PrintLine ( char * pString, int iRow )
122+ {
123+ // clear the line
124+ m_pLCD->setCursor ( 0 , iRow );
125+ m_pLCD->print ( pString );
80126}
81127
82128int MenuLCD::getLines ()
@@ -89,5 +135,11 @@ int MenuLCD::getCharacters()
89135}
90136void MenuLCD::ClearLCD ()
91137{
92- m_pLcd ->clear ();
138+ m_pLCD ->clear ();
93139}
140+
141+ LiquidCrystal * MenuLCD::getLCD ()
142+ {
143+ return m_pLCD;
144+ }
145+
0 commit comments