- 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类的考核。