マイクロビットプログラム集
マイクロビットプログラム集
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()
}
})
|