Skip to content

Commit 1258c47

Browse files
committed
Refactored, updated examples, appeased Sphinx.
1 parent 8fe9cf2 commit 1258c47

19 files changed

+384
-233
lines changed

README.rst

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ This library is compatible with standard Character LCDs such as:
1919
* `Adafruit RGB backlight negative LCD 16x2 <https://www.adafruit.com/product/399>`_
2020
* `Adafruit RGB backlight negative LCD 20x4 <https://www.adafruit.com/product/498>`_
2121

22-
Compatible with CircuitPython Versions: 2.x
23-
2422
Dependencies
2523
=============
2624
This driver depends on:
@@ -42,20 +40,23 @@ The ``Character_LCD`` class interfaces a predefined Character LCD display with C
4240

4341
.. code-block:: python
4442
45-
import adafruit_character_lcd
43+
import board
44+
import digitalio
45+
import adafruit_character_lcd.character_lcd as character_lcd
4646
4747
You must define the data pins (``RS``, ``EN``, ``D4``, ``D5``, ``D6``, ``D7``) in your code before using the ``Character_LCD`` class.
48-
If you want to have on/off ``backlight`` functionality, you can also define your backlight as ``lcd_backlight``. Otherwise, the backlight will always remain on. An example of this is below
48+
If you want to have on/off ``backlight`` functionality, you can also define your backlight as ``lcd_backlight``. Otherwise, the backlight
49+
will always remain on. The following is an example setup.
4950

5051
.. code-block:: python
5152
52-
lcd_rs = digitalio.DigitalInOut(D7)
53-
lcd_en = digitalio.DigitalInOut(D8)
54-
lcd_d7 = digitalio.DigitalInOut(D12)
55-
lcd_d6 = digitalio.DigitalInOut(D11)
56-
lcd_d5 = digitalio.DigitalInOut(D10)
57-
lcd_d4 = digitalio.DigitalInOut(D9)
58-
lcd_backlight = digitalio.DigitalInOut(D13)
53+
lcd_rs = digitalio.DigitalInOut(board.D7)
54+
lcd_en = digitalio.DigitalInOut(board.D8)
55+
lcd_d7 = digitalio.DigitalInOut(board.D12)
56+
lcd_d6 = digitalio.DigitalInOut(board.D11)
57+
lcd_d5 = digitalio.DigitalInOut(board.D10)
58+
lcd_d4 = digitalio.DigitalInOut(board.D9)
59+
lcd_backlight = digitalio.DigitalInOut(board.D13)
5960
6061
You must also define the size of the CharLCD by specifying its ``lcd_columns`` and ``lcd_rows``:
6162

@@ -68,7 +69,7 @@ After you have set up your LCD, we can make the device by calling it
6869

6970
.. code-block:: python
7071
71-
lcd = adafruit_character_lcd.Character_LCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight)
72+
lcd = character_lcd.Character_LCD_Mono(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight)
7273
7374
7475
To verify that your pins are correct, print a hello message to the CharLCD:
@@ -78,7 +79,7 @@ To verify that your pins are correct, print a hello message to the CharLCD:
7879
lcd.message = "Hello\nCircuitPython"
7980
8081
81-
Custom character example with create_char() is provided within /examples/
82+
Custom character example with ``create_char()`` is provided within /examples/
8283

8384

8485
Contributing

adafruit_character_lcd/character_lcd.py

Lines changed: 45 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@
3434
3535
**Hardware:**
3636
37-
* Adafruit `Character LCDs
38-
<http://www.adafruit.com/category/63_96>`_
37+
"* `Adafruit Character LCDs <http://www.adafruit.com/category/63_96>`_"
3938
4039
**Software and Dependencies:**
4140
@@ -117,11 +116,8 @@ def _map(xval, in_min, in_max, out_min, out_max):
117116

