ARDUINO开发入门:基于PlatformIO平台使用 FastLED 控制 WS2812 LED
PlatformIO是一个用于物联网开发的开源生态系统。它提供跨平台的开发环境和统一的调试器,还支持远程单元测试和固件更新...
简单来说,就是不管你用什么型号的芯片,都可以直接在platformio这个平台上直接编码烧录。对于有些芯片,官方的编码软件可能是你没有接触过的,这时你就需要熟悉新得软件,而platformio集成了大多数芯片的SDK,使得在这一个平台上就可以解决绝大部分的问题。
安装PlatformIO时,大部分可能卡在Core部分无法安装,所以直接去官方下载Core并安装,首先给出官方文档
-
安装python
官方文档中,安装PlatformIO是基于python来实现的,为了省去python配置环境路径的步骤,选择Microsoft Store 中下载python 3.7,高版本可能出现问题
安装完python后,先win+R 打开CMD ,输入python,这时如果弹出了Python的版本信息,则 为安装成功
-
安装virtualenv
输入pip install virtualenv 安装python的虚拟环境管理包 virtualenv
-
创建虚拟环境
创建格式为:virtualenv 虚拟环境名
如:virtualenv andy
由于Platformio默认安装在C:\Users\Username中,所以要在Username下创建一个名为.platformio 的文件夹( 这里的USername表示登入的windows的用户的文件名)
然后win + R 打开cmd ,输入指令
call C:\
cd C:\Users\Username\.platformio
virtualenv andy
- 安装虚拟环境必备组件
call C:\
cd C:\Users\Username\.platformio
andy\Scripts\activate
pip install git
pip install platformio
- 正式安装Platformio
这时就可以回到VScode,在拓展中选择旧版本安装,选择的python路径就是虚拟环境内的python路径,等待上半小时,差不多就安装完了(可能还要失败个几次)
VSCode 下 PlatformIO 的安装教程
也可通过 我的博客 访问
1. 安装VSCode软件
前往VSCode官网 ,建议下载 System Installer 版本的安装包,该版本安装在非用户目录,例如C盘根目录。如果下载速度太慢可查看 国内下载vscode速度慢问题解决 文章解决。

下载完毕后进行安装,安装时建议按如下进行勾选。
安装完毕后打开软件,安装中文插件。

2. 设置PlatformIO IDE使用非内置Python
此步骤可跳过,直接跳转到 3. 安装PlatformIO插件 。
PlatformIO依靠Python运行,默认情况下会重新下载一个Python,如果电脑上已经安装过Python且不想再安装一次的,可进行如下步骤,否则直接前往 3. 安装PlatformIO插件 。
按下图打开设置的 JSON 文件。


打开配置文件后,输入如下两条配置信息,设置PlatformIO IDE使用非内置Python,其中 customPATH 为电脑已装的Python路径,需按照实际情况填写。
"platformio-ide.useBuiltinPython": false,
"platformio-ide.customPATH": "C:\\Users\\yourname\\AppData\\Local\\Programs\\Python\\Python310\\Scripts",
3. 安装PlatformIO插件
在VSCode中根据下图步骤安装PlatformIO IDE插件。

插件安装完毕后,VSCode右下角会出现PlatformIO的下载进程,等待其下载完毕后即可。由于PlatformIO的服务器在国外,下载速度特别慢,如一直无法下载成功,可前往 4. 手动添加PlatformIO数据包 。
下载完毕后,PlatformIO只下载了公共的数据包,没有下载特定板子的数据包,因此如需使用他人的工程,需依照该工程所用芯片新建一个工程,在第一次新建工程时,PlatformIO会下载好该工程所需的文件。
假设需运行的工程所使用的芯片为ESP32-C3,使用的框架为arduino,那么在第一次运行该工程前需先按照如下步骤新建一次工程,只有第一次需要,后续就可以直接运行了。
点击VSCode左下角的桌面图标。
点击 New Project 。

设置工程信息。
点击 Finish 后,需要较长的一段时间,此阶段PlatformIO会下载该工程所需的文件,新建完成后,即可关闭此工程(直接关闭VSCode软件)。接着打开我们所需运行的工程即可(在工程路径下,鼠标右键后,选择通过 Code 打开)。
左下角的图标含义如图。

