1, 2 ,3, Run to the Wall, Freeze
by udubinsky in Circuits > Electronics
758 Views, 1 Favorites, 0 Comments
1, 2 ,3, Run to the Wall, Freeze
Lately, I've been playing with the 5MstickC, and ESP32 based controller already packed with a screen, WiFi, Bluetooth, Gyro, Accelerometer, IR blaster...
It is very easy to program using the block programming UI Flow software, but you also have the ability to program it with either microPython or Arduino IDE...
Anyway, in this example I have made the 123, run to the wall, freeze game adding a PIR sensor and a Piezo buzzer.
Supplies
5MStickC
PIR Sensor
Piezo Buzzer
PCB
Making the PCB
The PCB is only so i could connect the buzzer and the PIR sensor easily.
The Speaker is connected to Pin 26,
The PIR sensor is connected to Pin 36, 5v and GND
UI Flow Programming
This is how it looks in the UI Flow programming.
Same But in MicroPython
from m5stack import *
from m5ui import * from uiflow import * from easyIO import * import time import hat import hat
setScreenColor(0x111111)
hat_pir0 = hat.get(hat.PIR)
Gotya = M5Img(0, 0, "res/bucket.jpg", True) img_frz = M5Img(0, 0, "res/frz.jpg", True) label0 = M5TextBox(17, 40, "FREEZE", lcd.FONT_DejaVu24,0x000000, rotate=50) Count = M5TextBox(20, 49, "1", lcd.FONT_DejaVu72,0xFFFFFF, rotate=0)
from numbers import Number
hlong = None sPass = None lPass = None roundTime = None found = None startTime = None
def my_123fish(): global hlong, sPass, lPass, roundTime, found, startTime Count.show() toggleIO(26) wait_ms(sPass) toggleIO(26) wait_ms(lPass) Count.setText('1') toggleIO(26) wait_ms(sPass) toggleIO(26) wait_ms(sPass) toggleIO(26) wait_ms(sPass) toggleIO(26) wait_ms(lPass) Count.setText('2') toggleIO(26) wait_ms(sPass) toggleIO(26) wait_ms(sPass) toggleIO(26) wait_ms(sPass) toggleIO(26) wait_ms(sPass) toggleIO(26) wait_ms(sPass) toggleIO(26) wait_ms(lPass) Count.setText('3') toggleIO(26) wait_ms((lPass * 4)) toggleIO(26) Count.hide()
def Beep(hlong): global sPass, lPass, roundTime, found, startTime toggleIO(26) wait_ms(hlong) toggleIO(26)
def buttonA_wasDoublePress(): global hlong, sPass, lPass, roundTime, found, startTime axp.powerOff() pass btnA.wasDoublePress(buttonA_wasDoublePress)
M5Led.off() Count.hide() label0.hide() img_frz.hide() Gotya.hide() digitalWrite(26, False) lPass = 200 sPass = 100 roundTime = 15 found = False while True: my_123fish() startTime = rtc.now()[5] if startTime + roundTime >= 59: startTime = (startTime if isinstance(startTime, Number) else 0) + (0 - (59 - startTime)) img_frz.show() label0.show() while not (hat_pir0.state): if (rtc.now()[5]) >= startTime + roundTime: break label0.hide() img_frz.hide() found = (found if isinstance(found, Number) else 0) + (hat_pir0.state) if found: setScreenColor(0xff0000) Gotya.show() M5Led.on() Beep(2000) wait(1) setScreenColor(0x000000) Gotya.hide() M5Led.off() found = False wait_ms(2)
Got Ya
All Left is to upload the two images to the controller and also the sketch...
...and go play... Enjoy