118117
# pylint: disable-msg=too-many-instance-attributes
119118
class Character_LCD:
120-
"""Base class for character LCD."""
121-
LEFT_TO_RIGHT = const(0)
122-
RIGHT_TO_LEFT = const(1)
123-
"""
124-
Interfaces with a character LCD
119+
"""Base class for character LCD.
120+
125121
:param ~digitalio.DigitalInOut rs: The reset data line
126122
:param ~digitalio.DigitalInOut en: The enable data line
127123
:param ~digitalio.DigitalInOut d4: The data line 4
@@ -130,12 +126,11 @@ class Character_LCD:
130126
:param ~digitalio.DigitalInOut d7: The data line 7
131127
:param columns: The columns on the charLCD
132128
:param lines: The lines on the charLCD
133-
:param ~digitalio.DigitalInOut backlight_pin: The backlight pin, usually
134-
the last pin. Check with your datasheet
135-
:param bool backlight_inverted: False if LCD is not inverted, i.e. backlight pin is connected
136-
to common anode. True if LCD is inverted i.e. backlight pin is connected to common cathode.
137129
138130
"""
131+
LEFT_TO_RIGHT = const(0)
132+
RIGHT_TO_LEFT = const(1)
133+
139134
# pylint: disable-msg=too-many-arguments
140135
def __init__(self, rs, en, d4, d5, d6, d7, columns, lines
141136
):
@@ -191,10 +186,9 @@ def clear(self):
191186
import time
192187
import board
193188
import busio
194-
import adafruit_character_lcd.character_lcd_mono as character_lcd
189+
import adafruit_character_lcd.character_lcd_i2c as character_lcd
195190
196191
i2c = busio.I2C(board.SCL, board.SDA)
197-
198192
lcd = character_lcd.Character_LCD_I2C(i2c, 16, 2)
199193
200194
lcd.message = "Hello, world!"
@@ -215,10 +209,9 @@ def cursor(self):
215209
import time
216210
import board
217211
import busio
218-
import adafruit_character_lcd.character_lcd_mono as character_lcd
212+
import adafruit_character_lcd.character_lcd_i2c as character_lcd
219213
220214
i2c = busio.I2C(board.SCL, board.SDA)
221-
222215
lcd = character_lcd.Character_LCD_I2C(i2c, 16, 2)
223216
224217
lcd.cursor = True
@@ -260,10 +253,9 @@ def blink(self):
260253
import time
261254
import board
262255
import busio
263-
import adafruit_character_lcd.character_lcd_mono as character_lcd
256+
import adafruit_character_lcd.character_lcd_i2c as character_lcd
264257
265258
i2c = busio.I2C(board.SCL, board.SDA)
266-
267259
lcd = character_lcd.Character_LCD_I2C(i2c, 16, 2)
268260
269261
lcd.blink = True
@@ -293,10 +285,9 @@ def display(self):
293285
import time
294286
import board
295287
import busio
296-
import adafruit_character_lcd.character_lcd_mono as character_lcd
288+
import adafruit_character_lcd.character_lcd_i2c as character_lcd
297289
298290
i2c = busio.I2C(board.SCL, board.SDA)
299-
300291
lcd = character_lcd.Character_LCD_I2C(i2c, 16, 2)
301292
302293
lcd.message = "Hello, world!"
@@ -324,10 +315,9 @@ def message(self):
324315
import time
325316
import board
326317
import busio
327-
import adafruit_character_lcd.character_lcd_mono as character_lcd
318+
import adafruit_character_lcd.character_lcd_i2c as character_lcd
328319
329320
i2c = busio.I2C(board.SCL, board.SDA)
330-
331321
lcd = character_lcd.Character_LCD_I2C(i2c, 16, 2)
332322
333323
lcd.message = "Hello, world!"
@@ -371,10 +361,9 @@ def move_left(self):
371361
import time
372362
import board
373363
import busio
374-
import adafruit_character_lcd.character_lcd_mono as character_lcd
364+
import adafruit_character_lcd.character_lcd_i2c as character_lcd
375365
376366
i2c = busio.I2C(board.SCL, board.SDA)
377-
378367
lcd = character_lcd.Character_LCD_I2C(i2c, 16, 2)
379368
380369
scroll_message = "<-- Scroll"
@@ -396,19 +385,15 @@ def move_right(self):
396385
import time
397386
import board
398387
import busio
399-
import adafruit_character_lcd.character_lcd_mono as character_lcd
388+
import adafruit_character_lcd.character_lcd_i2c as character_lcd
400389
401390
i2c = busio.I2C(board.SCL, board.SDA)
402-
403-
lcd_columns = 16
404-
lcd_rows = 2
405-
406-
lcd = character_lcd.Character_LCD_I2C(i2c, lcd_columns, lcd_rows)
391+
lcd = character_lcd.Character_LCD_I2C(i2c, 16, 2)
407392
408393
scroll_message = "Scroll -->"
409394
lcd.message = scroll_message
410395
time.sleep(2)
411-
for i in range(len(scroll_message) + lcd_columns):
396+
for i in range(len(scroll_message) + 16):
412397
lcd.move_right()
413398
time.sleep(0.5)
414399
"""
@@ -428,10 +413,9 @@ def text_direction(self):
428413
import time
429414
import board
430415
import busio
431-
import adafruit_character_lcd.character_lcd_mono as character_lcd
416+
import adafruit_character_lcd.character_lcd_i2c as character_lcd
432417
433418
i2c = busio.I2C(board.SCL, board.SDA)
434-
435419
lcd = character_lcd.Character_LCD_I2C(i2c, 16, 2)
436420
437421
lcd.text_direction = lcd.RIGHT_TO_LEFT
@@ -513,21 +497,20 @@ def _pulse_enable(self):
513497