4. 手动添加PlatformIO数据包
如在进行 3. 安装PlatformIO插件 时已正常下载完成,则无需进行此步骤。
如无法正常下载,则可进行此步骤。
PlatformIO相关的文件均在路径 C:\Users\yourname\.platformio 下,其中 yourname 为电脑用户名称,因此将下载好的文件复制到此处即可。

下面提供我的PlatformIO数据包,包含ESP32和ESP8266的arduino框架。


PlatformIO平台下Arduino的开发过程-基于Visual Studio Code平台
一.平台背景与关联
如果你是初学者建议阅读这一章节,搞清楚平台的结构对于开发而言有事半功倍的效果
(1)什么是Arduino?
Arduino是一家制作开源硬件和软件的公司,同时兼有项目和用户社区,该公司负责设计和制造单板微控制器和微控制器包,用于构建数字设备和交互式对象,以便在物理和数字世界中感知和控制对象。该项目的产品是按照GNU宽通用公共许可证(LGPL)或GNU通用公共许可证(GPL)[1]许可的开源硬件和软件分发的,Arduino允许任何人制造Arduino板和软件分发。 Arduino板可以以预装的形式商业销售,也可以作为DIY包购买。
Arduino电路板设计使用各种微处理器和控制器。这些电路板配有一组数字和模拟I/O引脚,可以连接各种扩展板或面包板(屏蔽板)和其他电路。这些电路板具有串行通信接口,包括某些型号上的通用串行总线(USB),也用于从个人计算机加载程序。微控制器通常使用C/C++编程语言。除了使用传统的编译工具链之外,Arduino项目还提供了一个基于Processing语言项目的集成开发环境。
Arduino项目始于2003年,作为意大利伊夫雷亚地区伊夫雷亚交互设计研究所的学生项目,目的是为新手和专业人员提供一种低成本且简单的方法,以创建使用传感器与环境相互作用的设备执行器。适用于初学者爱好者的此类设备的常见示例包括简单机器人、恒温器和运动检测器。
Arduino这个名字来自意大利伊夫雷亚的一家酒吧,该项目的一些创始人过去常常会去这家酒吧。 酒吧以伊夫雷亚的Arduin命名,他是伊夫雷亚边疆伯爵,也是1002年至1014年期间的意大利国王[2]。
它使用 Atmel AVR 单片机,采用开放源代码的软硬件平台,构建于开放源代码 simple I/O 接口板,并具有使用类似 Java,C 语言的 Processing/Wiring 开发环境。
【https://zh.wikipedia.org/wiki/Arduino】
(2)什么是PlatformIO和Visual Studio Code
PlatformIO可以简单的理解为是Visual Studio Code(简称VS)的集成开发平台之一,属于VS的分支之一;它是一个GitHub上的开源项目,作者把这个平台称作An open source ecosystem for IoT development(物联网开发的开源生态系统),事实上它的开发语言不仅仅有Arduino,根据现在的版本来看至少支持5种编译语言;而VS属于由微软开发的免费、开源的代码编辑器,下面文章会详细介绍。
GitHub地址:https://github.com/platformio
Vs下载地址:https://visualstudio.microsoft.com/zh-hans/free-developer-offers/
二、开始搭建我们的开发环境
首先安装下载VS,安装过程比较简单,双击安装包选择路径或默认下一步即可。


打开我们的平台

选择“拓展”

在搜索框内搜索“PlatformIO”,点击第一个“安装”

接下来开始创建项目
选择左下角“HOME”的logo,进入ide的主界面。

选择“new project”来创建我们的项目

项目名称:不支持中文,仅仅支持(a-z,0-9,-,_)
板子型号:选择对应开发板型号,有近700种选择
框架(Framework):选择对应开发语言,这里支持5种,我们选择Arduino框架。

完成创建后点击“Finish”,稍等片刻,即可成功创建项目。
项目创建完成后,将自动创建项目文件。

项目主要文件结构

