マイクロビットプログラム集

マイクロビットプログラム集

JavaScriptで書いてあります。
makecodeの編集画面、上部中央のタブをJavaScriptにして、コードを貼り付け、ブロックのタブに戻します。


1.サーボを動かす

pins.servoWritePin(AnalogPin.P0, 90) basic.pause(1000) basic.forever(function () { pins.servoWritePin(AnalogPin.P0, 30) basic.pause(500) pins.servoWritePin(AnalogPin.P0, 150) basic.pause(500) })

2.超音波センサー

let distance0 = 0 basic.showString("Hello!") basic.forever(function () { pins.digitalWritePin(DigitalPin.P1, 0) control.waitMicros(2) pins.digitalWritePin(DigitalPin.P1, 1) control.waitMicros(10) pins.digitalWritePin(DigitalPin.P1, 0) distance0 = Math.round(pins.pulseIn(DigitalPin.P2, PulseValue.High) / 58) basic.showNumber(distance0) basic.pause(1000) })

3.Aボタンで車両走行、Bボタンで停止

input.onButtonPressed(Button.A, function () { pins.analogWritePin(AnalogPin.P13, 300) pins.digitalWritePin(DigitalPin.P14, 0) pins.analogWritePin(AnalogPin.P15, 300) pins.digitalWritePin(DigitalPin.P16, 0) }) input.onButtonPressed(Button.B, function () { pins.digitalWritePin(DigitalPin.P13, 0) pins.digitalWritePin(DigitalPin.P14, 0) pins.digitalWritePin(DigitalPin.P15, 0) pins.digitalWritePin(DigitalPin.P16, 0) basic.pause(100000) })

4.自動運転

function search () { pins.digitalWritePin(DigitalPin.P1, 0) control.waitMicros(2) pins.digitalWritePin(DigitalPin.P1, 1) control.waitMicros(10) pins.digitalWritePin(DigitalPin.P1, 0) distance0 = Math.round(pins.pulseIn(DigitalPin.P2, PulseValue.High) / 58) } let rightDistance = 0 let leftDistance = 0 let distance0 = 0 let sp1 = 300 let sp2 = 300 let i = 0 pins.servoWritePin(AnalogPin.P0, 90) basic.showString("Hello!") basic.pause(1000) distance0 = 1000 basic.forever(function () { search() if (distance0 < 30) { pins.analogWritePin(AnalogPin.P13, 0) pins.analogWritePin(AnalogPin.P14, 0) pins.analogWritePin(AnalogPin.P15, 0) pins.analogWritePin(AnalogPin.P16, 0) pins.servoWritePin(AnalogPin.P0, 150) basic.pause(1000) search() leftDistance = distance0 pins.servoWritePin(AnalogPin.P0, 30) basic.pause(1000) search() rightDistance = distance0 pins.servoWritePin(AnalogPin.P0, 90) basic.pause(500) if (leftDistance >= rightDistance) { pins.analogWritePin(AnalogPin.P13, 0) pins.analogWritePin(AnalogPin.P14, 500) pins.analogWritePin(AnalogPin.P15, 500) pins.analogWritePin(AnalogPin.P16, 0) basic.pause(800) } if (leftDistance < rightDistance) { pins.analogWritePin(AnalogPin.P13, 500) pins.analogWritePin(AnalogPin.P14, 0) pins.analogWritePin(AnalogPin.P15, 0) pins.analogWritePin(AnalogPin.P16, 500) basic.pause(800) } } else { pins.analogWritePin(AnalogPin.P13, sp1) pins.analogWritePin(AnalogPin.P14, 0) pins.analogWritePin(AnalogPin.P15, sp2) pins.analogWritePin(AnalogPin.P16, 0) } basic.pause(100) })

5.ライントレース

let Rdata = 0 let Ldata = 0 let t1 = 0 let t2 = 20 let sp1 = 350 let sp2 = 400 basic.forever(function () { Ldata = pins.analogReadPin(AnalogReadWritePin.P1) Rdata = pins.analogReadPin(AnalogReadWritePin.P2) if (Ldata >= 100 && Rdata < 100) { pins.analogWritePin(AnalogPin.P13, 400) pins.analogWritePin(AnalogPin.P14, 0) pins.analogWritePin(AnalogPin.P15, 0) pins.analogWritePin(AnalogPin.P16, 400) basic.pause(t2) } if (Ldata < 100 && Rdata >= 100) { pins.analogWritePin(AnalogPin.P13, 0) pins.analogWritePin(AnalogPin.P14, 400) pins.analogWritePin(AnalogPin.P15, 400) pins.analogWritePin(AnalogPin.P16, 0) basic.pause(t2) } if (Ldata < 100 && Rdata < 100) { pins.analogWritePin(AnalogPin.P13, sp1) pins.analogWritePin(AnalogPin.P14, 0) pins.analogWritePin(AnalogPin.P15, sp2) pins.analogWritePin(AnalogPin.P16, 0) basic.pause(t2) } if (Ldata >= 100 && Rdata >= 100) { pins.digitalWritePin(DigitalPin.P13, 0) pins.digitalWritePin(DigitalPin.P14, 0) pins.digitalWritePin(DigitalPin.P15, 0) pins.digitalWritePin(DigitalPin.P16, 0) basic.pause(100) } })

