2024年度 ロボット講座
9月7日 第1回 高校・大学連携による、ものづくり教育講座 ― ロボット講座 ―
はじめてのMaqueen ー LEDの点灯
# ここにコードを書いてね :-)
from microbit import *
pin12.write_digital(1)
sleep(1000)
pin12.write_digital(0)
時間が余ったときのMaqueen
from microbit import *
import music
music.play(music.ENTERTAINER)
9月14日 第2回 ロボット講座 ― Mu Editor の使い方 ―
本日最初のプログラム
# ここにコードを書いてね :-)
from microbit import *
display.show(Image.HEART)
LEDディスプレイに色々表示してみる
from microbit import *
display.show(Image.HEART)
sleep(500)
display.show(Image.HAPPY)
sleep(500)
display.show(Image.YES)
sleep(500)
BBC micro:bit MicroPython ドキュメンテーション
このドキュメンテーションにはすべてのバージョンの micro:bit の情報が含まれています。授業で使用しているmicro:bitはV1ですので、 V2 と書かれたメモやコメントには対応していません。
9月28日 第3回 ロボット講座 ― モータ制御 ―
右車輪を軸に時計回りに回転
from microbit import *
i2c.write(16, bytes([0, 0, 50]))
i2c.write(16, bytes([2, 0, 0]))
micro:Maqueen を走らせる
from microbit import *
i2c.write(16, bytes([0, 0, 50]))
i2c.write(16, bytes([2, 0, 50]))
sleep(500)
i2c.write(16, bytes([0, 0, 0]))
i2c.write(16, bytes([2, 0, 0]))
その場で180度回転(一部空白)
from microbit import *
i2c.write(16, bytes([0, , 50]))
i2c.write(16, bytes([2, , 50]))
sleep( )
i2c.write(16, bytes([0, 0, 0]))
i2c.write(16, bytes([2, 0, 0]))
9月28日 第4回 ロボット講座 ― 条件分岐 ―
はじめての分岐処理?
from microbit import *
if button_a.is_pressed():
display.show(Image.HAPPY)
else:
display.show(Image.SAD)
はじめての分岐処理!
from microbit import *
while True:
if button_a.is_pressed():
display.show(Image.HAPPY)
else:
display.show(Image.SAD)
if 文の中にif 文(入れ子)
from microbit import *
while True:
if button_a.is_pressed():
if button_b.is_pressed():
display.show(Image.DUCK)
else:
display.clear()
else:
display.clear()
条件が複数ある分岐処理
from microbit import *
while True:
if button_a.is_pressed():
display.show(Image.HAPPY)
elif button_b.is_pressed():
display.show(Image.SAD)
else:
display.clear()
論理演算のある分岐処理
from microbit import *
while True:
if button_a.is_pressed() and button_b.is_pressed():
display.show(Image.DUCK)
else:
display.clear()
while 文を使った指定回数の反復処理
from microbit import *
c = 1
while c <= 5:
display.show(c)
sleep(500)
c = c + 1
光センサで光の強度を確認
from microbit import *
while True:
lv = display.read_light_level()
print(lv)
sleep(100)
光の強度を時計の針で表示
from microbit import *
while True:
lv = display.read_light_level()
lv = (lv / 255) * 11
lv = int(lv)
display.show(Image.ALL_CLOCKS[lv])
sleep(100)
10月5日 第5回 ロボット講座 ― 超音波センサ ―
超音波センサで距離を測定
from microbit import *
import machine
pin2.read_digital()
while True:
pin1.write_digital(1)
sleep(1)
pin1.write_digital(0)
t = machine.time_pulse_us(pin2, 1)
d = int(t * 340 / 20000)
print(t, d)
超音波センサで障害物で停止(解答例)
この下に課題の解答例が掲載されています。
from microbit import *
import machine
pin2.read_digital()
while True:
pin1.write_digital(1)
sleep(1)
pin1.write_digital(0)
t = machine.time_pulse_us(pin2, 1)
d = int(t * 340 / 20000)
if d < 10:
i2c.write(16, bytes([0, 0, 0]))
i2c.write(16, bytes([2, 0, 0]))
sleep(100)
else:
i2c.write(16, bytes([0, 0, 50]))
i2c.write(16, bytes([2, 0, 50]))
超音波センサで障害物を回避(解答例)
from microbit import *
import machine
pin2.read_digital()
while True:
pin1.write_digital(1)
sleep(1)
pin1.write_digital(0)
t = machine.time_pulse_us(pin2, 1)
d = int(t * 340 / 20000)
if d < 10:
i2c.write(16, bytes([0, 0, 50]))
i2c.write(16, bytes([2, 1, 50]))
sleep(1000)
else:
i2c.write(16, bytes([0, 0, 50]))
i2c.write(16, bytes([2, 0, 50]))
10月19日 第6回 ロボット講座 ― 赤外線センサ ―
黒線を検出したら停止
from microbit import *
while True:
irL = pin13.read_digital()
irR = pin14.read_digital()
if irL == 0 and irR == 0:
i2c.write(16, bytes([0, 0, 0]))
i2c.write(16, bytes([2, 0, 0]))
else:
i2c.write(16, bytes([0, 0, 30]))
i2c.write(16, bytes([2, 0, 30]))
sleep(5)
ON-OFF制御ライントレース
from microbit import *
while True:
irL = pin13.read_digital()
irR = pin14.read_digital()
if irL == 0:
i2c.write(16, bytes([0, 1, 30]))
i2c.write(16, bytes([2, 0, 90]))
else:
i2c.write(16, bytes([0, 0, 90]))
i2c.write(16, bytes([2, 1, 30]))
sleep(5)
黒線の検出状態に応じて矢印を表示
from microbit import *
while True:
irL = pin13.read_digital()
irR = pin14.read_digital()
if irL == 0 and irR == 0:
display.show(Image.ARROW_N)
elif irL == 0:
display.show(Image.ARROW_E)
elif irR == 0:
display.show(Image.ARROW_W)
else:
display.show(Image.ARROW_S)
10月26日 第7回 ロボット講座 ― 課題実習 ―
フルカラーLEDを点灯
from microbit import *
import neopixel
np = neopixel.NeoPixel(pin15, 4)
np[0] = (255, 0, 0)
np[1] = (0, 255, 0)
np[2] = (0, 0, 255)
np[3] = (255, 255, 255)
np.show()
sleep(1000)
np.clear()
持ち上げるとフルカラーLEDが点滅
from microbit import *
import neopixel
from random import randint
np = neopixel.NeoPixel(pin15, 4)
while True:
irL = pin13.read_digital()
if irL == 0:
np[0] = (randint(0, 255), randint(0, 255), randint(0, 255))
np[1] = (randint(0, 255), randint(0, 255), randint(0, 255))
np[2] = (randint(0, 255), randint(0, 255), randint(0, 255))
np[3] = (randint(0, 255), randint(0, 255), randint(0, 255))
np.show()
else:
np.clear()
sleep(100)
持ち上げるとフルカラーLEDが点滅(for文を使用)
from microbit import *
import neopixel
from random import randint
np = neopixel.NeoPixel(pin15, 4)
while True:
irL = pin13.read_digital()
if irL == 0:
for i in range(0, 4):
r = randint(0, 255)
g = randint(0, 255)
b = randint(0, 255)
np[i] = (r, g, b)
np.show()
else:
np.clear()
sleep(100)
内蔵メロディを鳴らす
from microbit import *
import music
music.play(music.ENTERTAINER)
音階を指定して音を鳴らす
from microbit import *
import music
music.play('c:4')
music.play('d:4')
music.play('e:4')
周波数を指定して音を鳴らす
from microbit import *
import music
for f in range(440, 1720, 16):
music.pitch(f, 10)
for i in range(0, 82):
f = 1720 - i * 16
music.pitch(f, 10)
配列を使って音楽を演奏する
from microbit import *
import music
music.set_tempo(ticks=4, bpm=60)
notes = ['f#5:2', 'd:2', 'a4:2', 'd5:2',
'e:2', 'a:6', 'e:2', 'f#:2',
'e:2', 'a4:2', 'd5:4', 'r:4']
for i in range(12):
music.play(notes[i])