micro:bit沒(méi)有網(wǎng)絡(luò)功能,但具有群組廣播的功能,如能善用這個(gè)功能,也可以幫每一個(gè)手頭擁有的micro:bit尋址。今日的micro:bit專案便是讓micro:bit來(lái)報(bào)數(shù)。先選定一個(gè)micro:bit當(dāng)作是服務(wù)器,其他的micro:bit開(kāi)機(jī)后按a鍵,便能向伺服端的micro:bit注冊(cè),再由伺服端micro:bit給定一個(gè)流水編號(hào)傳送給client端的micro:bit便完成了尋址的動(dòng)作。伺服端的micro:bit按a鍵可以讓client的micro:bit從1開(kāi)始報(bào)數(shù),按b可以讓client的micro:bit倒數(shù)報(bào)數(shù)。若clinet端的某幾個(gè)micro:bit關(guān)掉了或是移走了,伺服端的micro:bit可以按a+b鍵,讓剩下的micro:bit重新取得編號(hào)來(lái)尋址。
讓micro:bit尋址有什么好處?能夠?qū)ぶ纷屛覀兛梢砸粚?duì)多的控制所有的micro:bit,一起組合成某種大型的led圖案或是動(dòng)畫(huà),或是clinet端裝上擴(kuò)展板,伺服端就能控制某個(gè)client的馬達(dá)前進(jìn)或后退,或是完成更多群組化的機(jī)器人動(dòng)作。
client端的板子會(huì)呈現(xiàn)自己的流水編號(hào),伺服端的板子則會(huì)呈現(xiàn)現(xiàn)在受控制的板子數(shù)量
編號(hào)尋址過(guò)的micro:bit可程序呈現(xiàn)組合后的動(dòng)畫(huà),或是可受伺服端的micro:bit控制
micro:bit報(bào)數(shù)程控方式
client端:按a鍵會(huì)向服務(wù)器micro:bit取得自己的編號(hào)
伺服端:
1.按a鍵會(huì)從1開(kāi)始報(bào)數(shù)
2.按b鍵會(huì)倒數(shù)報(bào)數(shù)
3.a(chǎn)+b鍵會(huì)重新設(shè)定micro:bit的client端的編號(hào)(有需要時(shí)才會(huì)用到)
4.按p0腳位會(huì)呈現(xiàn)簡(jiǎn)單動(dòng)畫(huà):會(huì)出現(xiàn)向右的箭頭由1號(hào)一直傳遞到最后一號(hào)
5.按p2腳位會(huì)呈現(xiàn)簡(jiǎn)單動(dòng)畫(huà):會(huì)出現(xiàn)向左的箭頭由最后一號(hào)傳遞到1號(hào)
程序內(nèi)容:以javascrip的語(yǔ)法呈現(xiàn),
伺服端程序如下:
let show = 0
let countbits = 0
let mybits: string[] = []
let bitstemp: string[] = []
let temp = 0
input.onbuttonpressed(button.a(chǎn), () => {
radio.sendvalue("clear", 0)
basic.pause(1)
temp = 0
show = 1
radio.sendvalue("count", 0)
})
radio.ondatapacketreceived( ({receivedstring: name, receivednumber: bitvalue }) => {
if (bitvalue == -1) {
mybits.push(name)
radio.sendvalue(name, countbits)
countbits += 1
if (temp == 0) {
basic.shownumber(countbits)
}
}
if (name == "getshow") {
radio.sendvalue("show", show)
}
})
input.onbuttonpressed(button.a(chǎn)b, () => {
temp = 1
bitstemp = []
countbits = 0
basic.shownumber(countbits)
show = 0
bitstemp = mybits
mybits = []
radio.sendvalue("reset", -1)
basic.pause(1)
radio.sendvalue("show", show)
basic.pause(1)
for (let index = 0; index <= bitstemp.length - 1; index++) {
radio.sendvalue("response", parseint(bitstemp[index]))
basic.pause(1)
}
basic.shownumber(countbits)
show = 1
radio.sendvalue("show", show)
basic.pause(1)
temp = 0
})
input.onpinpressed(touchpin.p0, () => {
radio.sendvalue("clear", 0)
basic.pause(200)
radio.sendvalue("arrowr", 0)
})
input.onpinpressed(touchpin.p2, () => {
radio.sendvalue("clear", 0)
basic.pause(200)
radio.sendvalue("arrowl", countbits - 1)
})
input.onbuttonpressed(button.b, () => {
radio.sendvalue("clear", 0)
basic.pause(1)
temp = 0
show = 1
radio.sendvalue("countdown", countbits - 1)
})
basic.showleds(`
## # # #
## # # #
## # # #
## # # #
## # # #
`)
radio.setgroup(1)
show = 0
countbits = 0
temp = 0
client端的程序如下:
let myindex = 0
let show = false
input.onbuttonpressed(button.a(chǎn), () => {
radio.sendvalue("getshow", 0)
basic.pause(50)
radio.sendvalue("" + control.deviceserialnumber(), myindex)
})
radio.ondatapacketreceived( ({receivedstring: name, receivednumber: value }) => {
if (name == "count" && value == myindex) {
show = true
basic.pause(300)
radio.sendvalue("count", value + 1)
showmynum()
}
if (name == "countdown" && value == myindex) {
show = true
basic.pause(300)
if (myindex > 0) {
radio.sendvalue("countdown", value - 1)
}
showmynum()
}
if (name == "" + control.deviceserialnumber()) {
myindex = value
showmynum()
}
if (name == "show") {
show = value == 1
showmynum()
}
if (name == "response" && value ==control.deviceserialnumber()) {
radio.sendvalue("" + control.deviceserialnumber(), myindex)
}
if (name == "reset") {
myindex = value
showmynum()
}
if (name == "clear") {
basic.clearscreen()
}
if (name == "arrowr" && value == myindex) {
basic.showarrow(arrownames.east)
radio.sendvalue("arrowr", value + 1)
basic.clearscreen()
}
if (name == "arrowl" && value == myindex) {
basic.showarrow(arrownames.west)
if (myindex > 0) {
radio.sendvalue("arrowl", value - 1)
}
basic.clearscreen()
}
})
function showmynum() {
if (myindex < 0) {
basic.showstring("?")
}else {
if (show) {
basic.shownumber(myindex + 1)
} else {
basic.showicon(iconnames.triangle)
}
}
}
basic.showstring("?")
radio.setgroup(1)
myindex = -1
show = false
radio.sendvalue("getshow", 0)
將上面的javascript程序代碼貼到makecode網(wǎng)站上便會(huì)以積木的方式呈現(xiàn)。
廣西鹿寨教育局實(shí)物補(bǔ)貼政策引爭(zhēng)議:設(shè)備重復(fù)安裝,質(zhì)次價(jià)高
楠舍t(yī)ree house,楠舍音樂(lè)live現(xiàn)場(chǎng)
佳櫥維思怎么樣
滄州飛翼 6米集裝箱 三面展翼激光設(shè)備特種集裝箱
滄州廣匯管業(yè)有限公司 螺旋鋼管5037 防腐,保溫,排水
Micro:bit創(chuàng)意課程系列:讓micro:bit來(lái)報(bào)數(shù)
七月晚安心情說(shuō)說(shuō):憑什么好聚好散,你以為我動(dòng)心一次容易嗎?
三十個(gè)經(jīng)典情感語(yǔ)錄,深刻入心,令人相見(jiàn)恨晚!值得收藏
鍍鋅板設(shè)備直銷廠家樓承板機(jī)器地鑫
CA07670-E374 ST4000NM0023 AS5600浪潮存儲(chǔ)柜硬盤(pán)
LB-8000D-混合水質(zhì)自動(dòng)采樣器
工廠化循環(huán)水養(yǎng)殖系統(tǒng)價(jià)格-比傳統(tǒng)養(yǎng)殖節(jié)約水和土地,不污染環(huán)境
杭州1200型臥式大口徑泡沫粉碎機(jī) 規(guī)格齊全
華蘭達(dá)廠家制造 生活飲用水水處理機(jī)械過(guò)濾器 過(guò)濾效果好
叮當(dāng)貓童裝_叮當(dāng)貓服裝加盟_叮當(dāng)貓童裝品牌
新款多圖型迷你舞臺(tái)燈
巖棉保溫板廠家生產(chǎn)規(guī)格尺寸產(chǎn)品
大嘴狗寵物加盟,品牌實(shí)力出眾值得信賴
用一周才評(píng)價(jià)雅蘭乳膠床墊怎么樣?寶媽說(shuō)評(píng)價(jià)不好?
云南失智老人養(yǎng)老院報(bào)價(jià),云南老人養(yǎng)老院