👷
(Redirected from Hard Hat)
Jump to navigation
Jump to search
Blink'n hard hat project page...
µPython[edit]
Digit Dev[edit]
#009 ⁂ lcd #600 ⌚ +buzz #630 re-write: lcd, encoder #060 swap pin 2 to 0 #066 +temp & backlite #666 nub'd #NYE 2018 Hard Hat import machine from encoder import Encoder from machine import Pin from time import sleep_ms from time import ticks_us from time import ticks_diff from utime import localtime from neopixel import NeoPixel VERSION = "#NYE -11:00" INTERVAL = 100 BUZZ_PIN = const(12) NEO_PIN = const(3) buzz = Pin(BUZZ_PIN, Pin.OUT) neo = Pin(3, Pin.OUT) np = NeoPixel(neo, 34) nums = [ (1,1,1,1,1,1,0,0,0,1,1,1,1,1,1), (0,0,0,0,0,1,1,1,1,1,0,0,0,0,0), (1,0,1,1,1,1,0,1,0,1,1,1,1,0,1), (1,1,1,1,1,1,0,1,0,1,1,0,1,0,1), (1,1,1,1,1,0,0,1,0,0,0,0,1,1,1), (1,1,1,0,1,1,0,1,0,1,1,0,1,1,1), (1,1,1,0,1,1,0,1,0,1,1,1,1,1,1), (1,1,1,1,1,1,0,0,0,0,0,0,0,0,1), (1,1,1,1,1,1,0,1,0,1,1,1,1,1,1), (1,1,1,1,1,1,0,1,0,1,1,0,1,1,1)] def timed_function(f, *args, **kwargs): myname = str(f).split(' ')[1] def new_func(*args, **kwargs): t = ticks_us() result = f(*args, **kwargs) delta = ticks_diff(ticks_us(), t) print('Function {} Time = {:6.3f}ms'.format(myname, delta/1000)) return result return new_func #@timed_function def ver(): print(VERSION) ver() def chirp(t = 10): buzz.value(True) sleep_ms(t) buzz.value(False) chirp() buzz = Pin(12, Pin.OUT) chirp() def digit(num): i = 0; while i < 15: if nums[num][i]: np[i+4] = (0, 0, 22) i += 1 def main(): blink = 0 while 1: t = localtime() i = 0 while i < 34: np[i] = (0, 0, 0) i += 1 i = (blink * 5) + 4 j = 0 while j < 5: np[i+j] = [33, 0, 0] j += 1 np[blink] = (0, 10, 0) blink += 1 if blink > 5: blink = 0 np.write() sleep_ms(INTERVAL) main()
#display 0 digit(0) np.write()
Test Code[edit]
Requires LCD & Encoder libraries: https://github.com/mbirth/wipy-upcd8544/blob/master/upcd8544.py
#009 ⁂ lcd #600 ⌚ +buzz #630 re-write: lcd, encoder #060 swap pin 2 to 0 #066 +temp & backlite #666 nub'd #NYE 2018 Hard Hat import upcd8544 import framebuf import machine from encoder import Encoder from machine import Pin from machine import PWM from machine import SPI from time import sleep_ms from time import ticks_us from time import ticks_diff from utime import localtime from neopixel import NeoPixel VERSION = "#NYE -3:59:00" INTERVAL = 100 PUSH_PIN = const(0) BUZZ_PIN = const(12) NEO_PIN = const(3) LCD_RST = const(0) LCD_CE = const(16) LCD_DC = const(15) push = Pin(PUSH_PIN, Pin.IN) buzz = Pin(BUZZ_PIN, Pin.OUT) enc = Encoder(5, 4, Pin.PULL_UP, 4, 0, 255) neo = Pin(3, Pin.OUT) np = NeoPixel(neo, 34) pushed = False count = 0 temp = 0 def timed_function(f, *args, **kwargs): myname = str(f).split(' ')[1] def new_func(*args, **kwargs): t = ticks_us() result = f(*args, **kwargs) delta = ticks_diff(ticks_us(), t) print('Function {} Time = {:6.3f}ms'.format(myname, delta/1000)) return result return new_func #@timed_function def ver(): print(VERSION) ver() def chirp(t = 10): buzz.high() sleep_ms(t) buzz.low() chirp() def push_handler(p): global pushed pushed = True print("PUSH") push.irq(trigger=Pin.IRQ_FALLING, handler=push_handler) spi = SPI(1, baudrate=80000000, polarity=0, phase=0) lcd = upcd8544.PCD8544(spi, Pin(0), Pin(16), Pin(15), Pin(0)) width = 84 height = 48 pages = height // 8 buffer = bytearray(pages * width) framebuf = framebuf.FrameBuffer1(buffer, width, height) framebuf.text("red/watch", 0, 1, 1) framebuf.text(VERSION, 0, 8, 1) lcd.data(buffer) buzz = Pin(12, Pin.OUT) chirp() def main(): global lcd, temp, framebuf, pushed, count bar = True blink = 0 while 1: t = localtime() count = enc.value if pushed: pushed = False chirp() i = 0 while i < 34: np[i] = (0, 0, 0) i += 1 i = (blink * 5) + 4 j = 0 while j < 5: np[i+j] = [33, 0, 0] j += 1 np[blink] = (0, 10, 0) blink += 1 if blink > 5: blink = 0 np.write() framebuf.fill(0) framebuf.text("2017-2018", 4, 0, 1) framebuf.text(VERSION, 2, 40, 1) framebuf.text(" {:02d}:{:02d}:{:02d}".format(t[3], t[4], t[5]), 0, 16, 1) if bar: bar = False for x in range(0,84): framebuf.pixel(x, 32, 1) else: bar = True lcd.data(buffer) sleep_ms(INTERVAL) main()