1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MicroPythonAdvent Calendar 2018

Day 8

WifiBoy32でMicroPythonやってみた

Last updated at Posted at 2018-12-08

MicroPython AdventCalendar 8日目です。

今年のMicroPythonというとやはりM5Stackかな?と思ってたのですが、今年のMaker Fair Tokyoでこれを購入していたのを思い出しました。

image.png

https://wifiboy.org/
https://wifiboy.club/

ESP32を使用した小型ゲーム機のような製品です。MFTで3000円で入手しました。
台湾の方が作られているようです。

image.png

いざ開封してみると基板、説明書とケーブルが同梱されていていい感じです。

image.png

image.png

wifiboyのサイトからWindows用の環境を落としてきて解凍します。
↓のtest version

image.png

WifiboyをPCに接続してアプリを起動させてみるこんな感じになります。
スクラッチのようですが、中国語で記載されていてちょっとわかりませんw

image.png

MicroPython v1.9.4-235-gb488a4a-dirty on 2018-08-02; WiFiBoy32 with ESP32
Type "help()" for more information.
>>> dir()
['uos', '__name__', 'machine', 'gc', 'bdev', 'wb32']
>>> import wb32
>>> dir(wb32)
['__class__', '__name__', 'box', 'cls', 'colors', 'getkey', 'init', 'line', 'rand', 'str', 'ttcolor', 'ttgo', 'ttpenup', 'ttpos', 'ttreset', 'ttrot', 'ttwidth']

デフォルトで書き込まれたイメージはWifiboy専用で手が加えられているようです。
tutoarialのページに乗っていたwifiboy_sound_smb2_melody.pyを開いて実行してみます。

image.png

image.png

デフォのコードにあるwifiboyというモジュールは ImportError: no module named 'wifiboy'
になってしまうのでそれはwb32に変更して実行するとブザーからメロディーが鳴りました。
ブザーのPin番号も4→25で変えて実行しました。

wifiboy_sound_smb2_melody.py
# WiFiBoy MicroPython Melody Engine Demo
# Nov 25, 2016, Derek Lai, derek@wifiboy.org
# "Super Mario 2 Theme" with buzzer tricks

import machine, time, wb32
snd=machine.PWM(machine.Pin(25, 1))

env1=[100,100,100,0,0,0,0,0]
env2=[100,60,30,20,15,10,5,0]
env3=[20,90,20,80,20,60,5,0]
env4=[120,50,30,20,10,0,0,0]

f=[round(110*2**(x/12)) for x in range(51)]

mel1=[23,22,0,21,18,0,15,13,0,12,11,0,0,23,0,0,11,0,0,0,0,0,
      23,0,16,20,0,23,0,0,16,20,0,23,15,19,23,27,0,25,0,0,0,
      0,0,0,23,0,14,18,0,23,0,0,14,18,0,23,0,0,14,18,0,23,17,
      20,21,27,0,25,0,0,0,0,0,27,28,0,27,28,0,25,0,0,28,27,0,
      25,23,0,22,23,0,20,0,0,17,18,0,20,21,0,20,21,0,15,0,0,
      20,18,0,16,0,0,0,0,0,0,0,0,0,0,0,0]

mel2=[16,0,20,0,0,0,23,0,0,25,0,28,0,0,0,0,0,0,25,0,0,16,18,
      0,20,18,0,20,18,0,13,0,0,18,0,0,13,18,13,18,13,18,13,18,
      0,0,0,0,0,0,20,18,0,20,18,0,20,0,0,25,0,0,23,25,0,23,20,
      0,18,16,0,20,0,0,11,16,11,16,11,16,11,16,20,0,0,0,23,19,
      0,15,0,13,0,11,0,0,0,20,0,0,0,23,0,0,25,0,28,0,0,0,0,0,
      0,25,0,23,20,16,18,20,18,0,20,18,0,13,0,0,18,0,0,13,18,
      13,18,13,18,13,18,0,0,0,0,20,18,0,20,18,0,20,0,0,25,0,0,
      23,25,0,23,25,0,23,20,0,16,0,0,0,0,0,10,11,0,12,13,0,16,
      0,0,0,0,0,16,0,0,0,16,0,20,0,0,21,19,0,20,21,0,19,20,0,
      27,0,0,0,24,0,0,21,0,0,20,0,18,20,18,16,15,0,16,18,0,16,
      15,0,16,0,0,0,0,0,16,15,0,0,16,0,0,0,0,18,0,0,0,17,0,0,
      18,0,25,0,0,0,22,0,0,23,0,0,25,0,0,27,0,0,0,0,0,25,0,0,
      0,0,0,24,0,0,0,0,0,23,0,18,15,0,11]

def play(dt, mel, env, shift): # melody engine
    for i in range(0, len(mel)):
        if (mel[i]!=0):
            snd.freq(f[mel[i]+shift])
            ei=0
        for j in range(0, 4):
            if (ei<8):
                snd.duty(env[ei])
            time.sleep(dt)
            ei=ei+1

wb32.cls()
wb32.colors(0xfe0f, 0xfe0f)
wb32.str("WiFiBoy", 10, 10, 1, 3)
wb32.str("Melody Engine Demo", 10, 35, 3, 1)
wb32.str("Super Mario 2 Theme", 10, 60, 3, 1)

play(0.025, mel1, env1, 0)
play(0.025, mel2, env2, 0)
play(0.025, mel1, env3, 0)
play(0.025, mel2, env4, 0)
snd.duty(0)

※謝辞です。すみません、イベントスタッフやったり仕事が忙しかったりで記事を書くことができておりませんでした。。。
boochowさん、inachiさん、記事のご投稿ありがとうございました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?