一.平台背景与关联
如果你是初学者建议阅读这一章节,搞清楚平台的结构对于开发而言有事半功倍的效果
(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
最后,感谢各位阅读到最后,希望能对你们有所帮助!