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

最后,感谢各位阅读到最后,希望能对你们有所帮助!

猜你喜欢

转载自blog.csdn.net/weixin_41598714/article/details/97641453