Serial Wombat Arduino Library
SerialWombatLiquidCrystal.h
Go to the documentation of this file.
1 #pragma once
2 /*
3 Copyright 2022 Broadwell Consulting Inc.
4 
5 "Serial Wombat" is a registered trademark of Broadwell Consulting Inc. in
6 the United States. See SerialWombat.com for usage guidance.
7 
8 Permission is hereby granted, free of charge, to any person obtaining a
9  * copy of this software and associated documentation files (the "Software"),
10  * to deal in the Software without restriction, including without limitation
11  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12  * and/or sell copies of the Software, and to permit persons to whom the
13  * Software is furnished to do so, subject to the following conditions:
14 
15 The above copyright notice and this permission notice shall be included in
16  * all copies or substantial portions of the Software.
17 
18 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
22  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
23  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24  * OTHER DEALINGS IN THE SOFTWARE.
25 */
26 
27 
28 #include <stdint.h>
29 #include "SerialWombat.h"
30 
31 
68 class
69  SerialWombatLiquidCrystal : public Print, public SerialWombatPin
70 {
71 public:
80  SerialWombatLiquidCrystal(SerialWombatChip& serialWombat, uint8_t rs, uint8_t enable, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
81 
82 
88  int16_t begin(uint8_t cols = 80, uint8_t rows = 1);
89 
98  int16_t clear(bool delayAfterClear = true);
99 
100 
109  int16_t home(bool delay = true);
110 
117  int16_t setCursor(uint8_t col, uint8_t row);
118 
122  int16_t noCursor();
123 
127  int16_t cursor();
128 
132  int16_t blink();
133 
137  int16_t noBlink();
138 
139 
143  int16_t display();
144 
148  int16_t noDisplay();
149 
155  int16_t scrollDisplayLeft();
156 
162  int16_t scrollDisplayRight();
163 
167  int16_t autoscroll();
168 
169 
173  int16_t noAutoscroll();
174 
175 
181  int16_t leftToRight();
182 
188  int16_t rightToLeft();
189 
198  size_t write(uint8_t data);
199 
209  size_t write(uint8_t* buffer, size_t count);
210 
217  int16_t createChar(uint8_t index, uint8_t bitmap[]);
218 
232  int16_t setRowOffsets(uint8_t row1, uint8_t row2, uint8_t row3, uint8_t row4);
233 
239  int16_t command(uint8_t cmd);
240 
244  uint8_t pin() { return _pin; }
245 
249  uint8_t swPinModeNumber() { return _pinMode; }
250 
262  int16_t initializeBufferCopy(uint16_t bufferIndex, uint8_t width = 255);
263 //TODO int16_t dataMonitor(uint8_t pin, uint8_t col, uint8_t row, uint8_t index, bool hex=false);
264 
275  int16_t beginE2(uint8_t e2Pin);
276 
277  using Print::write; //Inherit the write commands from print.
278 
279 
280 private:
281  uint8_t _rs = 255,
282  _d4 = 255,
283  _d5 = 255,
284  _d6 = 255,
285  _d7 = 255;
286  uint8_t _rows = 2;
287  uint8_t _columns = 40;
288  uint8_t _offsets[8] = { 0,64,20,84,0,64,20,84 };
289 
290 };
SerialWombatLiquidCrystal::scrollDisplayLeft
int16_t scrollDisplayLeft()
Display moves left when scrolling.
Definition: SerialWombatLiquidCrystal.cpp:4
SerialWombatLiquidCrystal::leftToRight
int16_t leftToRight()
LCD Display entry occurs left to right.
Definition: SerialWombatLiquidCrystal.cpp:41
SerialWombatChip
Class for a Serial Wombat chip. Each Serial Wombat chip on a project should have its own instance.
Definition: SerialWombat.h:279
SerialWombatLiquidCrystal::command
int16_t command(uint8_t cmd)
send a command directly to the LCD
Definition: SerialWombatLiquidCrystal.cpp:184
SerialWombatLiquidCrystal::initializeBufferCopy
int16_t initializeBufferCopy(uint16_t bufferIndex, uint8_t width=255)
kicks off the Serial Wombat chip state machine that copies one character to the LCD each second from ...
Definition: SerialWombatLiquidCrystal.cpp:198
SerialWombatLiquidCrystal::autoscroll
int16_t autoscroll()
Turn on autoscrolling mode on the LCD display (not in the Serial Wombat chip)
Definition: SerialWombatLiquidCrystal.cpp:15
SerialWombatLiquidCrystal::createChar
int16_t createChar(uint8_t index, uint8_t bitmap[])
Write bitmap data to the display for custom characters.
Definition: SerialWombatLiquidCrystal.cpp:71
SerialWombatLiquidCrystal::swPinModeNumber
uint8_t swPinModeNumber()
returns the pin mode number. Override for use with classes that require this as a virtual function
Definition: SerialWombatLiquidCrystal.h:249
SerialWombatLiquidCrystal::clear
int16_t clear(bool delayAfterClear=true)
Clear the LCD display.
Definition: SerialWombatLiquidCrystal.cpp:270
SerialWombat.h
SerialWombatLiquidCrystal::setCursor
int16_t setCursor(uint8_t col, uint8_t row)
Set the cursor / next entry position.
Definition: SerialWombatLiquidCrystal.cpp:288
SerialWombatLiquidCrystal::begin
int16_t begin(uint8_t cols=80, uint8_t rows=1)
Initialization routine for SerialWombatLiquidCrystal.
Definition: SerialWombatLiquidCrystal.cpp:244
SerialWombatLiquidCrystal::noCursor
int16_t noCursor()
Makes the cursor invisible.
Definition: SerialWombatLiquidCrystal.cpp:302
SerialWombatLiquidCrystal::cursor
int16_t cursor()
Makes the cursor visible.
Definition: SerialWombatLiquidCrystal.cpp:315
SerialWombatLiquidCrystal::beginE2
int16_t beginE2(uint8_t e2Pin)
Add a second e pin for use wtih 40x4 LCD displays.
Definition: SerialWombatLiquidCrystal.cpp:217
SerialWombatLiquidCrystal::blink
int16_t blink()
Makes the cursor blink.
Definition: SerialWombatLiquidCrystal.cpp:370
SerialWombatPin
Describes a Serial Wombat Pin. Is base class for other pin modes.
Definition: SerialWombat.h:1470
SerialWombatLiquidCrystal::noDisplay
int16_t noDisplay()
Disables LCD display.
Definition: SerialWombatLiquidCrystal.cpp:356
SerialWombatLiquidCrystal::noBlink
int16_t noBlink()
Makes the cursor not blink.
Definition: SerialWombatLiquidCrystal.cpp:328
SerialWombatPin::_pinMode
uint8_t _pinMode
Definition: SerialWombat.h:1567
SerialWombatLiquidCrystal::scrollDisplayRight
int16_t scrollDisplayRight()
Display moves right when scrolling.
Definition: SerialWombatLiquidCrystal.cpp:10
SerialWombatLiquidCrystal::pin
uint8_t pin()
returns the e pin number. Override for use with classes that require this as a virtual function
Definition: SerialWombatLiquidCrystal.h:244
SerialWombatPin::_pin
uint8_t _pin
Definition: SerialWombat.h:1565
SerialWombatLiquidCrystal::display
int16_t display()
Enabled LCD display.
Definition: SerialWombatLiquidCrystal.cpp:342
SerialWombatLiquidCrystal::setRowOffsets
int16_t setRowOffsets(uint8_t row1, uint8_t row2, uint8_t row3, uint8_t row4)
Set the offsets in the LCD on-board memory for the beginning of each row.
Definition: SerialWombatLiquidCrystal.cpp:163
SerialWombatLiquidCrystal::home
int16_t home(bool delay=true)
Set the LCD cursor / entry position to the 0,0 position.
Definition: SerialWombatLiquidCrystal.cpp:279
SerialWombatLiquidCrystal::write
size_t write(uint8_t data)
Write a byte of data directly to the LCD.
Definition: SerialWombatLiquidCrystal.cpp:54
SerialWombatLiquidCrystal::noAutoscroll
int16_t noAutoscroll()
Turn off autoscrolling mode on the LCD display (not in the Serial Wombat chip)
Definition: SerialWombatLiquidCrystal.cpp:28
SerialWombatLiquidCrystal::SerialWombatLiquidCrystal
SerialWombatLiquidCrystal(SerialWombatChip &serialWombat, uint8_t rs, uint8_t enable, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
Class constructor for SerialWombatLiquidCrystal.
Definition: SerialWombatLiquidCrystal.cpp:232
SerialWombatLiquidCrystal::rightToLeft
int16_t rightToLeft()
LCD Display entry occurs right to left.
Definition: SerialWombatLiquidCrystal.cpp:150
SerialWombatLiquidCrystal
A Class which connects to HD44780 / 1602 / 4002 / 2004 or similar interface Character LCDs.
Definition: SerialWombatLiquidCrystal.h:68