micro:bitでプログラミング × STEM 夏期講習特別授業
わかば深セン教室のSRコースの夏期講習9日目、10日目は、毎月1回授業内で学習しているmicro:bitとJavascriptを夏休み特別授業ということで、micro:bitをqbitという2輪自立型のロボットのガジェットに連結させプログラミングをしました。
いつもはmicro:bitだけを使って、ボタンやセンサーを利用したプログラミングをしてきましたが今回はmicro:bitを一人あたり2枚ずつ使用し、1枚はロボットと連結、1枚はコントローラーに連結させました。
ロボット用のmicro:bitには、コントローラーから送信された情報を受信したときにどのように動作するのかをプログラミングしておき、コントローラー用のmicro:bitにはコントローラーを操作した時に、ロボット側のmicro:bitにどのような情報を送信するのかをプログラミングしました。
「if」、「if else」などのコードも見慣れてきましたし、micro:bitでのJavascript入力は入力補助機能もあるので、みんなどんどん打てるようになってきています。
ロボット、コントローラーも自分たちで組み立て、iPadでコードを入力、入力が終わったら、micro:bitとiPadをBluetoothでペアリングして、2枚のmicro:bitにデータを送信します。
こういった一連の作業を終えたら、やっとロボットをコントローラーで制御できるようになります。
コントローラーとロボットを識別するためのコードを間違えてしまっているため、他の人のロボットにつながってしまい、教室内が一時大混乱に陥ってしまいましたが、そんな経験もプログラミングを学ぶ上では重要な体験と言えます。
生徒一人一人が様々な問題をクリアして、やっと辿り着いたサッカー大会。
自分たちが組み立て、コードを入力したロボットでのサッカーゲームは買ってきたロボットで遊ぶのとは大違いだったようです。うまく動かなかったり、ドテっと転んだりするのも、自分たちで作った物なので、かわいく、おもしろく見えたようです。
参考のため、今回使用したコードを下に記載しておきます。
コントローラー用のコード
handlebit.handlebitInit()
radio.setGroup(1)
basic.forever(() => {
if (handlebit.getHandleSensorValue(handlebit.HandleSensorValue.JOYSTICK_X1) < 50) {
radio.sendNumber(1)
basic.pause(50)
} else if (handlebit.getHandleSensorValue(handlebit.HandleSensorValue.JOYSTICK_X1) > 200) {
radio.sendNumber(2)
basic.pause(50)
} else if (handlebit.getHandleSensorValue(handlebit.HandleSensorValue.JOYSTICK_Y1) < 50) {
radio.sendNumber(3)
basic.pause(50)
} else if (handlebit.getHandleSensorValue(handlebit.HandleSensorValue.JOYSTICK_Y1) > 200) {
radio.sendNumber(4)
basic.pause(50)
} else {
radio.sendNumber(5)
basic.pause(50)
})
qbit用のコード
qbit.qbitInit()
radio.setGroup(1)
radio.onDataPacketReceived( ({ receivedNumber }) => {
if (receivedNumber == 1) {
qbit.setMotorSpeed(-50, 50)
} else if (receivedNumber == 2) {
qbit.setMotorSpeed(50, -50)
} else if (receivedNumber == 3) {
qbit.setMotorSpeed(50, 50)
} else if (receivedNumber == 4) {
qbit.setMotorSpeed(-50, -50)
} else if (receivedNumber == 5) {
qbit.setMotorSpeed(0, 0)
})