6.4足歩行・センサーつき

let photodataL_sum0 = 0 let photodataR_sum0 = 0 let widthL0 = 0 let widthR0 = 0 let flag1 = 0 let flag2 = 0 let rotation_L = 0 let rotation_R = 0 let step_L = 0 let step_R = 0 let photodataL_sum = 0 let photodataR_sum = 0 let time0L = 0 let widthL = 0 let time0R = 0 let widthR = 0 let speedL = 0 let speedR = 0 let directionL = 0 let directionR = 0 function control2 () { photodataL_sum0 = 0 photodataR_sum0 = 0 widthL0 = 0 widthR0 = 0 flag1 = 0 flag2 = 0 for (let index = 0; index < 3; index++) { photodataL_sum0 = photodataL_sum0 + pins.digitalReadPin(DigitalPin.P0) photodataR_sum0 = photodataR_sum0 + pins.digitalReadPin(DigitalPin.P1) } while (rotation_L > 0 || rotation_R > 0 || (step_L > 0 || step_R > 0)) { photodataL_sum = 0 photodataR_sum = 0 for (let index = 0; index < 3; index++) { photodataL_sum = photodataL_sum + pins.digitalReadPin(DigitalPin.P0) photodataR_sum = photodataR_sum + pins.digitalReadPin(DigitalPin.P1) } if (photodataL_sum >= 3 && photodataL_sum0 < 3) { time0L = input.runningTime() flag1 = 1 } if (photodataL_sum < 3 && photodataL_sum0 >= 3) { if (flag1 == 1) { widthL = input.runningTime() - time0L if (widthL > widthL0 * 2 && widthL0 != 0) { rotation_L += -1 } if (rotation_L <= 0) { step_L += -1 } widthL0 = widthL flag1 = 0 } } if (rotation_L <= 0 && step_L <= 0) { pins.digitalWritePin(DigitalPin.P13, 1) pins.digitalWritePin(DigitalPin.P14, 1) } if (photodataR_sum >= 3 && photodataR_sum0 < 3) { time0R = input.runningTime() flag2 = 1 } if (photodataR_sum < 3 && photodataR_sum0 >= 3) { if (flag2 == 1) { widthR = input.runningTime() - time0R if (widthR > widthR0 * 2 && widthR0 != 0) { rotation_R += -1 } if (rotation_R <= 0) { step_R += -1 } widthR0 = widthR flag2 = 0 } } if (rotation_R <= 0 && step_R <= 0) { pins.digitalWritePin(DigitalPin.P15, 1) pins.digitalWritePin(DigitalPin.P16, 1) } photodataL_sum0 = photodataL_sum photodataR_sum0 = photodataR_sum } } input.onButtonPressed(Button.A, function () { speedL = 900 speedR = 900 for (let index = 0; index < 20; index++) { directionL = 1 directionR = 1 rotation_L = 1 rotation_R = 1 step_L = 0 step_R = 0 drive() } }) function drive () { if (directionL >= 0) { pins.analogWritePin(AnalogPin.P13, speedL) pins.analogWritePin(AnalogPin.P14, 0) } else { pins.analogWritePin(AnalogPin.P13, 0) pins.analogWritePin(AnalogPin.P14, speedL) } if (directionR >= 0) { pins.analogWritePin(AnalogPin.P15, speedR) pins.analogWritePin(AnalogPin.P16, 0) } else { pins.analogWritePin(AnalogPin.P15, 0) pins.analogWritePin(AnalogPin.P16, speedR) } control2() } input.onButtonPressed(Button.B, function () { speedL = 300 speedR = 300 for (let index = 0; index < 4; index++) { directionL = 1 directionR = 1 rotation_L = 0 rotation_R = 0 step_L = 6 step_R = 6 drive() basic.pause(200) speedL = 900 speedR = 900 directionL = -1 directionR = -1 step_L = 6 step_R = 6 drive() basic.pause(200) } basic.pause(2000) for (let index = 0; index < 10; index++) { directionL = 1 directionR = 1 rotation_L = 1 rotation_R = 1 step_L = 0 step_R = 0 drive() } basic.pause(2000) for (let index = 0; index < 10; index++) { directionL = -1 directionR = -1 rotation_L = 1 rotation_R = 1 step_L = 0 step_R = 0 drive() } })