首次VSCode的PIO Home写Arduino代码给ESP32CAM记录

2025.3.24w
在这里插入图片描述(原来叫PaltformIO IDE,不叫PIO,好的,记住了吗!)

1.下载安装(已经装好了,以后补上)
在这里插入图片描述
2.在vscode中创建PIO工程文件夹(如上图).
在这里插入图片描述
如果不保存在默认位置,取消勾选,选择自己的工程位置.
在这里插入图片描述
创建好工程后,自动打开工程目录下的platformio.ini的工程配置文件(PIO主页)
在这里插入图片描述
3.如果不小心关闭了PIO Home界面,可以在platformio的图标下的QuickAccess快速访问下的Open打开主页(如上图)(终于找到答案了,花了1小时是吗?)

在这里插入图片描述
4.好了,开始写代码了,打开vscode的资源管理器>工程目录>src目录>main.cpp文件(如上图)
默认的代码,又个默认函数myFunction()的加法返回函数,然后在系统setup初始化执行给到result全局变量,然后进入系统loop循环.
在这里插入图片描述

在这里插入图片描述
好了,问kimi得到了一段代码,直接拷贝.
(更正一下,这里的ESP32CAM开发板Flash的LED灯需要给高电平1点亮)

在这里插入图片描述
在这里插入图片描述
5.点击platformio图标>project Tasks选择开发板型号>esp32cam>General通用>Build创建编译>success成功编译,显示了RAM和Flash大小(ESP32CAM默认的RAM运存(内存)和Flash程序存储(硬盘)约4MB,这段代码编译后RAM上电估计是21K和251KB的程序)
(编译的快捷键是Ctrl+Alt+B)

在这里插入图片描述
6.点击platformio图标>project Tasks选择开发板型号>esp32cam>General通用>Upload上传按钮(如果文件已经编译过PIO就不会再次编译,节省时间,不像arduino每次上传都编译,可能我不知道有直接上传编译的命令按钮吧!知道的可以回复我,我是不是问下AI先?问了要安装Arduino CLI插件,下次试试,还有没有其他方法)(上传快捷键:Ctrl+Alt+U)
这时要先按住GPIO0给低电平0
(在下载板上USB口向下的左边按钮),
再按一下开发板上的RST按钮重置(SD卡背面)
ESP重启后检测到IO0低电平就进入下载模式.
再这时就可以松开IO0了,等待上位机电脑写入数据

在这里插入图片描述
如果上传时红色提示[upload] Error 2,[FAILED] Took错误,请检测下端口是不是被占用了,需要关闭其他串口调试工具,如Arduino的串口监视器(如上图)

7.上传完成.LED亮了,非常亮,亮瞎我的狗眼.发热了LED,赶紧进入下载模式(看上面6练习几次)

#include "Arduino.h"

#define LED_PIN 4

void setup() {
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, HIGH); // 更正下,这开发板的LED默认是LOW,所以要点亮LED灯给高电平1,
}

void loop() {
  // 保持LED灯常亮
}
#include "Arduino.h"

#define LED_PIN 4
#define PWM_CHANNEL 0 // 使用PWM通道0
#define PWM_RESOLUTION 8 // 设置PWM分辨率为8位(0-255)
#define PWM_FREQUENCY 5000 // 设置PWM频率为5000Hz

void setup() {
  // 配置PWM
  ledcSetup(PWM_CHANNEL, PWM_FREQUENCY, PWM_RESOLUTION);
  // 将PWM通道绑定到GPIO4
  ledcAttachPin(LED_PIN, PWM_CHANNEL);
  // 设置PWM占空比为2
  ledcWrite(PWM_CHANNEL, 2);
}

void loop() {
  // 保持LED灯以设置的占空比亮着
}

把代码改成占空比高电平2%LED灯就暗下来了(开发板发出滋滋的声音,DM版的ESP32CAM质量问题,下次用原版AI试试)
占空比的计算方式取决于PWM信号的分辨率。
在代码中,我们设置了PWM分辨率为8位,这意味着占空比的取值范围是0到255(因为2的8次方是256)。因此,占空比的计算公式为:
占空比百分比 = (占空比值 / 255) * 100%
所以,当占空比值为2时,占空比百分比为:
(2 / 255) * 100% ≈ 0.78%
这意味着PWM信号的高电平时间占整个周期的约 0.78%。

#include "Arduino.h"

#define LED_PIN 4
#define PWM_CHANNEL 0 // 使用PWM通道0
#define PWM_RESOLUTION 8 // 设置PWM分辨率为8位(0-255)
#define PWM_FREQUENCY 5000 // 设置PWM频率为5000Hz

void setup() {
  // 配置PWM
  ledcSetup(PWM_CHANNEL, PWM_FREQUENCY, PWM_RESOLUTION);
  // 将PWM通道绑定到GPIO4
  ledcAttachPin(LED_PIN, PWM_CHANNEL);
  // 设置PWM占空比为1%=2.55
  ledcWrite(PWM_CHANNEL, 0.01*255);
}

void loop() {
  // 保持LED灯以设置的占空比亮着
}

设置PWM占空比高电平为1%=2.55

#include "Arduino.h"

#define LED_PIN 4
#define PWM_CHANNEL 0 // 使用PWM通道0
#define PWM_RESOLUTION 8 // 设置PWM分辨率为8位(0-255)
#define PWM_FREQUENCY 5000 // 设置PWM频率为5000Hz

void setup() {
  // 配置PWM
  ledcSetup(PWM_CHANNEL, PWM_FREQUENCY, PWM_RESOLUTION);
  // 将PWM通道绑定到GPIO4
  ledcAttachPin(LED_PIN, PWM_CHANNEL);
  // 设置PWM占空比为1%=2.55
  ledcWrite(PWM_CHANNEL, 0.01*255);
}

void loop() {
  // 3秒后开始逐渐设置占空比为5%后再次逐渐减小到1%,一直循环
  for (int i = 2; i < 12; i++) {
    ledcWrite(PWM_CHANNEL, i);
    delay(100);
  }
  for (int i = 12; i >= 2; i--) {
    ledcWrite(PWM_CHANNEL, i);
    delay(100);
  }   
  for (int i = 2; i >= 0; i--) {
    ledcWrite(PWM_CHANNEL, i);
    delay(500);
  }   
}

呼吸灯效果

8.赶紧看C++面向对象教程,创建对象去吧!

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