514498
# pylint: disable-msg=too-many-instance-attributes
515499
class Character_LCD_Mono(Character_LCD):
516-
"""Base class for character LCD."""
517-
"""
518-
Interfaces with a character LCD
519-
:param ~digitalio.DigitalInOut rs: The reset data line
520-
:param ~digitalio.DigitalInOut en: The enable data line
521-
:param ~digitalio.DigitalInOut d4: The data line 4
522-
:param ~digitalio.DigitalInOut d5: The data line 5
523-
:param ~digitalio.DigitalInOut d6: The data line 6
524-
:param ~digitalio.DigitalInOut d7: The data line 7
525-
:param columns: The columns on the charLCD
526-
:param lines: The lines on the charLCD
527-
:param ~digitalio.DigitalInOut backlight_pin: The backlight pin, usually
528-
the last pin. Check with your datasheet
529-
:param bool backlight_inverted: False if LCD is not inverted, i.e. backlight pin is connected
530-
to common anode. True if LCD is inverted i.e. backlight pin is connected to common cathode.
500+
"""Interfaces with monochromatic character LCDs.
501+
502+
:param ~digitalio.DigitalInOut rs: The reset data line
503+
:param ~digitalio.DigitalInOut en: The enable data line
504+
:param ~digitalio.DigitalInOut d4: The data line 4
505+
:param ~digitalio.DigitalInOut d5: The data line 5
506+
:param ~digitalio.DigitalInOut d6: The data line 6
507+
:param ~digitalio.DigitalInOut d7: The data line 7
508+
:param columns: The columns on the charLCD
509+
:param lines: The lines on the charLCD
510+
:param ~digitalio.DigitalInOut backlight_pin: The backlight pin
511+
:param bool backlight_inverted: ``False`` if LCD is not inverted, i.e. backlight pin is
512+
connected to common anode. ``True`` if LCD is inverted i.e. backlight pin is connected
513+
to common cathode.
531514
532515
"""
533516
# pylint: disable-msg=too-many-arguments
@@ -558,7 +541,7 @@ def backlight(self):
558541
import time
559542
import board
560543
import busio
561-
import adafruit_character_lcd.character_lcd_mono as character_lcd
544+
import adafruit_character_lcd.character_lcd_i2c as character_lcd
562545
563546
i2c = busio.I2C(board.SCL, board.SDA)
564547
@@ -577,22 +560,21 @@ def backlight(self):
577560
@backlight.setter
578561
def backlight(self, enable):
579562
self._enable = enable
580-
if enable and not self.backlight_inverted or not enable and self.backlight_inverted:
581-
self.backlight_pin.value = 1
582-
if enable and self.backlight_inverted or not enable and not self.backlight_inverted:
583-
self.backlight_pin.value = 0
563+
if enable:
564+
self.backlight_pin.value = not self.backlight_inverted
565+
else:
566+
self.backlight_pin.value = self.backlight_inverted
584567

585568

586569
class Character_LCD_RGB(Character_LCD):
587-
"""Base class for RGB character LCD."""
570+
"""Interfaces with RGB character LCDs.
588571
589-
""" Interfaces with an RGB character LCD
590572
:param ~digitalio.DigitalInOut rs: The reset data line
591573
:param ~digitalio.DigitalInOut en: The enable data line
592-
:param ~digitalio.DigitalInOut d4: The data line 4
593-
:param ~digitalio.DigitalInOut d5: The data line 5
594-
:param ~digitalio.DigitalInOut d6: The data line 6
595-
:param ~digitalio.DigitalInOut d7: The data line 7
574+
:param ~digitalio.DigitalInOut db4: The data line 4
575+
:param ~digitalio.DigitalInOut db5: The data line 5
576+
:param ~digitalio.DigitalInOut db6: The data line 6
577+
:param ~digitalio.DigitalInOut db7: The data line 7
596578
:param columns: The columns on the charLCD
597579
:param lines: The lines on the charLCD
598580
:param ~pulseio.PWMOut, ~digitalio.DigitalInOut red: Red RGB Anode
@@ -603,7 +585,8 @@ class Character_LCD_RGB(Character_LCD):
603585
604586
"""
605587
# pylint: disable-msg=too-many-arguments
606-
def __init__(self, rs, en, db4, db5, db6, db7, columns, lines, red, green, blue, read_write=None):
588+
def __init__(self, rs, en, db4, db5, db6, db7, columns, lines,
589+
red, green, blue, read_write=None):
607590

