knv

  • 2025-01-22
  • 回复了主题帖: 祝福2025!回帖即有奖!选取最有心的送5块国产开发板!

    路过

  • 2025-01-20
  • 回复了主题帖: 新年新挑战,任务打卡赢好礼!

      1、更新完善个人信息:完善您的个人资料,让我们更好地了解您。   2、回复3个帖子:在论坛中积极参与讨论,分享您的见解与心得。     3、认真学完1个大学堂视频:提升自我,获取知识,享受学习的乐趣。   4、报名参加活动中心的1个活动:融入社区,与更多志同道合的人一起共度美好时光。           5、下载一份资源站资料:获取您需要的资源,助力您的学习与工作。      

  • 加入了学习《IoT物联网项目基础知识和工具介绍培训教程》,观看 IoT物联网项目基础知识和工具介绍培训教程

  • 回复了主题帖: 充电站各类安全隐患及处理建议

    学习了

  • 回复了主题帖: “我只要你的壳”之TI-82计算器改造(1)

    有想法,不错

  • 回复了主题帖: 【嘉楠K230开发板】开箱与开发环境搭建

    学习一下

  • 2024-10-15
  • 加入了学习《【Follow me第二季第1期】任务提交-使用makecode开发(JavaScript)》,观看 【Follow me第二季第1期】任务提交-使用makecode开发(JavaScript)

  • 2024-08-12
  • 加入了学习《【Follow me第二季第1期】使用Makecode图形化完成任务》,观看 【Follow me第二季第1期】使用Makecode图形化完成任务

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

  • 2024-08-06
  • 回复了主题帖: 【Sipeed MAix BiT AIoT 开发套件】4,自动瞄准跟拍的系统

    厉害

  • 2024-08-02
  • 加入了学习《【Follow me第二季第1期】全部任务演示》,观看 全部任务演示2.0

  • 2024-08-01
  • 回复了主题帖: 解锁功能强大且灵活的【Arduino UNO R4 WiFi】,快来报名得捷Follow me第二季第1期!

    板子有点意思

  • 2024-07-30
  • 回复了主题帖: 【Follow me第二季第1期】创意任务二:害怕声音的纸章鱼~

    非常巧妙

  • 2024-07-27
  • 上传了资料: 【Follow me第二季第1期】任务提交

  • 发表了主题帖: 【Follow me第二季第1期】任务提交-使用makecode开发(JavaScript)

    本帖最后由 knv 于 2024-7-27 12:55 编辑 【Follow me第二季第1期】作品提交 大家好,我是knv,很高兴参加这次follow me活动,这次的开发板很有意思,自带10个RGB灯,以及充足的传感器。这次活动我除了必做任务,选做了 创意任务二:章鱼哥——章鱼哥的触角根据环境声音的大小,章鱼哥的触角可舒展或者收缩。搭配器件: Adafruit Circuit Playground Express、舵机。 使用到的器件内容:   设计思路: 主控为Circuit Playground Express 其中选做任务使用了舵机。 主要使用Circuit Playground Express的传感器进行数据采集,然后通过灯光显示。   入门任务(必做):开发环境搭建,板载LED点亮   1:搭建开发环境,由于到手的版本是最新的express版本,所以我选择使用Code.org CSD来制作应用程序。   浏览网站发现还有版本区别,我们收到的应该都是express版本,资源充足,玩micropython都可以。   设备上电后的效果,默认就是七彩灯光,非常好看。   简单介绍一下刷入固件的方法:   首先PC通过USB线链接开发板,等待开机成功后,轻按RESET键并松开, 进入刷机模式,当所有RGB灯变绿后,电脑会弹出一个磁盘,     将固件拖入磁盘即可完成固件升级。     跑第一个工程,点亮所有RGB。只需要拖动一个show ring 手动选择灯光效果,就可以点亮灯光了。 编写代码点亮RGB灯       基础任务一(必做):控制板载炫彩LED,跑马灯点亮和颜色变换     流程图:     let r = 0 input.onGesture(Gesture.Shake, () => {     r = Math.randomRange(0, 4)     if (r == 0) {         light.showAnimation(light.runningLightsAnimation, 2000)     } else if (r == 1) {         light.showAnimation(light.rainbowAnimation, 2000)     } else if (r == 2) {         light.showAnimation(light.cometAnimation, 2000)     } else {         light.showAnimation(light.theaterChaseAnimation, 2000)     } }) 代码内容: 摇一摇触发亮灯,每次随机生成一个数字,然后触发不同的灯效2秒。           基础任务二(必做):监测环境温度和光线,通过板载LED展示舒适程度   任务预期,根据温度和光线亮度来生成舒适指数,使用光线传感器获取环境亮度,使用温度传感器获取温度。当温度舒适时 灯光 绿色,温度过高 灯光红色 温度过低 灯光蓝色,亮度过高 黄色灯光闪烁   代码如下: let currentBrightness = 0   // 持续更新 forever(function () {     // 获取光线和温度     let lightLevel = input.lightLevel()     let temperature = input.temperature(TemperatureUnit.Celsius)       // 根据光线条件决定是否显示黄色     let isYellow = lightLevel > 200     let primaryColor = isYellow ? 0xffff00 : getColorBasedOnTemperature(temperature)     let secondaryColor = isYellow ? getColorBasedOnTemperature(temperature) : 0xffff00       // 执行呼吸灯效果     if (isYellow) {         showBreathingColor(primaryColor, secondaryColor)     } else {         showStaticColor(primaryColor)     } })   // 根据温度条件返回对应的颜色 function getColorBasedOnTemperature(temperature: number): number {     if (temperature > 25) {         return 0xff0000 // 红色     } else if (temperature <= 25 && temperature > 16) {         return 0x00ff00 // 绿色     } else {         return 0x0000ff // 蓝色     } }   // 使用呼吸灯效果显示交替的颜色 function showBreathingColor(primaryColor: number, secondaryColor: number) {     let steps = 10     let stepSize = 255 / steps     let pauseTime = 20       // 从 primaryColor 渐变到 secondaryColor     for (let step = 0; step <= steps; step++) {         let brightness = Math.round(step * stepSize)         let color = interpolateColor(primaryColor, secondaryColor, step / steps)         light.setAll(color)         light.setBrightness(brightness)         pause(pauseTime)     }     // 从 secondaryColor 渐变回 primaryColor     for (let step = steps; step >= 0; step--) {         let brightness = Math.round(step * stepSize)         let color = interpolateColor(primaryColor, secondaryColor, step / steps)         light.setAll(color)         light.setBrightness(brightness)         pause(pauseTime)     } }   // 使用静态颜色显示LED function showStaticColor(color: number) {     light.setAll(color)     light.setBrightness(255) // 设置最大亮度 }   // 插值函数:计算两种颜色之间的渐变颜色 function interpolateColor(color1: number, color2: number, ratio: number): number {     let r1 = (color1 >> 16) & 0xff     let g1 = (color1 >> 8) & 0xff     let b1 = color1 & 0xff     let r2 = (color2 >> 16) & 0xff     let g2 = (color2 >> 8) & 0xff     let b2 = color2 & 0xff       let r = Math.round(r1 + (r2 - r1) * ratio)     let g = Math.round(g1 + (g2 - g1) * ratio)     let b = Math.round(b1 + (b2 - b1) * ratio)       return (r << 16) | (g << 8) | b } 效果图: 当光线大于200时:   当温度大于16,并小于25时(在冰箱测试的,感觉温度传感器并不是很灵敏)       基础任务三(必做):接近检测——设定安全距离并通过板载LED展示,检测到入侵时,发起声音报警 任务目标,当光线检测传感器检测到较黑(亮度传感器<50)后,触发入侵报警。 流程图:   代码如下:   // 持续更新 forever(function () {     // 获取光线值     let lightLevel = input.lightLevel()       if (lightLevel < 50) {         // 当光线小于50时,闪烁红灯并发出声音报警         flashRedLight()         soundAlarm()     } else {         // 光线大于或等于50时,关闭所有LED灯         light.clear()     } })   // 使用闪烁的红色灯光显示LED function flashRedLight() {     let flashCount = 5 // 闪烁次数     let flashDuration = 200 // 每次闪烁的时间,单位:毫秒       for (let i = 0; i < flashCount; i++) {         light.setAll(0xff0000) // 红色         pause(flashDuration)         light.clear()         pause(flashDuration)     } }   // 发起声音报警 function soundAlarm() {     // 通过扬声器发出声音     music.baDing.play()     pause(200) // 每200毫秒发出一次声音 }   遮挡时:   无遮挡时:     进阶任务(必做):制作不倒翁——展示不倒翁运动过程中的不同灯光效果   任务目标,将设备贴到不倒翁上,当X Y加速度增加,则计算灯光速度,加速度越快,灯光速度越快。   // 持续更新 forever(function () {     // 获取 X 和 Y 轴的加速度值     let accelX = input.acceleration(Dimension.X)     let accelY = input.acceleration(Dimension.Y)       // 计算平面上的综合加速度     let strength2D = Math.sqrt(Math.pow(accelX, 2) + Math.pow(accelY, 2))       // 计算跑马灯的速度     let normalizedStrength = Math.min(strength2D / 1023, 1) // 标准化到 [0, 1] 范围     let speed = 100 - (90 * normalizedStrength) // 速度范围从 10 毫秒到 100 毫秒       // 执行七彩跑马灯效果     runColorMarquee(speed) })   // 运行七彩跑马灯效果 function runColorMarquee(speed: number) {     const colors = [0xff0000, 0xffa500, 0xffff00, 0x008000, 0x0000ff, 0x4b0082, 0xee82ee] // 红、橙、黄、绿、蓝、靛、紫     const numLEDs = 10       // 清除所有 LED     light.clear()       // 循环显示 LED     for (let i = 0; i < numLEDs; i++) {         // 先关闭所有 LED         light.clear()           // 点亮当前 LED 和下一个 LED         light.setPixelColor(i, colors[i % colors.length])         light.setPixelColor((i + 1) % numLEDs, colors[(i + 1) % colors.length])                pause(speed) // 等待时间,根据速度调整     } } 当晃动时,跑马灯速度更快:       ■  (选做)创意任务二:章鱼哥——章鱼哥的触角根据环境声音的大小,章鱼哥的触角可舒展或者收缩   搭配器件: Adafruit Circuit Playground Express、舵机   舵机链接: 橙色  链接-->   A1 棕色  链接-->  GND 红色   链接-->   VOUT     任务目标,使用设备的麦克风,获取音量,音量越大,舵机转动越快。同时启动线程,读取音量,使开发板上的RGB灯光以跑马灯形式点亮。代码开发完成后,用A4纸剪出章鱼触角的样子,贴到舵机上,完成收缩或者舒展功能。 流程图:   代码如下: let servo = servos.A1; let lastLevel = 0;   // 设置音量的阈值 let threshold = 120; // 小于此音量时,停止伺服电机   // 伺服电机控制 forever(function () {     let level = input.soundLevel();     if (lastLevel != level) {         if (level < threshold) {             servo.run(0);         } else {             // 将音量映射到伺服电机速度             let speed = Math.map(level, threshold, 255, 0, 100);             // 确保映射后的值在有效范围内             speed = Math.max(0, Math.min(speed, 100));               // 随机决定正转或反转             let direction = Math.randomRange(0, 1) === 0 ? 1 : -1;             let finalSpeed = speed * direction;               console.log(finalSpeed);             servo.run(finalSpeed);             pause(100)         }         lastLevel = level;     } });   // 跑马灯效果 forever(function () {     let level = input.soundLevel();     if (level >= threshold) {         // 计算跑马灯的速度         let lightSpeed = Math.map(level, threshold, 255, 500, 50); // 数字越大速度越慢         runLights(lightSpeed);     } else {         clearLights();     } });   function runLights(delay: number) {     const colors = [         0xff0000, // Red         0xffa500, // Orange         0xffff00, // Yellow         0x008000, // Green         0x0000ff, // Blue         0x4b0082, // Indigo         0xee82ee  // Violet     ];     for (let i = 0; i < 10; i++) {         let level = input.soundLevel();         if (level < threshold) {             clearLights();             return;         }           for (let j = 0; j < 10; j++) {             light.setPixelColor((i + j) % 10, colors[j % colors.length]); // 设置当前灯光为多彩颜色         }         pause(delay); // 根据音量调整速度     } }   function clearLights() {     light.clear(); // 清除所有灯光 } 运行图片:       任务汇总视频: 链接:【Follow me第二季第1期】任务提交-使用makecode开发(JavaScript)-【Follow me第二季第1期】任务提交-使用makecode开发(JavaScript)-EEWORLD大学堂   源码下载: download.eeworld.com.cn/detail/knv/633848   心得体会: 本次Follow me 第二季第1期任务活动的目标是利用 Adafruit Circuit Playground Express 开发一些灯光效果的功能,该项目不仅增强了我对传感器数据的处理能力,还培养了我们在硬件编程中的综合应用能力。学习了如何使用 Circuit Playground Express 的 LED 环实现多彩的视觉效果,并结合传感器数据动态控制这些效果。感谢得捷电子,电子工程世界提供的活动。

  • 加入了学习《【得捷电子Follow me第2期】从显示中文到电子天气日历》,观看 【得捷电子Follow me第2期】从显示中文到电子天气日历

  • 2024-07-08
  • 回复了主题帖: 颁奖:嵌入式工程师AI挑战营(初阶),致敬敢于将边缘AI收入统治领域的你们

    本帖最后由 knv 于 2024-7-8 17:47 编辑 个人信息已确认,请安排邮寄。感谢luckfox和eeworld的活动

  • 2024-05-24
  • 回复了主题帖: 【AI挑战营终点站】应用落地:部署手写数字识别应用到幸狐RV1106开发板

    本帖最后由 knv 于 2024-5-24 17:55 编辑 完成打卡:) 大家有问题可以群里讨论或者帖子留言 https://bbs.eeworld.com.cn/thread-1282455-1-1.html

  • 回复了主题帖: #AI挑战营终点站# rv1106数字识别模型部署与性能优化

    大佬牛皮

  • 2024-05-23
  • 回复了主题帖: #AI挑战营终点站#将模型部署到RV1106中通过摄像头采集进行手写数字识别

    aramy 发表于 2024-5-22 16:40 大佬:求助!按您这个流程跑下来。提示:E RKNN: failed to decode config data!   求指导!谢 ... 将编译后生成的 luckfox_rtsp_opencv_demo 目录下面的 lib也复制到开发板运行目录中,再尝试运行

统计信息

已有71人来访过

  • 芯积分:171
  • 好友:--
  • 主题:9
  • 回复:25

留言

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


现在还没有留言