社区首页
技术讨论创新帖
全部新帖
资料区
社区活动
联系管理员
★ 社区积分制度
★ 新手必读
★ 申请版主★
请
登录
后使用快捷导航
没有帐号?
注册
首页
|
电子技术
|
嵌入式
模拟电子
单片机
电源管理
传感器
半导体
电子应用
|
工业控制
物联网
汽车电子
网络通信
医疗电子
手机便携
测试测量
安防电子
家用电子
机器人
新能源
电子头条
|
社区
|
论坛
测评
博客
大学堂
|
下载
|
下载中心
电路图
精品文集
电路图
|
参考设计
|
Datasheet
|
活动
|
直播
datasheet
datasheet
文章
搜索
登录
注册
中文
En
论坛
切换旧版
电子工程世界-论坛
»
论坛
›
专业技术中心
›
DigiKey得捷技术专区
›
【Follow me第二季第1期】 入门与基础任务(使用Platfor ...
返回列表
发新帖
回复
阅
408
|
回
1
iexplore123
当前在线
一粒金砂(中级)
最后登录
2025-2-1
在线时间
24 小时
威望
100分
芯积分
118分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
iexplore123
46
帖子
3
TA的资源
一粒金砂(中级)
+ 好友
私信
楼主
发表于2024-7-30 19:56
只看该作者
【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,可以通过这三个触点对板子进行调试。 原理图
Adafruit Circuit Playground Express.sch
(549.53 KB, 下载次数: 1)
2024-7-30 19:59 上传
点击文件名下载附件 原理图
PCB设计图
Adafruit Circuit Playground Express.brd
(2.49 MB, 下载次数: 0)
2024-7-30 19:59 上传
点击文件名下载附件 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展示,检测到入侵时,发起声音报警 - [ ] 进阶任务:制作不倒翁——展示不倒翁运动过程中的不同灯光效果 - [ ] 创意任务(选做,选择其中一个或多个都可) - [ ] 创意任务一:有创意的可穿戴装饰——可结合多种传感器和灯光效果展示 - [ ] 创意任务二:章鱼哥——章鱼哥的触角根据环境声音的大小,章鱼哥的触角可舒展或者收缩 - [ ] 创意任务三:水果钢琴——通过触摸水果弹奏音乐,并配合灯光效果
此帖出自
DigiKey得捷技术专区论坛
点赞
关注
(0)
回复
分享
扫一扫,分享给好友
复制链接分享
链接复制成功,分享给好友
举报
提升卡
变色卡
千斤顶
iexplore123
iexplore123
当前在线
一粒金砂(中级)
最后登录
2025-2-1
在线时间
24 小时
威望
100分
芯积分
118分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
46
帖子
3
TA的资源
一粒金砂(中级)
+ 好友
私信
沙发
楼主
|
发表于2024-7-31 09:46
只看该作者
markdown的流程图果然没法正常显示啊,下次修改了 :(
此帖出自
DigiKey得捷技术专区论坛
回复
举报
返回列表
发新帖
回复
您需要登录后才可以回帖
登录
|
注册
发表回复
回帖后跳转到最后一页
活动
更多>>
DigiKey 应用探索站 | 无线技术盛宴第二趴
有奖直播 | ADI 超低功耗 MCU MAX326xx 系列介绍
走近 AI 重磅新品 STM32N6,解锁在 MCU 部署高性能、节能型边缘 AI!答题有好礼~还有开发板等你拿!
Microchip 直播|多相降压电源控制技术的发展与探讨 报名中!
安世半导体智能工业应用探索站,闯关赢好礼!
24年年终盘点来啦!精选强推:原创、测评、拆解、视频、资料
PI 电源小课堂:集成式半桥驱动IC BridgeSwitch 2, 助力高效永磁同步电机逆变器的设计
Microchip喊你探索dsPIC33A 芯片,70份好礼等你赢!
开源项目
更多>>
NU1680 5W无线接收端
用于荧光照明的 1 灯 28W 调光灯驱动器
基于NFC PN532C106的应用电路
AOZ1210AI-EVB,使用AOZ1210AI DC-DC单步降压转换器的评估板
ADA4505-4ACBZ-R7 血糖仪中使用的四极黄油滤波器的典型应用电路
DC2581A-A,基于 LTC2341-18 双通道、18 位、666ksps SAR ADC 的演示板
【实物已验证】Duck版墨水屏驱动板-改版
LT3976IUDD 1.8V 降压转换器的典型应用电路
LTC3129-1 的典型应用 - 具有 1.3 uA 静态电流的 15V、200mA 同步降压-升压型 DC/DC 转换器
工业用PIC16 MCU开发系统
随便看看
DigiKey 应用探索站 | 无线技术盛宴第二趴
DigiKey应用探索站——无线技术盛宴第二趴来啦,小伙伴们,快来查收本月的无线技术干货~//当月好物•LT8418100V半桥GaN驱动器•MIC5501/2/3/4LDO•NCV8460高压侧智能分立驱动器•小信号P沟道和N沟道MOSFET•SRK1004同步整流控 ...
ROS2智能机器人开发实践-阅读分享9-机器人建模仿真
ROS2智能机器人开发实践-阅读分享8-cartograph建图
【MPS商城钜惠体验季】MPM54304开箱
【Sipeed 高云GW2A FPGA开发板】——ARM Cortex-M1软核处理器_参考设计例程测试(一)
Sipeed 高云GW2A FPGA开发板实现反park、svpwm
半桥、全桥、H型驱动
MPS整理_ACDC DCDC 的EMI设计概要
查找数据手册?
搜索
EEWorld Datasheet 技术支持
热门标签
源代码
单片机
放大器
TI
ST
电源
分立器件
传感器
测试测量
模拟
模拟电路和数字电路的区别
太阳能电池片
多路选择器
循环冗余码
迈斯纳效应
粒子群
像素点
DP接口
LM317
mJS
相关文章
更多>>
德州仪器 2024年Q4财报解析:中国市场增长亮眼,目前没有收到反垄断调查通知
在 2024 年第四季度收益电话会议上,德州仪器(TI)向外界展示了一些好消息,尤其是凸显了中国市场在其全球布局中的关键地位。 第四季度,TI 收入为 40 亿美元,环比下降 3%,比去年同期下
欧盟提议成立高级研究机构:专注于AI等战略技术以加强竞争力
据彭博社报道,欧盟将提议仿照美国政府实体建立一个高级研究项目机构,对战略技术进行投资,以此作为提高欧盟竞争力的更广泛努力的一部分。 欧盟还将呼吁为 AI 建设新的超级计算基础设施。知情人士及文件显示
传台积电报废三万片晶圆,三万片受损
晶圆代工龙头厂台积电位于南科的晶圆厂,受地震影响的机台设备移位、晶圆破损经过抢修后,供应链传出,3、 5纳米的先进制程晶圆十八厂,预计将于23日达100%复机,准备恢复正常生产,晶圆十四厂复机还没有
中国芯片出口连续14个月增长
特朗普退出巴黎协定,芯片业碳中和完了没?
汇顶科技 2024 年业绩亮眼,展现强劲发展韧性
谷歌母公司:美国AI难保证对华领先 不少方面是落后
消息称三星电子砍半晶圆代工部门 2025 年设备投资预算,陡降至 5 万亿韩元
史上最佳表现:SK 海力士 2024 年营业利润 23.5 万亿韩元
宇树发布“踢足球”机器人G1-Comp,网友:国足有救了
新帖速递
STM32和无源蜂鸣器播放声音的问题
车规级AECQ200介绍,混合铝电解电容器的选择
嵌入式教程_DSP技术_DSP实验箱操作教程:2-28 搭建轻量级WEB服务器实验
OPA847IDBVR运放器国产替代
AG32VF407测试UART
【得捷电子Follow Me第二期】第一章 收到货物的分享
请问这个红外接收头是什么型号?能用哪个型号代替?谢谢
出售全新未拆封ZYNQ 7Z020 FPGA核心板
用在锂电池供电的水表设置上的LORA模块,当有100块水表集中安装在一个楼道内时,节能
请问一下,当某个端口被设置为 RX0后,这个端口的输入输出方向还有必要设置吗
今年怎么这么难,比疫情时还难,三十了面临失业好迷茫
请教稳压管测试问题
【小华HC32F448测评】关于小华半导体的UART中断发送和PRINTF构造和重定向
【BIGTREETECH PI开发板】 HDMI输出测试
【BIGTREETECH PI开发板】+08.音频测试(zmj)
DigiKey 应用探索站 | 无线技术盛宴第二趴
当月好物、热门无线技术资源、特色活动、DigiKey在线实用工具,干货多多~
查看 »
开发板申请:拥有 AI 加持的 STM32N6570-DK 免费试用 !
申请时间:即日起-3月2日
查看 »
安世半导体智能工业应用探索站,闯关赢好礼!
点击页面内“开始探索”按钮,填写并提交表单;
请根据序号依次完成3个安世半导体智能工业应用的探索,并根据给出的资料完成共计9题(每个应用3题),答对5题以上的玩家即可获得抽奖资格;
每人仅有一次参与答题的机会,请慎重作答,活动结束后,我们将抽取30位玩家赠送礼品。
查看 »
Microchip 直播|多相降压电源控制技术的发展与探讨 报名中!
直播主题:多相降压电源控制技术的发展与探讨
直播时间:2025年2月25日(星期二)上午10:30-11:30
快来报名!
查看 »
答题赢好礼,PI电源小课堂第3期来啦!
本期内容:集成式半桥驱动IC BridgeSwitch 2, 助力高效永磁同步电机逆变器的设计
活动时间:即日起-2月28日
看视频答题即可赢取京东卡!
查看 »
本周精选下载推荐:电源管理基础Dummies
本周小编给大家带来一本超简单、超干货的电子书——《电源管理基础Dummies》!内容深入浅出,排版舒服简洁,分分钟能get到电源管理最核心的知识内容。
查看 »
关闭
站长推荐
1
/6
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
电信业务审批[2006]字第258号函
京公网安备 11010802033920号
Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复
返回顶部
返回列表
论坛首页
版块列表
专业技术中心
TI技术论坛
ST传感器与低功耗无线技术论坛
ADI参考电路
DigiKey得捷技术专区
ADI · 世健工业技术
电子技术交流
边缘AI
嵌入式系统
单片机
国产芯片交流
电机控制
FPGA/CPLD
模拟电子
电源技术
无线连接
传感器
PCB设计
综合技术交流
下载中心专版
大学堂专版
测评中心专版
行业应用
汽车电子
机器人开发
工业自动化与控制
能源基础设施
医疗电子
消费电子
创意与实践
电子竞赛
DIY/开源硬件专区
淘e淘
创意市集
休息一下
聊聊、笑笑、闹闹
工作这点儿事
为我们提意见&公告
EEWorld颁奖专区
信息发布
最新帖子
最新帖子
最新回复
精华
消灭零回复
测评中心
活动中心
积分兑换
E金币兑换
芯积分
厂商专区
TI技术论坛
ST传感器与低功耗无线技术论坛