608591
# Define read_write (rw) pin
609592
self.read_write = read_write
@@ -613,9 +596,6 @@ def __init__(self, rs, en, db4, db5, db6, db7, columns, lines, red, green, blue,
613596
self.read_write.direction = digitalio.Direction.OUTPUT
614597

615598
# define color params
616-
self.red = red
617-
self.green = green
618-
self.blue = blue
619599
self.rgb_led = [red, green, blue]
620600

621601
for pin in self.rgb_led:
@@ -648,11 +628,11 @@ def color(self):
648628
import time
649629
import board
650630
import busio
651-
import adafruit_character_lcd.character_lcd_rgb as character_lcd
631+
import adafruit_character_lcd.character_lcd_rgb_i2c as character_lcd
652632
653633
i2c = busio.I2C(board.SCL, board.SDA)
654634
655-
lcd = character_lcd.Character_LCD_I2C_RGB(i2c, 16, 2)
635+
lcd = character_lcd.Character_LCD_RGB_I2C(i2c, 16, 2)
656636
657637
lcd.color = [100, 0, 0]
658638
lcd.message = "Hello, world!"
@@ -671,5 +651,4 @@ def color(self, color):
671651
# If we don't have a PWM interface, all we can do is turn each color
672652
# on / off. Assume a DigitalInOut (or compatible interface) and write
673653
# 0 (on) to pin for any value greater than 0, or 1 (off) for 0:
674-
pin.value = 0 if color[number] > 0 else 1
675-
654+
pin.value = not color[number] > 1

0 commit comments

Comments
 (0)