iexplore123

  • 2024-09-01
  • 加入了学习《【Follow me】第二季第一期任务汇总》,观看 任务汇总提交

  • 发表了主题帖: 【Follow me】第二季第一期任务汇总

    本帖最后由 iexplore123 于 2024-9-1 04:28 编辑 # 【Follow_me】第二季第一期任务汇总 ![](https://www.eeworld.com.cn/huodong/digikey_follow_me_2024/image/banner1-1.png) [localvideo]a0aa117c7978d54c939af6f49629edef[/localvideo] [EE大学堂](https://training.eeworld.com.cn/course/68620) ## 1. 任务简介 大家好,这里是iex123,我来交作业了。本期任务是【Follow_me】第二季第一期,任务主要是通过板载传感器和LED灯,实现环境温度和光线检测,接近检测,不倒翁运动过程中的灯光效果,以及可穿戴装饰的音频频谱动画效果。 ### 1.1 使用的硬件 - Adafruit Circuit Playground Express - 电池(可选) - 电脑(Win11) ### 1.2 使用的软件 - VSCode - PlatformIO - Adafruit_CircuitPlayground库 ## 2. 任务进度 - [x] [入门任务:开发环境搭建,板载LED点亮](https://bbs.eeworld.com.cn/thread-1289127-1-1.html) >使用PlatformIO搭建开发环境,通过Arduino框架控制板载LED点亮 - [x] [基础任务一:控制板载炫彩LED,跑马灯点亮和颜色变换](https://bbs.eeworld.com.cn/thread-1289127-1-1.html) >在入门任务的基础上,通过控制板载炫彩LED实现跑马灯效果和颜色变换 - [X] [基础任务二:监测环境温度和光线,通过板载LED展示舒适程度](https://bbs.eeworld.com.cn/thread-1289127-1-1.html) >通过板载温度传感器和光敏传感器检测环境温度和光线强度,并通过板载LED展示舒适程度 - [X] [基础任务三:接近检测——设定安全距离并通过板载LED展示,检测到入侵时,发起声音报警](https://bbs.eeworld.com.cn/thread-1289127-1-1.html) >通过板载光线传感器或红外ADC检测距离,检测到入侵时,通过板载蜂鸣器发起声音报警 - [x] [进阶任务:制作不倒翁——展示不倒翁运动过程中的不同灯光效果](https://bbs.eeworld.com.cn/thread-1291466-1-1.html) >通过板载加速度计检测不倒翁的俯仰角和横滚角,通过LED展示不同灯光效果 - [_] [创意任务(选做,选择其中一个或多个都可)]   - [x] [创意任务一:有创意的可穿戴装饰——可结合多种传感器和灯光效果展示](https://bbs.eeworld.com.cn/thread-1291469-1-1.html)   >通过板载麦克风检测环境声音,通过板载LED展示   - [ ] 创意任务二:章鱼哥——章鱼哥的触角根据环境声音的大小,章鱼哥的触角可舒展或者收缩   - [ ] 创意任务三:水果钢琴——通过触摸水果弹奏音乐,并配合灯光效果 ## 3. 任务详情 ### 3.1 入门任务:开发环境搭建,板载LED点亮 #### 3.1.1 环境搭建 1. 下载安装VSCode 2. 安装PlatformIO插件 3. 创建项目 4. 安装Adafruit_CircuitPlayground库 5. 编写代码 #### 3.1.2 板载LED点亮 [localvideo]9ba1e2fae92e95ba727aa22cb82b679c[/localvideo] 代码流程图如下: 通过Adafruit_CircuitPlayground库简单初始化板子之后,点亮板载LED,延时500ms后熄灭LED,达到红色闪烁的效果。 ### 3.2 基础任务一:控制板载炫彩LED,跑马灯点亮和颜色变换 [localvideo]57ca9938291803ffac6ddb18edd54c55[/localvideo] [localvideo]9ac1bd10b7ff54765fce0d5e93e986a4[/localvideo] 代码流程图如下: 通过检测滑动开关是否打开,轮流点亮板载LED为红色、绿色、蓝色或彩虹色流动。 ### 3.3 基础任务二:监测环境温度和光线,通过板载LED展示舒适程度 代码流程图如下: 通过获取环境温度和光线强度,通过if语句判断温度和光线强度是否大于设定值,设置LED为红色、绿色或蓝色。 ### 3.4 基础任务三:接近检测——设定安全距禀并通过板载LED展示,检测到入侵时,发起声音报警 [localvideo]e4f7fa82eaf2fd6ed86a92a99f7bf5c2[/localvideo] 代码流程图如下: 通过初始化红外ADC,发射红外,通过if语句判断接近传感器的值是否大于设定值,设置LED颜色,发出声音报警。 ### 3.5 进阶任务:制作不倒翁——展示不倒翁运动过程中的不同灯光效果 [localvideo]af74e278de411a948cae5a6777a4e65d[/localvideo] 代码流程图如下: 通过获取加速度计数据,计算俯仰角和横滚角,映射俯仰角和横滚角到颜色rgb,设置LED颜色,显示LED颜色。 ### 3.6 创意任务一:有创意的可穿戴装饰——可结合多种传感器和灯光效果展示 [localvideo]febbab6a0d832c3d36afb0fdd1a3a836[/localvideo] 代码流程图如下: 通过获取麦克风传感器的数据,进行FFT变换,获取音频频谱数据,获取音量大小,根据频谱数据和音量大小设置LED颜色分量,播放LED动画。 ## 4. 任务总结 本期任务主要是通过板载传感器和LED灯,实现了环境温度和光线检测,接近检测,不倒翁运动过程中的灯光效果,以及可穿戴装饰的音频频谱动画效果。在任务中,我们学习了如何使用板载传感器和LED灯,如何通过if语句判断传感器的值,如何通过颜色rgb设置LED灯颜色,如何通过音频频谱数据设置LED颜色分量,如何通过FFT变换获取音频频谱数据等。 非常感谢得捷和EEWORLD论坛为我们提供了这次的学习机会,我们在这次的学习中学到了很多知识,也收获了很多快乐,希望在接下来的学习中,我们可以更好的学习和进步。 ## 5. 代码下载 [附件下载中心](https://download.eeworld.com.cn/detail/iexplore123/634237 "下载中心") ------------ 感谢阅读。

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

  • 2024-08-31
  • 上传了资料: 得捷followme第二季第一期Adafruit项目代码

  • 2024-08-30
  • 上传了资料: 得捷followme第四季第一期项目文件

  • 2024-08-29
  • 加入了学习《【Follow me第二季第1期】汇总任务报告》,观看 【Follow me第二季第1期】汇总任务报告

  • 2024-08-27
  • 回复了主题帖: 【Follow me第二季第1期】 进阶任务(不倒翁)

    Jacktang 发表于 2024-8-25 21:47 不倒翁倾斜板载LED的颜色会变化还是挺酷炫 hh献丑了,只是简单的把倾斜角度映射成颜色分量做的

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

  • 加入了学习《得捷Follow me第4期视频》,观看 得捷Follow me第4期视频

  • 加入了学习《【得捷电子Follow me第4期】上手W5500-EVB-Pico》,观看 【得捷电子Follow me第4期】上手W5500-EVB-Pico

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

  • 加入了学习《【Follow me第二季第1期】任务汇总展示》,观看 【Follow me第二季第1期】任务汇总展示

  • 2024-08-24
  • 发表了主题帖: 【Follow me第二季第1期】 创意任务(有创意的可穿戴装饰)

    # 【Follow me第二季第1期】 创意任务(有创意的可穿戴装饰) 大家好,这里是iex123。这次我来尝试一下创意任务一,制作一个有创意的可穿戴装饰。我选择使用麦克风传感器和板载LED,来制作一个可以根据环境声音的大小和音调,展示不同灯光效果的可穿戴装饰。 ## 可穿戴装饰的制作 ### 材料准备 - Adafruit Circuit Playground Express - 挂绳 - 电池 ### 制作过程 1. 将Adafruit Circuit Playground Express用挂绳钩住,如下图所示: 2. 将Adafruit Circuit Playground Express连接到电脑,然后上传下面的代码: ```cpp #include #include "Adafruit_ZeroFFT.h" #include #include #define DATA_SIZE 256 #define NUM_PIXELS 10 #define FS 22000 //要收集的最低频率 #define FREQ_MIN 600 //要收集的最高频率 #define FREQ_MAX 3000 #define MIN_INDEX FFT_INDEX(FREQ_MIN, FS, DATA_SIZE) #define MAX_INDEX FFT_INDEX(FREQ_MAX, FS, DATA_SIZE) #define SCALE_FACTOR 32 int16_t inputData[DATA_SIZE]; #define SAMPLE_WINDOW   10  //取样窗口 #define PEAK_HANG       24  //LED停留时间 #define PEAK_FALL        4  //LED动画下降速度 #define INPUT_FLOOR     60  //最低检测分贝值 #define INPUT_CEILING   95   byte peak = 16;        // 颜色条的峰值位置 unsigned int sample; byte dotCount = 0;     // LED衰落动画计数变量 byte dotHangCount = 0; // LED停留动画计数变量 float mapf(float x, float in_min, float in_max, float out_min, float out_max); void setup() {   CircuitPlayground.begin();   Serial.begin(115200);   Serial.println("FFT Test"); } void loop() {   int numPixels = CircuitPlayground.strip.numPixels();   float peakToPeak = 0;   //峰峰值   unsigned int c, y;   int i;   CircuitPlayground.mic.capture(inputData, DATA_SIZE);   //fft预处理   int32_t avg = 0;   for(i=0; i

  • 发表了主题帖: 【Follow me第二季第1期】 进阶任务(不倒翁)

    # 【Follow me第二季第1期】 进阶任务(制作不倒翁) 大家好,这里是iex123。时隔半个月,这次我来尝试一下进阶任务,制作一个不倒翁。不倒翁是一种玩具,它的底部是一个半圆形,可以自动恢复垂直状态,不会倒下。我们可以通过控制板载LED的颜色和亮度,来展示不倒翁运动过程中的不同灯光效果。 ## 不倒翁的制作 ### 材料准备 - Adafruit Circuit Playground Express - 不倒翁模型 - 电池 ### 制作过程 1. 将Adafruit Circuit Playground Express固定在不倒翁模型的底部,装上电池,如下图所示: >手头上没啥合适的东西,电工胶带加瓶盖做了个底座凑合凑合 2. 将Adafruit Circuit Playground Express连接到电脑,然后上传下面的代码: ```cpp #include #include #include void setup() {   Serial.begin(9600);   Serial.println("Hello World!");   CircuitPlayground.begin();   CircuitPlayground.setBrightness(20); } void loop() {   float x = CircuitPlayground.motionX();   float y = CircuitPlayground.motionY();   float z = CircuitPlayground.motionZ();   float pitch = atan2(x, z) * 180 / PI;//俯仰角,即x轴与水平面的夹角,范围是-90°到90°   float roll  = atan2(y, z) * 180 / PI;//横滚角,即y轴与水平面的夹角,范围是-90°到90°   uint8_t red = (uint8_t)lerp(abs(pitch), 0, 20, 255, 0); // 根据俯仰角设置红色分量,范围是0到255   uint8_t green = (uint8_t)lerp(abs(roll), 0, 20, 255, 0); // 根据横滚角设置绿色分量,范围是0到255   uint8_t blue = 255; // 蓝色分量为255   red = CircuitPlayground.gamma8(red);   green = CircuitPlayground.gamma8(green);   for (int i = 0; i < 10; i++) {     CircuitPlayground.setPixelColor(i, red, green, blue); // 设置LED颜色   }   CircuitPlayground.strip.show(); // 显示LED颜色   delay(100);   Serial.print("pitch: ");   Serial.print(pitch);   Serial.print(" roll: ");   Serial.print(roll);   Serial.print(" x: ");   Serial.print(x);   Serial.print(" y: ");   Serial.print(y);   Serial.print(" z: ");   Serial.println(z); } float lerp(float x, float xmin, float xmax, float ymin, float ymax) {   if (x >= xmax) {     return ymax;   }   if (x

  • 2024-08-12
  • 加入了学习《【Follow me第二季第1期】在arduino环境下多app调度全部任务》,观看 【Follow me第二季第1期】在arduino环境下多app调度全部任务

  • 2024-07-31
  • 回复了主题帖: 【Follow me第二季第1期】 入门与基础任务(使用PlatformIO搭建Arduino开发环境)

    markdown的流程图果然没法正常显示啊,下次修改了 :(

  • 2024-07-30
  • 发表了主题帖: 【Follow me第二季第1期】 入门与基础任务(使用PlatformIO搭建Arduino开发环境)

    本帖最后由 iexplore123 于 2024-7-30 20:02 编辑 # 【Follow me第二季第1期】 入门与基础任务(使用PlatformIO搭建Arduino开发环境) [TOC] ## 关于我 大家好,这里是iex123。非常荣幸能被选中参加这一期的得捷电子“Follow me”活动。我是来自徐州某师范大学的一名电子信息工程学生,刚认识这个论坛不久,希望在这里能够学到更多的知识,结交更多的朋友。希望在这次活动中,能够和大家一起学习、一起进步。 ## Adafruit Circuit Playground Express Adafruit Circuit Playground Express 这块板子非常有特点,集成了许多传感器外设,如加速度计、陀螺仪、温度传感器、光线传感器等,这也是这块板子吸引我的地方。通过这些传感器,我们可以实现许多有趣的功能,如控制板载LED的颜色、监测环境温度和光线、接近检测等。 官方也给出了板子引脚图: ![引脚图](https://cdn-learn.adafruit.com/assets/assets/000/047/156/original/circuit_playground_Adafruit_Circuit_Playground_Express_Pinout.png?1507829017) 这块板子在 [github](https://github.com/adafruit/Adafruit-Circuit-Playground-Express-PCB "板子设计是brd文件,应该是 Eagle 这款软件可以打开") 有开源原理图和pcb文件,见下图: ![Circuit Playground Express](/data/attachment/forum/202407/30/173209p7tg22mymjxj6mjo.png.thumb.jpg?rand=9443.309229790015 "具体文件可在底部附件下载") 板子反面的三个金属触点从左到右分别是 $$\overline{\text{RESET}}$$、SWDIO、SWCLK/SPK_SD,可以通过这三个触点对板子进行调试。 原理图 PCB设计图 ### 搭建开发环境 在开始学习Adafruit Circuit Playground Express之前,我们需要搭建相应的开发环境,这款板子支持多种开发环境,如CircuitPython、MakeCode、Arduino等。我比较喜欢折腾Vscode,所以以下环境搭建都在Vscode下进行。 #### Arduino 我使用的是Vscode+PlatformIO+Arduino的方式进行开发,PlatformIO 在vscode中提供了图形界面,而且可以支持很多开发环境,包括Arduino,他的安装非常简单,只需要在Vscode的插件商店搜索PlatformIO,然后安装即可。 如下图,在PlatformIO的主界面中,点击New Project,选择Adafruit Circuit Playground Express,然后选择开发环境,点击Finish即可创建一个新的项目。 ![创建项目](/data/attachment/forum/202407/30/173234kalttqtyqqkxwefl.png?rand=2500.5299137462634) 创建好项目后,我们可以在src文件夹下看到一个main.cpp文件,这就是我们的主程序文件,我们可以在这个文件中编写我们的代码。 > 注意:ino文件是Arduino的源文件,cpp文件是C++的源文件,PlatformIO默认使用cpp文件。ino文件和cpp文件的区别在于,ino文件中的函数不需要严格的函数预声明,而cpp文件需要。 > 项目主文件命名为 main.ino 也是可以的,编译时PlatformIO会自动处理。 接着我们需要添加Adafruit Circuit Playground Express的库,点击左侧的PlatformIO图标,然后点击Libraries,搜索Adafruit Circuit Playground Express,然后点击进入,点击Add to Project 即可添加到指定项目中。 ![导入库](/data/attachment/forum/202407/30/173234qt1ik4tiihit4hqt.png.thumb.jpg?rand=1781.037184538623) #### CircuitPython CircuitPython 是 Adafruit 开发的一款基于 Python 的微控制器编程语言,它的特点是简单易学,适合初学者。CircuitPython 的开发环境搭建也非常简单,只需要在官网下载对应的固件,然后将固件拷贝到板子的磁盘中即可。 >官方的固件下载地址:[https://circuitpython.org/board/circuitplayground_express/](https://circuitpython.org/board/circuitplayground_express/) 接着我们需要在板子的磁盘中新建一个名为`code.py`的文件,然后将我们的代码拷贝到这个文件中即可。 Vscode中只需要搜索CircuitPython插件,然后安装即可。只要在工作区根目录存在`code.py`文件,扩展就会激活,自动更新`adafruit_CircuitPython_Bundle` 库。 >手动触发更新库的方法是:在Vscode的命令面板(使用`Ctrl + shift + P`打开)中搜索`CircuitPython: Update Libraries`,然后点击即可。 如果你的板子没有自动识别,可以在Vscode的设置中搜索`CircuitPython`,然后将`CircuitPython: Port`设置为你的板子所在的端口即可。 #### MakeCode MakeCode 是微软开发的一款基于图形化编程的在线编程工具,它支持 Adafruit Circuit Playground Express,我们只需要在浏览器中打开 MakeCode 的网站,然后选择 Adafruit Circuit Playground Express,即可开始编程。 这里是 MakeCode 的网站:[https://makecode.adafruit.com/](https://makecode.adafruit.com/) > 注:烧录固件时,需要将板子连接到电脑,然后按下板子上的RESET键,此时板子会出现一个名为CPLAYBOOT的磁盘,将固件拷贝到这个磁盘中即可。 官方的烧录固件教程:[https://learn.adafruit.com/adafruit-circuit-playground-express/downloading-and-flashing](https://learn.adafruit.com/adafruit-circuit-playground-express/downloading-and-flashing) 这是我在adafruit教学网站找到的外设与编程块的对应图,感觉不错,放上来给大家看看。 ![](https://cdn-learn.adafruit.com/guides/cropped_images/000/001/667/medium640/cpwithblocks.jpg?1515090257) Code.org 也有类似的在线编程工具,也可以用来编程 Adafruit Circuit Playground Express。不过需要先烧录一个[uf2固件](https://cdn-learn.adafruit.com/assets/assets/000/051/187/original/FIRMATA_2018-2-19.UF2?1519102528)。教程地址:[https://learn.adafruit.com/adafruit-circuit-playground-express/code-org-csd](https://learn.adafruit.com/adafruit-circuit-playground-express/code-org-csd) ### 入门与基础任务 #### 板载LED点亮 Circuit Playground Express上有许多LED,可以通过编程控制其亮灭、颜色等属性。接下来,我们将通过简单的代码,实现板载LED的点亮。 ```cpp #include Adafruit_CircuitPlayground cplay = Adafruit_CircuitPlayground(); void setup() {  // 初始化函数   cplay.begin();   cplay.setBrightness(20); } void loop() {  // 主函数逻辑写在这里面   for (int i = 0; i < 10; i++) {     cplay.setPixelColor(i, 255, 0, 0); // 设置LED为红色   }   cplay.redLED(HIGH);      // 点亮板载红色LED   delay(500);   cplay.clearPixels();   cplay.redLED(LOW);   delay(500); } ``` 在这段代码中,我们引入了`Adafruit_CircuitPlayground.h`这个库,然后创建了一个`Adafruit_CircuitPlayground`对象`cplay`,在`setup`函数中,我们调用了`cplay.begin()`函数来初始化外设。 >调用begin函数可以方便的初始化板载的各种外设,如果不调用这个函数,板载LED将无法使用。 #### 控制板载炫彩LED,跑马灯点亮和颜色变换 ```cpp #include Adafruit_CircuitPlayground cplay = Adafruit_CircuitPlayground(); void setup() {   cplay.begin();   cplay.setBrightness(20); } void loop() {   if (cplay.slideSwitch()) {     for (int i = 0; i < 10; i++) {       cplay.setPixelColor(i, 255, 0, 0); // 设置LED为红色       delay(100);       cplay.clearPixels();     }     for (int i = 0; i < 10; i++) {       cplay.setPixelColor(i, 0, 255, 0); // 设置LED为绿色       delay(100);       cplay.clearPixels();     }     for (int i = 0; i < 10; i++) {       cplay.setPixelColor(i, 0, 0, 255); // 设置LED为蓝色       delay(100);       cplay.clearPixels();     }   } else {     for (int i = 0; i < 10; i++) {       cplay.setPixelColor(i, cplay.colorWheel(25 * i));       delay(100);       cplay.clearPixels();     }   } } ``` 在这段代码中,我们使用了`cplay.slideSwitch()`函数来判断板子上的滑动开关是否打开,如果打开,我们就会依次点亮板载LED为红色、绿色、蓝色,然后熄灭。如果滑动开关没有打开,我们就会依次点亮板载LED为彩虹色,然后熄灭。 流程图如下: ```flow st=>start: 开始 cond=>condition: 检测滑动开关是否打开 op1=>operation: 点亮板载LED为红色、绿色、蓝色 op2=>operation: 点亮板载LED为彩虹色 e=>end: 结束 st->cond cond(yes)->op1->e cond(no)->op2->e ``` #### 监测环境温度和光线,通过板载LED展示舒适程度 ```cpp #include Adafruit_CircuitPlayground cplay = Adafruit_CircuitPlayground(); void setup() {   cplay.begin();   cplay.setBrightness(20); } void loop() {   float temp = cplay.temperature();   int light = cplay.lightsensor();   if (temp > 25) {     for (int i = 0; i < 10; i++) {       cplay.setPixelColor(i, 255, 0, 0); // 设置LED为红色     }   } else if (light > 100) {     for (int i = 0; i < 10; i++) {       cplay.setPixelColor(i, 0, 255, 0); // 设置LED为绿色     }   } else {     for (int i = 0; i < 10; i++) {       cplay.setPixelColor(i, 0, 0, 255); // 设置LED为蓝色     }   } } ``` 在这段代码中,我们使用了`cplay.temperature()`函数来获取环境温度,使用了`cplay.lightLevel()`函数来获取环境光线强度,然后根据温度和光线强度来控制板载LED的颜色。 流程图如下: ```flow st=>start: 开始 op1=>operation: 获取环境温度 op2=>operation: 获取环境光线强度 cond1=>condition: 温度是否大于25度 cond2=>condition: 光线强度是否大于100 op3=>operation: 设置LED为红色 op4=>operation: 设置LED为绿色 op5=>operation: 设置LED为蓝色 st->op1->cond1 cond1(yes)->op3 cond1(no)->op2->cond2 cond2(yes)->op4 cond2(no)->op5 ``` #### 接近检测——设定安全距离并通过板载LED展示,检测到入侵时,发起声音报警 ```cpp #include Adafruit_CircuitPlayground cplay = Adafruit_CircuitPlayground(); const uint8_t spDANGER[] PROGMEM = {0x0A,0x28,0x30,0x6C,0xD4,0xC7,0x54,0x19,0xAA,0x9B,0xD5,0x34,0x6B,0xCA,0xEE,0x6B,0x56,0xDD,0xBD,0xA9,0x44,0xAC,0x59,0xD5,0x08,0xC1,0x9C,0xB1,0x7A,0x65,0x33,0x24,0x72,0xE7,0xAC,0x95,0x8C,0x64,0xE0,0x13,0x95,0x57,0xD4,0xBD,0x50,0x8D,0x45,0x19,0x51,0xB3,0x98,0x61,0xAE,0x64,0xA4,0xCD,0x60,0x94,0x85,0xD2,0x90,0x47,0x41,0x35,0xEA,0xEA,0x5A,0x73,0x4A,0x99,0xA0,0x38,0x09,0xC0,0x76,0x42,0xA3,0x9C,0xDA,0x94,0x35,0xF2,0x8C,0xB1,0x66,0x25,0x0D,0xDB,0x3C,0x86,0x9A,0x4B,0xA0,0x35,0xFB,0x98,0x4B,0x72,0xE2,0xB3,0x6C,0x6D,0xCB,0x43,0xC8,0x47,0xF2,0xA5,0x23,0x6F,0x21,0x6F,0xCE,0x16,0x8E,0xBC,0x89,0x2B,0xB5,0x6F,0x38,0xCB,0x32,0xD2,0x96,0x6C,0xEE,0x2C,0xDB,0x48,0x5B,0xF2,0xB9,0xAB,0x2C,0x11,0x2F,0xEE,0x1D,0xEE,0x52,0x07,0x25,0x43,0xFB,0xFF,0x03}; void setup() {   Serial.begin(9600);   Serial.println("Circuit Playground test!");   cplay.begin();   cplay.setBrightness(10);   pinMode(A10, INPUT);  // 接近传感器   pinMode(25, OUTPUT);  // 发射红外   digitalWrite(25, LOW); } void loop() {   for (int i = 0; i < 30; i++) //随便写的,因为直接激活红外没作用   {     digitalWrite(25, HIGH);     delayMicroseconds(10);     digitalWrite(25, LOW);     delayMicroseconds(10);   }   int val = analogRead(A10);   Serial.println(val);  //读取模拟量的值用的   int color = map(val, 300, 700, 150, 255);   for (int i = 0; i < 10; i++) {     cplay.setPixelColor(i, cplay.colorWheel(color));   }   if (val > 500)     cplay.speaker.say(spDANGER); //"你不要过来啊!"   else     cplay.speaker.end(); } ``` 在这段代码中,我们使用了`analogRead(A10)`函数来读取板子上的接近传感器的值,然后根据这个值来控制板载LED的颜色,当接近传感器的值大于500时,我们就会发出声音报警。 流程图如下: ```flow st=>start: 开始 op1=>operation: 读取接近传感器的值 op2=>operation: 设置LED颜色 op3=>operation: 发出声音报警 cond=>condition: 判断接近传感器的值是否大于500 e=>end st->op1->cond cond(yes)->op3->op2->e cond(no)->op2->e ``` #### 任务进度 - [x] 入门任务:开发环境搭建,板载LED点亮 - [x] 基础任务一:控制板载炫彩LED,跑马灯点亮和颜色变换 - [x] 基础任务二:监测环境温度和光线,通过板载LED展示舒适程度 - [x] 基础任务三:接近检测——设定安全距离并通过板载LED展示,检测到入侵时,发起声音报警 - [ ] 进阶任务:制作不倒翁——展示不倒翁运动过程中的不同灯光效果 - [ ] 创意任务(选做,选择其中一个或多个都可)   - [ ] 创意任务一:有创意的可穿戴装饰——可结合多种传感器和灯光效果展示   - [ ] 创意任务二:章鱼哥——章鱼哥的触角根据环境声音的大小,章鱼哥的触角可舒展或者收缩   - [ ] 创意任务三:水果钢琴——通过触摸水果弹奏音乐,并配合灯光效果

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

  • 2024-06-14
  • 回复了主题帖: 测评入围名单:超小型 Linux 开发套件:Quantum Tiny Linux(带 SoM 和扩展板)

    恭喜三位大佬 以后每周就来论坛蹲连载看了

  • 2024-06-07
  • 回复了主题帖: 最近很火的麦当劳对讲机拆解,看看内部结构究竟啥样?

    okhxyyo 发表于 2024-6-6 10:58 这个证咋考?还是第一次听说这个证 CRAC首页-中国无线电协会业余无线电分会 背题就能考,和驾照差不多的感觉。 今年开始考试加了点限制,需要持有电台一段时间才能考下一个等级,不过不影响A类的考核。

最近访客

< 1/1 >

统计信息

已有4人来访过

  • 芯积分:92
  • 好友:--
  • 主题:4
  • 回复:10

留言

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


现在还没有留言