社区首页
技术讨论创新帖
全部新帖
资料区
社区活动
联系管理员
★ 社区积分制度
★ 新手必读
★ 申请版主★
请
登录
后使用快捷导航
没有帐号?
注册
首页
|
电子技术
|
嵌入式
模拟电子
单片机
电源管理
传感器
半导体
电子应用
|
工业控制
物联网
汽车电子
网络通信
医疗电子
手机便携
测试测量
安防电子
家用电子
机器人
新能源
电子头条
|
社区
|
论坛
测评
博客
大学堂
|
下载
|
下载中心
电路图
精品文集
电路图
|
参考设计
|
Datasheet
|
活动
|
直播
datasheet
datasheet
文章
搜索
登录
注册
中文
En
论坛
切换旧版
电子工程世界-论坛
»
论坛
›
专业技术中心
›
DigiKey得捷技术专区
›
【Follow me第二季第1期】 入门与基础任务(使用Platfor ...
返回列表
发新帖
回复
阅
413
|
回
1
iexplore123
当前离线
一粒金砂(中级)
最后登录
2025-2-8
在线时间
25 小时
威望
100分
芯积分
120分
(兑换)
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-8
在线时间
25 小时
威望
100分
芯积分
120分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
46
帖子
3
TA的资源
一粒金砂(中级)
+ 好友
私信
沙发
楼主
|
发表于2024-7-31 09:46
只看该作者
markdown的流程图果然没法正常显示啊,下次修改了 :(
此帖出自
DigiKey得捷技术专区论坛
回复
举报
返回列表
发新帖
回复
您需要登录后才可以回帖
登录
|
注册
发表回复
回帖后跳转到最后一页
活动
更多>>
有奖直播 | TI 助力机器人电机控制系统设计
DigiKey 应用探索站 | 无线技术盛宴第二趴
有奖直播 | ADI 超低功耗 MCU MAX326xx 系列介绍
走近 AI 重磅新品 STM32N6,解锁在 MCU 部署高性能、节能型边缘 AI!答题有好礼~还有开发板等你拿!
Microchip 直播|多相降压电源控制技术的发展与探讨 报名中!
安世半导体智能工业应用探索站,闯关赢好礼!
24年年终盘点来啦!精选强推:原创、测评、拆解、视频、资料
PI 电源小课堂:集成式半桥驱动IC BridgeSwitch 2, 助力高效永磁同步电机逆变器的设计
开源项目
更多>>
使用 NXP Semiconductors 的 BGU7258 的参考设计
MAXREFDES1186:采用MAX17595的7.5W 3.3V离线反激转换器
基于ESP12F的智能插排
基于MCP79410 I2C RTCC应用电路的完整电子手表
LT3973IDD-5 1.8V 降压转换器的典型应用
ADA4610-2ACPZ-R7等效前置放大光电二极管电路典型应用电路
使用 Silicon Labs 的 C8051F001 的参考设计
LT6656BCS6-2.5、2.5V 电压基准作为微功率稳压器的典型应用
用于DSL调制解调器的1.2V、1.8V DC转DC多路输出电源
立创开源|N32G430C8L7-StartKit评估板
随便看看
关于研究精密监测仪器对在不同地区农作物的土壤肥力、生长发育、病虫害的数据采集和分o析处理
电子小白的农学毕业生想转行研究硬件加数字加农业有多大的可行力?求回复
不同方式接地的区别?
基于VI转换芯片LTS117的温度变送器方案分享
《VHDL基础及经典实例开发》源程序
跪求AD603实用AGC电路,最好是可以直接使用的,急求
请教如何使Keil直接下载程序到外部NANDFLASH
实际不稳定问题和稳定方案
EEWORLD大学堂----ARM9嵌入式视频教程(天祥电子)
查找数据手册?
搜索
EEWorld Datasheet 技术支持
热门标签
源代码
单片机
放大器
TI
ST
电源
分立器件
传感器
测试测量
模拟
三平衡混频器
静电电压表
光敏三极管
堆栈溢出
多址技术
直流UPS
X射线
光缆
SoC
GSM
相关文章
更多>>
英飞凌2025年一季报电话会:预计2025财年展望营收或略有增长
2025 年是英飞凌独立上市 25 周年,自从西门子剥离之后,英飞凌摸索出了一条以“数字化和脱碳化”为主要发展脉络的经营理念。 日前,英飞凌召开了2025财年一季报证明,数字化和脱碳化的未来正在
Intel全新处理器阵容曝光:最高52个内核/144MB缓存
2月8日消息,10年前谁能想到,Intel和AMD会是现在这种竞争局面呢? 根据最新爆料,Ultra 200S系列“失利”后,Intel有望痛定思痛。近日,WccfTech分享了Intel未来的CP
三星电池隐患引发多品牌召回,涉及福特、奥迪、Stellantis 旗下超 18 万辆汽车
2 月 8 日消息,三星宣布了一项大规模召回计划,涉及福特、奥迪以及 Stellantis 旗下的 180,196 辆汽车,这些车辆所搭载的高压电池组存在故障风险,可能会引发火灾。 在所有受影响的品
美国对华半导体限制新规生效:台积电暂停向部分IC设计厂商发货
曾控诉特斯拉抄袭:美国氢电动卡车制造商Nikola濒临破产
消息称苹果最快下周发布新款iPhone SE 有望月内发售
PI CEO:氮化镓将成为高压开关的首选
面临市场压力,消息称美国工业巨头霍尼韦尔将一拆为三
英特尔与日本AIST合作开发下一代量子计算机:万级量子比特
Videtronic开发出利用 GMSL2 延长树莓派摄像头电缆的方案
新帖速递
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)
有奖直播 | TI 助力机器人电机控制系统设计
直播时间:2月27日(周四)上午10:00
活动奖励:家具壶、保温杯、充电线
查看 »
有奖直播:ADI 超低功耗 MCU MAX326xx 系列介绍
直播时间:3月20日(周四) 上午10:00
活动奖励:双肩包、充电宝、小夜灯
查看 »
【回帖赢京东卡】无线技术盛宴第二趴
【活动时间】即日起—2025年2月28日
【活动好礼】30元京东卡
查看 »
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
/9
电子工程世界版权所有
京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传感器与低功耗无线技术论坛