|
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