【Follow me第二季第1期】基础任务二、三+创意任务三
[复制链接]
经过了前面入门任务和基础任务,让我们对adafruit circuit playgrand express这款开发板有了进一步的了解,同时结合基础任务二、基础任务三,以及创意任务三让我们继续深入探究开发板的有趣玩法。
【所需物料】Adafruit Circuit Playground Express开发板,MicroUSB线,电脑,水果若干,超声波传感器
【编程软件】windows自带的Microsoft MakeCode,图形化编程工具,让更多玩家更易上手
下面我将分开展示每一个任务:
【基础任务二(必做):监测环境温度和光线,通过板载LED展示舒适程度】利用板载的温度传感器和光线传感器,去感知外界环境温度的变化以及环境光线的变化,以LED的颜色以及LED的点亮数量来展示不同的区别。这里我的软件逻辑是将温度分成三个区间,[-5~22][23~26][27~50],当温度为[-5~22]LED灯显示蓝色,并且随着温度降低,点亮LED灯数量越多;当温度为[23~26]时,LED灯显示绿色,并且随着温度升高,点亮LED数量越多;当温度为[27~50]时,LED灯显示红色,并且当温度升高时,点亮LED灯越多。较为适宜的温度是绿色的,并且数量越多越适宜。同时将光线判断为亮度越高,点亮的LED越多,较为适宜的是2~3个灯。展示图片如下:
在冰箱里,环境温度低,亮蓝灯,可能是开着门拍,未达到相应的环境温度,会有绿灯亮起现象。
环境温度合适的绿色。
代码的截图如下:
具体代码如下:
let value = input.lightLevel()
let value2 = input.temperature(TemperatureUnit.Celsius)
let list = [0, 1, 2, 3, 4]
let list2 = [5, 6, 7, 8, 9]
forever(function () {
value = Math.min(input.lightLevel() / 51.2, 5)
for (let i = 0; i <= value; i++) {
light.setPixelColor(list[i], 0xffff00)
}
for (let k = value; k <= 10; k++) {
light.setPixelColor(list[k], 0x000000)
}
})
forever(function () {
if (input.temperature(TemperatureUnit.Celsius) < 22) {
value2 = Math.min(Math.abs(input.temperature(TemperatureUnit.Celsius) - 21) / 5.4, 5)
for (let j = 0; j <= value2; j++) {
light.setPixelColor(list2[j], 0x0000ff)
}
for (let l = value; l <= 10; l++) {
light.setPixelColor(list[l], 0x000000)
}
} else {
if (input.temperature(TemperatureUnit.Celsius) >= 22 && input.temperature(TemperatureUnit.Celsius) <= 26) {
value2 = Math.min((input.temperature(TemperatureUnit.Celsius) - 21) / 1, 5)
for (let m = 0; m <= value2; m++) {
light.setPixelColor(list2[m], 0x00ff00)
}
for (let n = value; n <= 10; n++) {
light.setPixelColor(list[n], 0x000000)
}
} else {
value2 = Math.min((input.temperature(TemperatureUnit.Celsius) - 26) / 4.8, 5)
for (let o = 0; o <= value2; o++) {
light.setPixelColor(list2[o], 0xff0000)
}
for (let p = value; p <= 5; p++) {
light.setPixelColor(list[p], 0x000000)
}
}
}
})
视频如下:
202408310037
【基础任务三(必做):接近检测——设定安全距离并通过板载LED展示,检测到入侵时,发起声音报警】这个任务中需要用到当时选购的超声波传感器,来检测物体的距离,同时也需要的对采集的数据处理,根据距离的远近判断点亮相应数量的LED灯,距离越近,亮的越少,距离越远,亮的越多。同时设置报警阈值,当靠近5cm时会触发蜂鸣器响,用来警告。
以下为图形化编程界面:
具体实现代码如下:
let distance = 0
loops.forever(function () {
pins.A2.digitalWrite(false)
control.waitMicros(2)
pins.A2.digitalWrite(true)
control.waitMicros(10)
pins.A2.digitalWrite(false)
distance = pins.A1.pulseIn(PulseValue.High) / 58
light.graph(distance, 30)
if (distance < 5) {
music.siren.play()
} else {
music.stopAllSounds()
}
})
视频如下:
VID_20240830_003508
【创意任务三:水果钢琴——通过触摸水果弹奏音乐,并配合灯光效果】本次任务需要用到开发板的模拟量输入功能,将每个引脚的模拟量输入利用起来,用导线将其连接到水果上,用手触碰不同引脚连接的水果,会发出相应的音调,组合起来可以弹出“优美的”音乐,谓之水果钢琴。亮出我的干巴小柠檬,来展示水果钢琴。
以下是实现的图形化编程界面:
具体实现代码:
forever(function () {
if (input.touchA1.isPressed()) {
music.playTone(988, music.beat(BeatFraction.Double))
pause(1)
music.stopAllSounds()
}
if (input.touchA2.wasPressed()) {
music.playTone(880, music.beat(BeatFraction.Double))
pause(1)
music.stopAllSounds()
}
if (input.touchA3.wasPressed()) {
music.playTone(784, music.beat(BeatFraction.Double))
pause(1)
music.stopAllSounds()
}
if (input.touchA4.wasPressed()) {
music.playTone(698, music.beat(BeatFraction.Double))
pause(1)
music.stopAllSounds()
}
if (input.touchA5.wasPressed()) {
music.playTone(659, music.beat(BeatFraction.Double))
pause(1)
music.stopAllSounds()
}
if (input.touchA6.wasPressed()) {
music.playTone(587, music.beat(BeatFraction.Double))
pause(1)
music.stopAllSounds()
}
if (input.touchA7.wasPressed()) {
music.playTone(523, music.beat(BeatFraction.Double))
pause(1)
music.stopAllSounds()
}
})
视频展示如下:
VID_20240828_044043
|