You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.0 KiB
Python
95 lines
2.0 KiB
Python
"""This app tests all the onboard sensors and system info"""
|
|
|
|
___title___ = "Memobadge"
|
|
___license___ = "MIT"
|
|
___dependencies___ = ["app", "sim800", "sleep", "ugfx_helper"]
|
|
___categories___ = ["Sound"]
|
|
|
|
import ugfx, app, sim800, time
|
|
from tilda import Buttons
|
|
from machine import Neopix
|
|
|
|
ugfx.init()
|
|
ugfx.clear()
|
|
ugfx.set_default_font(ugfx.FONT_FIXED)
|
|
|
|
neopix = Neopix()
|
|
|
|
def displayControls():
|
|
ugfx.Label(5, 0, 240, 15, "Controls:")
|
|
ugfx.Label(5, 15, 240, 15, " A: Start / Stop recording")
|
|
ugfx.Label(5, 30, 240, 15, " B: playback")
|
|
ugfx.Label(5, 45, 240, 15, " Menu: exit")
|
|
|
|
def displayStatus(status):
|
|
ugfx.Label(5, 90, 240, 15, status)
|
|
|
|
def setRecordingStatus():
|
|
global neopix, isRecording
|
|
|
|
if isRecording:
|
|
neopix.display([0x000000, 0x050000])
|
|
else:
|
|
neopix.display([0x000000, 0x000000])
|
|
|
|
|
|
def startRecording():
|
|
global isRecording
|
|
|
|
if isRecording:
|
|
isRecording = False
|
|
sim800.stoprecording()
|
|
displayStatus("")
|
|
else:
|
|
# Just in case something is being played
|
|
sim800.stopplayback()
|
|
isRecording = True
|
|
sim800.deleterecording(1)
|
|
displayStatus("Recording, press A again to stop.")
|
|
sim800.startrecording(1)
|
|
|
|
setRecordingStatus()
|
|
|
|
def playback():
|
|
global isRecording
|
|
|
|
if isRecording:
|
|
isRecording = False
|
|
sim800.stoprecording()
|
|
setRecordingStatus()
|
|
displayStatus("")
|
|
|
|
sim800.startplayback(1, 0, 100, False)
|
|
|
|
Buttons.enable_interrupt(
|
|
Buttons.BTN_A,
|
|
lambda button_id: startRecording(),
|
|
on_press=True,
|
|
on_release=False
|
|
)
|
|
|
|
Buttons.enable_interrupt(
|
|
Buttons.BTN_B,
|
|
lambda button_id: playback(),
|
|
on_press=True,
|
|
on_release=False
|
|
)
|
|
|
|
Buttons.enable_interrupt(
|
|
Buttons.BTN_Menu,
|
|
lambda button_id:app.restart_to_default(),
|
|
on_press=True,
|
|
on_release=False
|
|
)
|
|
|
|
isRecording = False
|
|
displayControls()
|
|
setRecordingStatus()
|
|
|
|
while True:
|
|
# Wait for instruction
|
|
time.sleep(0.1)
|
|
|
|
ugfx.clear()
|
|
app.restart_to_default()
|