apps: demo: Move the demo code into a fully fledged application
This commit is contained in:
parent
c3bc871727
commit
4906d46ff4
3 changed files with 72 additions and 77 deletions
12
README.rst
12
README.rst
|
@ -109,18 +109,6 @@ At this point you will also be able to use the Nordic UART Service to
|
|||
access the MicroPython REPL, although currently you must send ^C to
|
||||
interrupt the program that updates the watch display.
|
||||
|
||||
Just for fun try:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
^C
|
||||
import demo
|
||||
demo.run()
|
||||
# After watching the demo for a bit...
|
||||
^C
|
||||
wasp.app.draw(watch)
|
||||
wasp.system.run()
|
||||
|
||||
To set the time and restart the main application:
|
||||
|
||||
.. code-block:: python
|
||||
|
|
72
wasp/apps/demo.py
Normal file
72
wasp/apps/demo.py
Normal file
|
@ -0,0 +1,72 @@
|
|||
# SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
# Copyright (C) 2020 Daniel Thompson
|
||||
|
||||
"""Logo demo for PineTime
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This demo is simply an alternating sweep of the Pine64 and
|
||||
MicroPython logos. It cycles through a variety of colours
|
||||
and swaps between the logos every 5 images (so if you change
|
||||
anything make sure len(colors) is not a multiple of 5).
|
||||
"""
|
||||
|
||||
import wasp
|
||||
import logo
|
||||
import icons
|
||||
|
||||
colors = (
|
||||
0xffff,
|
||||
0xf800, # red
|
||||
0xffff,
|
||||
0xffe0, # yellow
|
||||
0xffff,
|
||||
0x07e0, # green
|
||||
0xffff,
|
||||
0x07ff, # cyan
|
||||
0xffff,
|
||||
0x001f, # blue
|
||||
0xffff,
|
||||
0xf81f, # magenta
|
||||
)
|
||||
|
||||
class DemoApp():
|
||||
"""Application for live demos.
|
||||
|
||||
Start this to give the watch something "interesting" to do when talking
|
||||
over demos!
|
||||
"""
|
||||
NAME = 'Demo'
|
||||
ICON = icons.app
|
||||
|
||||
def __init__(self):
|
||||
self._logo = logo.pine64
|
||||
self._color = 0
|
||||
self._i = 0
|
||||
|
||||
def foreground(self):
|
||||
"""Draw the first frame and establish the tick."""
|
||||
self._draw()
|
||||
wasp.system.request_tick(2000)
|
||||
|
||||
def tick(self, ticks):
|
||||
"""Handle the tick."""
|
||||
self._draw()
|
||||
wasp.system.keep_awake()
|
||||
|
||||
def _draw(self):
|
||||
"""Draw the next frame."""
|
||||
draw = wasp.watch.drawable
|
||||
|
||||
if self._i < 5:
|
||||
self._i += 1
|
||||
else:
|
||||
self._i = 0
|
||||
if self._logo == logo.pine64:
|
||||
self._logo = logo.micropython
|
||||
else:
|
||||
self._logo = logo.pine64
|
||||
draw.fill()
|
||||
draw.rleblit(self._logo, fg=colors[self._color])
|
||||
self._color += 1
|
||||
if self._color >= len(colors):
|
||||
self._color = 0
|
65
wasp/demo.py
65
wasp/demo.py
|
@ -1,65 +0,0 @@
|
|||
# SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
# Copyright (C) 2020 Daniel Thompson
|
||||
|
||||
#
|
||||
# Logo demo for PineTime
|
||||
#
|
||||
# This demo is simply an alternating sweep of the Pine64 and
|
||||
# MicroPython logos. It cycles through a variety of colours
|
||||
# and swaps between the logos every 5 images (so make sure
|
||||
# len(colors) is not a multiple of 5 ;-) ).
|
||||
#
|
||||
|
||||
import watch, logo, time, gc
|
||||
|
||||
colors = (
|
||||
0xffff,
|
||||
0xf800, # red
|
||||
0xffff,
|
||||
0xffe0, # yellow
|
||||
0xffff,
|
||||
0x07e0, # green
|
||||
0xffff,
|
||||
0x07ff, # cyan
|
||||
0xffff,
|
||||
0x001f, # blue
|
||||
0xffff,
|
||||
0xf81f, # magenta
|
||||
)
|
||||
|
||||
def textdemo():
|
||||
watch.display.fill(0)
|
||||
draw = watch.drawable
|
||||
draw.string("The quick brown", 12, 24)
|
||||
draw.string("fox jumped over", 12, 48)
|
||||
draw.string("the lazy dog.", 12, 72)
|
||||
time.sleep(2)
|
||||
draw.string("0123456789", 12, 120)
|
||||
draw.string('!"£$%^&*()', 12, 144)
|
||||
time.sleep(3)
|
||||
|
||||
def run():
|
||||
l = logo.pine64
|
||||
i = 0
|
||||
|
||||
watch.display.poweron()
|
||||
watch.backlight.set(2)
|
||||
|
||||
while True:
|
||||
for c in colors:
|
||||
if i == 2:
|
||||
textdemo()
|
||||
if i < 5:
|
||||
i += 1
|
||||
else:
|
||||
i = 0
|
||||
if l == logo.pine64:
|
||||
l = logo.micropython
|
||||
else:
|
||||
l = logo.pine64
|
||||
watch.display.fill(0)
|
||||
|
||||
watch.drawable.rleblit(l, fg=c)
|
||||
time.sleep(2)
|
||||
gc.collect()
|
||||
|
Loading…
Reference in a new issue