miu_miu

  • 2024-12-14
  • 加入了学习《Follow me第二季第1期》,观看 创意任务三:触摸钢琴

  • 加入了学习《【Follow me第二季第1期】任务汇总,选做水果钢琴》,观看 【Follow me第二季第1期】任务汇总,选做水果钢琴

  • 2024-09-01
  • 发表了主题帖: 【Follow me第二季第1期】Adafruit Circuit Playground Express任务整体汇总

    本帖最后由 miu_miu 于 2024-9-1 21:57 编辑 非常高兴能参加这次Follow me,这是我第二次参加。这次参加的主要目的是给孩子学习用,因为Adafruit Circuit Playground Express具有各种传感器和LED,而且可以使用MakeCode进行开发,很适合小朋友学习。   项目演示视频     任务/项目介绍 项目简介 本次项目为Adafruit Circuit Playground Express(简称CPE)的体验,需要完成1个入门任务、3个基础任务、至少1个创意任务(3选1),涵盖CPE的炫彩LED、光线传感器、运动传感器、温度传感器、扬声器等的使用。 全部物料清单 本次只购买了必要器件       设计思路 入门任务比较简单,可以用于熟悉MakeCode的使用。用按键A按下输出板载LED灯的高电平,放开输出低电平,控制LED灯的点亮。 基础任务一思路:使用10颗Mini NeoPixel LED实现,跑马灯点亮和颜色变换。 基础任务二思路:使用1个温度传感器和1个光传感器,根据温度和亮度数值转分别换成5颗LED灯动态效果。 基础任务三思路:使用光传感器和1个带D类放大器的迷你扬声器,根据物体靠近时光线的变化作为安全距离,发起声音报警。(由于MakeCode暂不知道如何使用红外进行距离探测,只会收发信号) 进阶任务思路:使用1个运动传感器和LED灯,根据板卡的运动方向控制不同的LED灯点亮。 创意任务一思路:使用声音传感器、扬声器和LED灯,实现手持定时器。   各任务说明 入门任务(必做):开发环境搭建,板载LED点亮 任务说明:给板载LED输出高电平,点亮即可 软件流程图:   MakeCode实现代码: input.buttonA.onEvent(ButtonEvent.Down, function () { pins.LED.digitalWrite(true) }) input.buttonA.onEvent(ButtonEvent.Up, function () { pins.LED.digitalWrite(false) }) 代码说明: 为按钮A设置事件监听。 当按钮A按下时(Down),LED灯亮起(即设置LED为高电平)。 当按钮A释放时(Up),LED灯熄灭(即设置LED为低电平)。 效果截图:   基础任务一(必做):控制板载炫彩LED,跑马灯点亮和颜色变换 任务说明:通过炫彩LED实现跑马灯效果和颜色变换 软件流程图:   MakeCode实现代码: input.buttonA.onEvent(ButtonEvent.Click, function () { for (let i = 0; i < 2; i++) { light.showAnimation(light.colorWipeAnimation, 1000) } for (let i = 0; i < 10; i++) { light.showAnimation(light.rainbowAnimation, 500) } light.setAll(0x000000) }) input.buttonB.onEvent(ButtonEvent.Click, function () { for (let i = 0; i < 2; i++) { light.showAnimation(light.cometAnimation, 1000) } for (let i = 0; i < 10; i++) { light.showAnimation(light.rainbowAnimation, 500) } light.setAll(0x000000) }) 代码说明: 该代码定义了两个按钮点击事件处理函数: 按下按钮A时,显示两次颜色渐变动画(每次持续1秒),接着显示十次彩虹动画(每次持续0.5秒),最后关闭所有灯光。 按下按钮B时,显示两次彗星动画(每次持续1秒),接着同样显示十次彩虹动画(每次持续0.5秒),最后关闭所有灯光。 效果截图:   基础任务二(必做):监测环境温度和光线,通过板载LED展示舒适程度 任务说明:根据温度传感器和光线传感器的数值,转化为LED灯的可视化效果。把左面5颗LED灯作为光照程度的显示,右面5颗LED作为温度程度的显示。 软件流程图:     MakeCode实现代码: let pixel_list = 0 let temp_list = 0 forever(function () { pixel_list = Math.map(input.lightLevel(), 0, 255, 0, 5) console.log(pixel_list) for (let m = 0; m <= pixel_list; m++) { light.setPixelColor(m, 0xffffff) } for (let n = pixel_list; n <= 4; n++) { light.setPixelColor(n+1, 0x000000) } }) forever(function () { if (input.temperature(TemperatureUnit.Celsius) < 20) { temp_list = Math.map(input.temperature(TemperatureUnit.Celsius), 0, 20, 6, 10) for (let i = 5; i <= temp_list; i++) { light.setPixelColor(i, 0x007fff) } } else if (input.temperature(TemperatureUnit.Celsius) >= 20 && input.temperature(TemperatureUnit.Celsius) <= 26) { temp_list = Math.map(input.temperature(TemperatureUnit.Celsius), 20, 26, 6, 10) for (let o = 5; o <= temp_list; o++) { light.setPixelColor(o, 0x00ff00) } } else if (input.temperature(TemperatureUnit.Celsius) >= 27 && input.temperature(TemperatureUnit.Celsius) <= 32) { temp_list = Math.map(input.temperature(TemperatureUnit.Celsius), 27, 32, 6, 10) for (let p = 5; p <= temp_list; p++) { light.setPixelColor(p, 0xff8000) } } else { temp_list = Math.map(input.temperature(TemperatureUnit.Celsius), 33, 40, 6, 10) for (let q = 5; q <= temp_list; q++) { light.setPixelColor(q, 0xff0000) } } for (let r = temp_list; r <= 9; r++) { light.setPixelColor(r+1, 0x000000) } }) 代码说明: 根据环境光强度(0-255)映射到0-5范围,点亮相应数量的LED(白色),剩余LED关闭。 根据温度变化在蓝色(小于20度)、绿色(20至26度)、橙色(27至32度)和红色(33度至40度)之间变换LED颜色(位置6-10),点亮相应数量的LED。 效果截图(视频效果会更好):   本来是橙色,手指放在温度传感器上变红色   任务三(必做):接近检测——设定安全距离并通过板载LED展示,检测到入侵时,发起声音报警 任务说明:由于MakeCode暂不知道如何使用红外进行距离探测,改为根据物体靠近时光线的变化作为安全距离,发起声音报警。通过把光线强度映射为10颗LED灯,当强度小于5时进行报警音播放。 软件流程图: MakeCode实现代码: let pixel_list = 0 forever(function () { pixel_list = Math.map(input.lightLevel(), 0, 32, 0, 10) console.log(pixel_list) for (let m = 0; m <= pixel_list; m++) { light.graph(m, 10) } for (let n = pixel_list; n <= 9; n++) { light.setPixelColor(n + 1, 0x000000) } if (pixel_list < 5) { music.magicWand.play() } }) 代码说明: 将光照值映射到 0 到 10 的范围,用10颗LED灯显示光照强度。 若强度小于5时,播放警报声。 效果截图: 白天光照强度大,10颗全亮。   手接近后发出报警声   进阶任务(必做):制作不倒翁——展示不倒翁运动过程中的不同灯光效果 任务说明:模拟不倒翁运动过程,在板卡倾斜在前后左右4个方向时亮起对应的LED灯,板卡旋转时显示彩虹灯光。 软件流程图: MakeCode实现代码: input.onGesture(Gesture.Shake, function () { for (let i = 0; i < 10; i++) { light.showAnimation(light.rainbowAnimation, 100) } }) input.onGesture(Gesture.TiltUp, function () { light.showRing( `white white black black black black black black white white` ) }) input.onGesture(Gesture.TiltDown, function () { light.showRing( `black black black white white white white black black black` ) }) input.onGesture(Gesture.TiltLeft, function () { light.showRing( `black white white white black black black black black black` ) }) input.onGesture(Gesture.TiltRight, function () { light.showRing( `black black black black black black white white white black` ) }) input.onGesture(Gesture.FreeFall, function () { light.showRing( `red red red red red red red red red red` ) }) 代码说明: 当检测到摇晃手势时,显示10次彩虹动画。 倾斜方向不同则显示不同的灯光图案:向上倾斜显示两端白色;向下倾斜显示中间白色;向左倾斜显示左侧白色;向右倾斜显示右侧白色。 检测到自由落体手势时,显示全红色灯光。 效果截图:   创意任务一:有创意的可穿戴装饰 任务说明:制作手持定时器,使用按键A设定定时位置,通过声音触发开始倒数,同时播放声效。按键B重置。 软件流程图: MakeCode实现代码: input.onLoudSound(function () { light.photonFlip() light.setPhotonMode(PhotonMode.Eraser) for (let i = 0; i < time; i++) { music.playTone(262, 300) pause(700) light.photonForward(1) } for (let i = 0; i < 3; i++) { music.playTone(523, 100) pause(100) music.playTone(523, 100) light.showAnimation(light.sparkleAnimation, 700) } }) input.buttonA.onEvent(ButtonEvent.Click, function () { if (time < 10) { light.photonForward(1) time += 1 } }) input.buttonB.onEvent(ButtonEvent.Click, function () { time = 0 light.setPhotonMode(PhotonMode.Off) light.setAll(0x000000) }) let time = 0 time = 1 light.photonForward(0) 代码说明: 按键A设定定时time变量,最大10个单位。 检测麦克风声音,循环time设定的次数,并每次播放音效。完成后播放3次闪烁灯效果作为提示。 效果截图: 设定定时时间,通过声音触发倒计时(请看视频效果)     本活动的心得体会 本次活动任务制作过程有小朋友参与,通过MakeCode图形化的拖拉操作和内置的多种动作,小朋友更容易理解控制流程和思路。同时CPE丰富的传感器也非常适合不同想法的实现。非常感谢EEworld和Digikey举办的活动,希望以后还能继续参与。   代码链接 https://download.eeworld.com.cn/detail/eew_4HfTi8/634245

  • 加入了学习《Follow me 第二季第1期演示视频》,观看 Follow me 第二季第1期演示视频

  • 上传了资料: FollowMe第二季第1期任务MakeCode代码

  • 2024-08-31
  • 加入了学习《FollowMe 第二季: 1 Adafruit Circuit Playground Express及任务讲解》,观看 Adafruit Circuit Playground Express 及任务讲解

最近访客

< 1/1 >

统计信息

已有3人来访过

  • 芯积分:53
  • 好友:--
  • 主题:2
  • 回复:0

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言