(1)展开项目文件后发现有一个命名为“src”的文件夹,里面的“main”文件就是我们
编写的主函数部分。
(2)展开项目文件后,图示第四行为“libdeps”文件用于存放libraries,也就是我们常常使用的库(库的安装使用过程将在下面介绍)
(3)最后一个文件名为“platformio.ini”,该文件有点类似Android的权限文件,一般我们开发需要在其添加烧录模式(stlink,jlink,Serial.....),并且我们在使用其他库函数之前需要在此文件夹中添加声明。
开发流程(添加开发板,导入库,编写ini文件,编译运行)
(1)添加开发板
首先如果是串口设备添加后将会显示CMOS端口,选择右下角“HOME”图表,进入主界面,选择“device”
如果电脑USB抠已经接入了串口设备,在电脑“设备管理器”和该页面显示。
如何是使用虚拟串口(jlink,stlink)这里不显示设备,如何判断虚拟串口设备有无接入:
在接入虚拟串口设别后,打开我们电脑的“设备管理器”,在“通用串行总线控制器”下查看。
串口模式下

虚拟串口模式下(jlink)

虚拟串口设备(stlink)

至此设备已完成接入
(2)导入库
同理,我们进入“HOME”主界面,选择“libraries”,在索引栏添加你想要添加的库名称
这里以“LiquidCrystal”为例子。

找到我们所习惯编写的库,点击标题

进入库后,安装库分为全局安装和单项目添加,个人推荐单项目添加,减少出错几率。

接下来我们要为项目导入库,选择install旁边的三点,选择“install to”
选择我们的项目名称,拉到底部点击install。

当我们看到提示信息“success”,至此,项目导入库成功。

我们发现我们的项目路径上已经添加了该库

(3) 编写ini文件
首先打开ini文件

首先我们添加我们串口,在后面添加一句
upload_protocol = jlink
如果是其他模式请参考官方文档
接下来我们声明库
在后面添加
-
lib_deps =
-
# Using a library name
-
LiquidCrystal
注意第二第三行强制缩进2个空格,不缩进将会报错,第三行填写库名。
至此,完成了ini文件的配置
接下来切换到main函数添加头文件并编写代码
-
#include <Arduino.h> #include <LiquidCrystal.h> #define pin 13 #define pin2 2 LiquidCrystal lcd(8,9,4,5,6,7); volatile float frequency; int sensorValue = 0; int j=0; int o=0; int a2d_data=0; void function(); void setup() { lcd.begin(16, 2); pinMode(13,INPUT); pinMode(2,INPUT); Serial.begin(9600); attachInterrupt(0,function,RISING); } void function() { j=j+1; } void view() { lcd.setCursor(4,0); lcd.print("monitor"); lcd.setCursor(0,1); lcd.print("number = "); lcd.print(a2d_data); lcd.setCursor(11,1); lcd.print("n="); lcd.print(j); } void logg() { if(digitalRead(pin2)==0) { j=j+1; return; } } void beginning() { digitalRead(pin); delay(100); digitalRead(pin2); delay(100); a2d_data=digitalRead(pin); o=digitalRead(pin); } void loop() { beginning(); delay(10); logg(); delay(10); view(); }
讲讲Arduino ide和PlatformIO 的一点区别
Arduino ide写基本函数delay(),digitalWrite()等时,不需要添加#include<Arduino.h>但在该平台必须添加才能调用
还有就是arduino main内部写函数,不需要前置声明(指函数写在调用之后),但是PlatformIO严格按照C的语法,这种情况需要添加前置声明。
接下来就可以对代码进行编译上传了

编译成功

