1
0
Fork 0

apps: demo: Move the demo code into a fully fledged application

pull/34/head
Daniel Thompson 2020-05-17 09:45:16 +01:00
parent c3bc871727
commit 4906d46ff4
3 changed files with 72 additions and 77 deletions

View File

@ -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 100644
View 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

View File

@ -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()