|
50 | 50 | import busio
|
51 | 51 | from digitalio import DigitalInOut
|
52 | 52 | import pulseio
|
53 |
| -import adafruit_touchscreen |
54 | 53 | import neopixel
|
55 | 54 |
|
56 | 55 | from adafruit_esp32spi import adafruit_esp32spi, adafruit_esp32spi_wifimanager
|
57 | 56 | import adafruit_esp32spi.adafruit_esp32spi_requests as requests
|
| 57 | + |
| 58 | +import adafruit_touchscreen |
| 59 | +from adafruit_cursorcontrol.cursorcontrol import Cursor |
| 60 | +from adafruit_cursorcontrol.cursorcontrol_cursormanager import CursorManager |
| 61 | + |
58 | 62 | try:
|
59 | 63 | from adafruit_display_text.text_area import TextArea # pylint: disable=unused-import
|
60 | 64 | print("*** WARNING ***\nPlease update your library bundle to the latest 'adafruit_display_text' version as we've deprecated 'text_area' in favor of 'label'") # pylint: disable=line-too-long
|
@@ -163,9 +167,11 @@ def __init__(self, *, url=None, headers=None, json_path=None, regexp_path=None,
|
163 | 167 |
|
164 | 168 | self._debug = debug
|
165 | 169 |
|
166 |
| - try: |
| 170 | + if hasattr(board, 'TFT_BACKLIGHT'): |
167 | 171 | self._backlight = pulseio.PWMOut(board.TFT_BACKLIGHT) # pylint: disable=no-member
|
168 |
| - except ValueError: |
| 172 | + elif hasattr(board, 'TFT_LITE'): |
| 173 | + self._backlight = pulseio.PWMOut(board.TFT_LITE) # pylint: disable=no-member |
| 174 | + else: |
169 | 175 | self._backlight = None
|
170 | 176 | self.set_backlight(1.0) # turn on backlight
|
171 | 177 |
|
@@ -224,7 +230,12 @@ def __init__(self, *, url=None, headers=None, json_path=None, regexp_path=None,
|
224 | 230 |
|
225 | 231 | self._speaker_enable = DigitalInOut(board.SPEAKER_ENABLE)
|
226 | 232 | self._speaker_enable.switch_to_output(False)
|
227 |
| - self.audio = audioio.AudioOut(board.AUDIO_OUT) |
| 233 | + if hasattr(board, 'AUDIO_OUT'): |
| 234 | + self.audio = audioio.AudioOut(board.AUDIO_OUT) |
| 235 | + elif hasattr(board, 'SPEAKER'): |
| 236 | + self.audio = audioio.AudioOut(board.SPEAKER) |
| 237 | + else: |
| 238 | + raise AttributeError('Board does not have a builtin speaker!') |
228 | 239 | try:
|
229 | 240 | self.play_file("pyportal_startup.wav")
|
230 | 241 | except OSError:
|
@@ -347,18 +358,26 @@ def __init__(self, *, url=None, headers=None, json_path=None, regexp_path=None,
|
347 | 358 | self._image_position = (0, 0) # default to top corner
|
348 | 359 | if not self._image_resize:
|
349 | 360 | self._image_resize = (320, 240) # default to full screen
|
350 |
| - |
351 |
| - if self._debug: |
352 |
| - print("Init touchscreen") |
353 |
| - # pylint: disable=no-member |
354 |
| - self.touchscreen = adafruit_touchscreen.Touchscreen(board.TOUCH_XL, board.TOUCH_XR, |
355 |
| - board.TOUCH_YD, board.TOUCH_YU, |
356 |
| - calibration=((5200, 59000), |
357 |
| - (5800, 57000)), |
358 |
| - size=(320, 240)) |
359 |
| - # pylint: enable=no-member |
360 |
| - |
361 |
| - self.set_backlight(1.0) # turn on backlight |
| 361 | + if hasattr(board, 'TOUCH_XL'): |
| 362 | + if self._debug: |
| 363 | + print("Init touchscreen") |
| 364 | + # pylint: disable=no-member |
| 365 | + self.touchscreen = adafruit_touchscreen.Touchscreen(board.TOUCH_XL, board.TOUCH_XR, |
| 366 | + board.TOUCH_YD, board.TOUCH_YU, |
| 367 | + calibration=((5200, 59000), |
| 368 | + (5800, 57000)), |
| 369 | + size=(320, 240)) |
| 370 | + # pylint: enable=no-member |
| 371 | + |
| 372 | + self.set_backlight(1.0) # turn on backlight |
| 373 | + elif hasattr(board, 'BUTTON_CLOCK'): |
| 374 | + if self._debug: |
| 375 | + print("Init cursor") |
| 376 | + self.mouse_cursor = Cursor(board.DISPLAY, display_group=self.splash, cursor_speed=8) |
| 377 | + self.mouse_cursor.hide() |
| 378 | + self.cursor = CursorManager(self.mouse_cursor) |
| 379 | + else: |
| 380 | + raise AttributeError('PyPortal module requires either a touchscreen or gamepad.') |
362 | 381 |
|
363 | 382 | gc.collect()
|
364 | 383 |
|
|
0 commit comments