上传成功
附加:
若要了解更多此平台库函数的用法,可以在此网站得到例程和补充说明
https://platformio.org/lib/search?query=keyword%253A%2522analog%2522
最后,感谢各位阅读到最后,希望能对你们有所帮助!
ESP32 开发入门(二):基于PlatformIO平台使用 FastLED 控制 WS2812 LED
本教程将带你从零开始使用 VSCode 和 PlatformIO IDE 开发 ESP32项目。主要通过配置ESP32-S3芯片的项目,实现使用 FastLED 库控制 WS2812 LED 灯在不同颜色之间的闪烁,带你入门ESP32从项目新建->项目配置->项目烧录的整个过程。
一、准备工作
1. 安装必要软件
环境搭建可参考ESP32开发入门:基于VSCode+PlatformIO环境搭建指南
2. 硬件准备
-
ESP32-S3 开发板
-
WS2812 LED 灯条或单个 LED
-
连接线若干
二、项目创建
-
打开 VSCode
-
点击左侧 PlatformIO 图标(类似小蚂蚁的标志)
-
在 PlatformIO 主页点击 "New Project"
-
填写项目信息:
-
Name: 项目名称
-
Board: 需要根据自己开发板选择对应的板卡(很重要)
-
Framework: 选择 "Arduino"
-
可自定义新建项目路径
-
-
点击 "Finish" 创建项目。入下图所示
![]()
项目新建完成后,对应的主函数和配置文件如下图所示
![]()
三、编写代码
-
打开
src/main.cpp文件 -
删除原有内容,替换为以下代码:
-
#include <Arduino.h> // #define FASTLED_RMT_MAX_CHANNELS 4 // 如需多通道可调整RMT数量 #include <FastLED.h> #define DATA_PIN 48 // ESP32-S3的GPIO48 #define NUM_LEDS 1 // 控制LED的数量(根据实际灯带长度修改) #define LED_TYPE WS2812B // 选择LED类型(根据实际灯带类型修改) #define COLOR_ORDER GRB // 选择颜色顺序(根据实际灯带颜色顺序修改) CRGB leds[NUM_LEDS]; // 创建LED数组 void setup() { FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS); FastLED.setBrightness(128); // 初始亮度(0-255) FastLED.clear(); FastLED.show(); } void loop() { // 显示红色(R, G, B) leds[0] = CRGB(255, 0, 0); FastLED.show(); delay(1000); // 显示绿色(注意某些灯珠需要GRB顺序) leds[0] = CRGB(0, 255, 0); FastLED.show(); delay(1000); // 显示自定义颜色(紫色) leds[0] = CRGB(148, 0, 211); FastLED.show(); delay(1000); }
四、项目配置
-
由于使用了FastLED这个库,所以需要将此库添加进项目;添加步骤见下图
![]()
2.双击FsatLED,选择把此库添加进对应的项目;步骤见下图

3.导入完成后会自动往配置文件PlatformIO.ini中添加lib_deps = fastled/FastLED@^3.9.15。入下图所示

五、编译项目
-
点击 VSCode 底部状态栏的 "√" 图标(或按快捷键 Ctrl+Alt+B)
-
等待编译完成,检查输出窗口是否有错误
项目编译成功入下图所示
![]()
六、下载程序到开发板
-
使用 USB 线连接 ESP32-S3 开发板到电脑,选择对应的COM口,如下图所示;不知道COM口的可以在电脑的设备管理器中查看。
![]()
-
点击 VSCode 底部状态栏的 "→" 图标(或按快捷键 Ctrl+Alt+U),等待上传完成即实现了程序烧录进对应的开发板中了,如下图所示。
![]()
七、验证结果
-
程序上传成功后,WS2812 LED 应该开始循环显示红、绿、蓝三种颜色,每种颜色持续1秒
-
可以打开串口监视器(点击底部插头图标)查看调试信息
八、扩展学习
-
尝试控制多个LED(把对应的控制数组长度添加为你想要控制的LED灯的数量即可)
-
实现彩虹渐变效果
-
添加外部控制(如按钮或传感器)
-
关于串联WS2812 LED灯的控制原理,推荐WS2812炫彩灯控魔术师,我愿称之为最好的视频教程。
希望这个教程对你有所帮助!如果有任何问题,可以参考PlatformIO官方文档或FastLED库的文档获取更多信息。
如果你对物联网、智能家居、无线传感器感兴趣,欢迎点赞收藏,此后会持续更新相关内容。
https://gitee.com/powes/,作者:前沿风暴,转载请注明原文链接:https://www.cnblogs.com/Kreos/p/19329767









浙公网安备 33010602011771号