Files
M5GO/m5stack.py
2018-07-03 20:01:59 +08:00

109 lines
2.7 KiB
Python

from micropython import const
import machine, ubinascii
import uos as os
import utime as time
import display as lcd
import utils
from button import Button
VERSION = "v0.4.3"
_BUTTON_A_PIN = const(39)
_BUTTON_B_PIN = const(38)
_BUTTON_C_PIN = const(37)
_SPEAKER_PIN = const(25)
class Speaker:
def __init__(self, pin=25, volume=5):
self.pwm = machine.PWM(machine.Pin(pin), 1, 0, 0)
self._timer = 0
self._volume = volume
self._blocking = True
def _timeout_cb(self, timer):
self._timer.deinit()
self.pwm.duty(0)
self.pwm.freq(1)
self.pwm.deinit()
def tone(self, freq=1800, duration=200, volume=None):
if volume == None:
self.pwm.init(freq=freq, duty=self._volume)
else:
self.pwm.init(freq=freq, duty=volume)
if duration > 0:
if self._blocking:
time.sleep_ms(duration)
self.pwm.duty(0)
self.pwm.freq(1)
self.pwm.deinit()
else:
self._timer = machine.Timer(3)
self._timer.init(period=duration, mode=self._timer.ONE_SHOT, callback=self._timeout_cb)
def volume(self, val):
self._volume = val
def setblocking(self, val=True):
self._blocking = val
def fimage(x, y, file, type=1):
if file[:3] == '/sd':
utils.filecp(file, '/flash/fcache', blocksize=8192)
lcd.image(x, y, '/flash/fcache', 0, type)
os.remove('/flash/fcache')
else:
lcd.image(x, y, file, 0, type)
def delay(ms):
time.sleep_ms(ms)
# ------------------ M5Stack -------------------
# Node ID
node_id = ubinascii.hexlify(machine.unique_id()).decode('utf-8')
print('\nDevice ID:' + node_id)
print('LCD initializing...', end='')
# LCD
lcd = lcd.TFT()
lcd.init(lcd.M5STACK, width=240, height=320, speed=40000000, rst_pin=33, backl_pin=32, miso=19, mosi=23, clk=18, cs=14, dc=27, bgr=True, backl_on=1, invrot=3)
lcd.setBrightness(10)
lcd.clear()
lcd.setColor(0xCCCCCC)
print('Done!')
# lcd.println('M5Stack MicroPython '+VERSION, 0, 0)
# lcd.println('Device ID:'+node_id)
# lcd.println('Boot Mode:')
# lcd.println('Hold button A to boot into SAFE mode.')
# lcd.println('Hold button B to boot into OFFLINE mode.')
# lcd.print('Boot...', 0, 0)
# try:
# # lcd.image(0, 0, '/flash/img/m5.jpg')
# lcd.image(0, 0, '/flash/img/1-1.jpg')
# lcd.rect(0, 190, 320, 50, lcd.WHITE, lcd.WHITE)
# lcd.setBrightness(500)
# except:
# pass
if not utils.exists('/flash/img/1-1.jpg'):
lcd.print('M5GO resource file not found!\n', 0, 0, color=lcd.RED)
lcd.print('Please upload to the Internal Filesystem.\n', color=lcd.RED)
lcd.print('https://github.com/m5stack/M5GO\n', color=lcd.RED)
lcd.setBrightness(300)
# BUTTON
buttonA = Button(_BUTTON_A_PIN)
buttonB = Button(_BUTTON_B_PIN)
buttonC = Button(_BUTTON_C_PIN)
# SPEAKER
speaker = Speaker()