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

1,2,3, Run to the Wall, Freeze
IMG_20200628_150110-01.jpeg
IMG_20200628_143348-01.jpeg

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

IMG_20200628_150127-01.jpeg
IMG_20200628_153448.jpg

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

download.png

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

frz.jpg
bucket.jpg

All Left is to upload the two images to the controller and also the sketch...

...and go play... Enjoy