Arduino成长日记2 - Arduino编程基础

2023-05-16

上一篇讲述了什么是Arduino以及各类Arduino开发板的参数,本篇开始介绍开发环境搭建以及一些编程基础。


Arduino开发环境

开发环境即Arduino项目的编程环境 – Arduino IDE,Arduino集成开发环境(IDE)是一个在计算机上运行的软件,可供开发者编写、编译以及上传程序至Arduino开发板。其界面友好,语法简单,可以很方便的上传程序,使得Arduino项目开发变得非常便捷。
Arduino IDE在网上有很多资源提供下载,觉得不放心也可以自行从GitHub或者Arduino官网下载,这里提供从官网下载的两种方式:

  • 下载Arduino IDE免安装版

进入Arduino官网 软件下载页面,对于英文网页看不懂的可以在上面切换中文显示
在这里插入图片描述
切到中文界面,我们的目的性就很明确了,页面大标题显示Arduino IDE当前的最新版本,点击右侧的链接能直接下载最新版IDE的免安装版压缩包及安装包,如果想用以前的旧版本,可以直接点击下面的安装软件旧版本,你想要的版本基本都有
在这里插入图片描述
下载的免安装压缩包,解压后可以直接看到整个IDE的目录,点击Arduino.exe可以直接打开IDE编辑器
在这里插入图片描述

  • 下载Arduino IDE安装包

同样是在官网软件下载页面(链接同上一种),点击Windows安装包下载IDE的安装包,运行安装, i agree
在这里插入图片描述
默认安装配置,Next
在这里插入图片描述
选择软件安装路径(可自定义路径),Install
在这里插入图片描述
等待进度安装,完成后关闭安装向导,close
在这里插入图片描述
安装包安装的Arduino IDE目录比免安装的目录多了一个软件删除程序(uninstall),其他的没什么两样
在这里插入图片描述
运行Arduino IDE,非常干净简介的编程界面
在这里插入图片描述

  • Arduino软件(IDE)

Arduino集成开发环境(或是Arduino IDE)包含了一个用于写代码的文本编辑器、一个消息区、一个文本控制台以及一个带有常见功能按钮和文本菜单的工具栏。软件连接Arduino板和Genuino板之后,能给所连接的控制板上传程序,还能与控制板相互通信。

  • 写项目

使用Arduino软件(IDE)编写的代码被称为项目(sketches),这些项目写在文本编辑器中,以 .ino的文件形式保存,软件中的文本编辑器有剪切/粘贴和搜索/替换功能。当保存、输出以及出现错误时消息区会显示反馈信息。控制台会文字形式显示Arduino软件(IDE)的输出信息,包括完整的错误信息以及其他消息。整个窗口的右下角会显示当前选定的控制板和串口信息。工具栏按钮包含验证、下载程序、新建、打开、保存以及串口监视器的功能。

注意,Arduino软件(IDE)1.0之前的版本中项目的保存格式为.pde,你能够用1.0版本的软件打开这些文件,软件会提示你将这些项目保存为.ino的形式。

在这里插入图片描述
验证 – 检查代码编译时的错误
在这里插入图片描述
上传 – 编译你的代码并且上传到选定的控制板中。
在这里插入图片描述
新建 – 创建一个新的项目
在这里插入图片描述

打开 – 弹出一个包含你文件夹中所有项目的菜单,选择其中一个会打开相应的代码,新的项目会覆盖当前的的项目。
在这里插入图片描述
保存 – 保存你的项目

其他命令我们能够在文本菜单中找到,文本菜单包含五个部分文件、编辑、项目、工具、帮助。这些菜单是与你执行的操作与内容有关的,所以只有那些与当前操作有关的菜单才能使用。

  • 文件

新建
创建一个新的项目,项目中已经自动完成了一段Arduino程序的最小结构。

打开
允许通过计算机的文件管理器打开一个指定的项目。

Open Recent
提供一个最近打开过的项目的列表,可以通过选择打开啊其中一个。

项目文件夹
显示目前项目文件夹中的项目,选择其中一个会在新的窗口打开相应的代码。

示例
显示Arduino软件(IDE)或是库文件提供的每一个例子,所有这些例子通过树形结构显示,这样就能通过主题或库的名字轻易的找到对应的示例程序。

关闭
关闭当前选中的程序。

保存
用当前的名字保存项目,如果文件还没有命名,则会弹出“另存为”窗口要求输入一个名字。

另存为
允许用另一个名字保存当前的项目。

页面设置
显示用于打印的页面设置窗口。

打印
按照页面设置中的设定发送当前的项目给打印机。

首选项
打开首选项窗口能够自己设定IDE的参数,比如IDE的语言环境。

退出
关闭所有的IDE窗口,当下次打开IDE的时候会自动打开同样的项目。

  • 编辑

撤销
撤销你在编辑区的一步或多步操作。

重做
当你撤销之后,可以通过重做再执行一编相应的操作。

剪切
删除选择的文本放置再剪切板中。

复制
复制选中的文本放置在剪切板中。

复制到论坛
复制项目中的代码放置在剪切板中,复制的内容包括完整的语法颜色提示,适合粘贴到论坛中。

复制为HTML格式
以HTML形式复制项目中的代码放置在剪切板中,适合将代码嵌入到网页中。

粘贴
将剪切板中的内容放在编辑区的光标处。

全选
选中编辑区的所有内容。

注释/取消注释
在选中行的开头增加或移除注释标记符//。

增加缩进
在选中行的开头增加一段缩进的位置,文本内容会相应的向右移动。

减少缩进
在选中行的开头减少一段缩进的位置,文本内容会相应的向左移动。

查找
会打开查找和替换窗口,在这个小窗口内你可以根据几个选项在当前的项目中查找特定的文字。

查找下一个
高亮显示下一个在查找窗口中指定的文字(如果有的话),同时将光标移动到对应的位置。

查找上一个
高亮显示上一个在查找窗口中指定的文字(如果有的话),同时将光标移动到对应的位置。

  • 项目

验证/编译
检查你代码中编译的错误,代码和变量使用存储区的情况会显示在控制台。

上传
编译并通过设定的串口上传二进制到选定的控制板当中。

使用编程器上传
这将覆盖控制板中的引导程序;你需要使用 工具>上传引导程序 来恢复控制板,这样下次才能再通过USB串口上传程序。不过这种形式允许你的项目使用芯片的全部存储区。

Export Compiled Binary(导出编译的二进制代码)
保存一个.hex文件作为存档或是用其他工具给控制板上传程序。

显示项目文件夹
打开当前项目所在文件夹。

Include Library(导入库)
在代码开头通过 #include 的形式添加一个库文件到你的项目当中,另外通过这个菜单项你能够访问库管理器,并且能够从.zip文件中导入新库。

添加文件
添加源文件到项目中(会从当前位置复制过来)。新的文件会出现在项目窗口中的新选项卡中。可以通过小三角形图标的选项卡菜单命令来删除文件,选项卡菜单位于串口监视器按钮的下方。

  • 工具

自动格式化
格式化之后代码看起来会更美观,比如,大括号内的代码要增加一段缩进,而大括号内的语句缩进更多。

项目存档
将当前的项目以.zip形式存档,存档文件放在项目所在的目录下。

编码修正及重载
修正了编辑字符与其他系统字符间可能存在的差异。

串口监视器
打开串口监视器口,通过当前选定的串口查看与控制板之间交互的数据。通常这个操作会重启控制器,如果当前控制板支持打开串口复位的话。


选择你使用的控制板。

端口
这个菜单包含了你电脑上所有的串口设备(真的串口设备或虚拟的串口设备),每次打开工具菜单时,这个列表都会自动刷新。

编程器
当我们不是通过USB转串口的连接方式给控制板或芯片上传程序的时候就需要通过这个菜单选择硬件的编程器。一半你不需要使用这个功能,除非你要为一个新的控制器上传引导程序。

上传引导程序
这个菜单项允许你给Arduino上的微控制器上传引导程序,如果你是正常使用Arduino或是Genuino控制板这个菜单项不是必须的,不过如果你购买了一个新的ATmega微控制器的话(通常都不包含引导程序),那么这个菜单项非常有用。在为目标板上传引导程序时要确保你从”控制板“菜单中选择了正确的控制板。

  • 帮助

这里你能够轻易的找到和Arduino软件(IDE)相关的各种文档。在未联网的情况下能够找到入门、参考资料、IDE使用指南以及其他的本地文档,这些文档时我们网站资源的拷贝,通过它们能够链接到我们的网站。


Arduino语言概述

1、标识符

标识符是用来标识源程序中某个对象的名字。这些对象可以是语句、数字类型、函数、变量、常量和数量等。
C语言规定,一个标识符由字母、数字和下划线组成,第一个字符必须是字母或者是下划线。通常以下划线开头的标识符都是编译系统专用的,所以编写C语言程序时,尽量少使用以下划线开头的标识符,但是下划线可以用在第一个字母以后的任何位置。
C语言程序中的标识符命名应该做到简洁明了、含义清晰,这便于程序的阅读和维护。例如,比较最大值最好用max来定义标识符。

2、关键字

在C语言编程中,为了定义变量表达语句功能和对一些文件进行预处理,还必须用到一些具体有特殊意义的字符,就是关键字。
C语言的关键字共有32个,根据关键字的作用,可将其分为数据类型关键字、控制语句关键字、储存类型关键字和其他关键字4类。

(1)数据类型关键字12个
char:声明字符型变量或函数。
double:声明双精度变量或函数。
enum:声明枚举类型。
float:声明浮点型变量或函数。
int:声明整型变量或函数。
long:声明长整型变量或函数。
short:声明短整型变量或函数。
signed:声明有符号类型变量或函数。
struct:声明结构体变量或函数。
union:声明共用体(联合)数据类型。
unsigned:声明无符号类型变量或函数。
void:声明函数无返回值或无参数,声明无类型指针。

(2)控制语句关键字12个
循环语句(5个):for,通过条件欧安段循环次数的语句;do…while,先执行一遍循环体再判断循环条件;while:判断条件再执行循环体;break:跳出当前循环;continue:结束当前循环,并开始下一个循环。
条件语句(3个):if,条件语句;else:条件语句否定分支(与if连用);goto:无条件跳转语句。
开关语句(3个):switch,用于开关语句;case,开关语句分支;default:开关语句中的“其他”分支。
返回语句(1个):return,子程序返回语句(可以带参数,也可以不带参数)。

(3)储存类型关键字4个
auto:声明自动变量,一般不使用。
extern:声明变量是在其他文件中声明(也可以看作是引用变量)。
register:声明寄存器变量。
static:声明静态变量。

(4)其他关键字4个
const:声明只读变量。
sizeof:计算机数据类型长度。
typedef:用以给数据类型取别名。
volatile:说明变量在程序执行中可被隐含地改变。

3、运算符

(1)赋值运算符
赋值语句的作用是把某个常量、变量或表达式的赋值给另一个变量。C语言中,符号为 “ = ” 这里并不是等于的意思,只是赋值,等于用 " == " 表示。

注意:赋值语句左边的变量在程序的其他地方必须声明。

被赋值的变量称为左值,因为它们出现在赋值语句的左边;产生值的表达式称为右值,因为它们出现在赋值语句的右边。常数只能作为右值。

(2)算术运算符
在C语言中,有两个单目和五个双目运算符,分别为:+正(单目)、-负(单目)、*乘法(双目)、/除法(双目)、%取模(双目)、+加法(双目)、-减法(双目)。
运算符有运算顺序问题:先算乘除法再算加减法,单目正和单目负最先运算。

(3)逻辑运算符
逻辑运算符是根据表达式的值来返回真值或是假值。其实,在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。
符号功能: &&(逻辑与) ||(逻辑或) !(逻辑非)。

(4)关系运算符
关系运算符是对两个表达式进行比较,各关系返回一个真/假值。各关系运算符及功能如下表。

符号功能符号功能
>大于<=小于等于
<小于==等于
>=大于等于!=不等于

(5)自增自减运算符
自增自减运算符是一类特殊的运算符,其中,自增运算符(++)和自减运算符(–)对变量的操作结果是增加1和减少1。

(6)复合赋值运算符
在赋值运算符当中,还有一类C/C++独有的复合赋值运算符。它们实际上是一种缩写形式,使得对变量的改变更为简洁,如 Total = Total + 3,也可以写成 Total += 3,复合赋值运算符及其功能如下表所示。

符号功能符号功能
+=加法赋值<<=左移赋值
-=减法赋值>>=右移赋值
*=乘法赋值&=位逻辑与赋值
/=除法赋值|=位逻辑或赋值
%=模运算赋值^=位逻辑异或赋值

(7)条件运算符
条件运算符(:)是C语言中唯一的一个三目运算符。它是对第一个表达式作真/假检测,然后根据结果返回另外两个表达式中的一个,语法格式如下:
<表达式1> ? <表达式2> : <表达式3>

(8)逗号运算符
在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值,相关实例如下。

 b = 2, c = 7, d = 5, a1 = (++b, c--, d+3);
 a2 = ++b, c--, d+3;

对于第一行代码,有3个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是 d+3 为8,所以 a=8。对于第二行代码,也有3个表达式,这时的3个表达式为 a2=++b,c–, d+3。因为赋值运算符比逗号运算符优先级高,所以最终表达式的值虽然也为8,但a2=3。


Arduino基本函数

  • I/O操作函数
PinMode(pin,mode)

描述:将指定的针脚配置成输出或输入。
语法:PinMode(pin,mode)。
参数:pin,要设置模式的针脚;mode,INPUT或OUTPUT。

digitalWrite(pin,value)

描述:给一个数字针脚写入HIGH或者LOW。如果一个针脚已经使用pinMode()配置为OUTPUT模式,则其电压将被设置相应的值,HIGH为5V(3.3V控制板上为3.3V),LOW为0V。如果针脚配置为INPUT模式,使用digitalWrite()写入HIGH值,则将使内部20kΩ上拉电阻接入,而写入LOW将会禁用上拉,。上拉电阻可以点亮一个LED,让其微微亮。如果出现LED工作,但是亮度很低,则可使用pinMode()函数设置输出针脚来补救。
语法:digitalWrite(pin,value)。
参数:pin,针脚编号(如1,5,10,A0,A3);value:HIGH或LOW。

int digitalRead(pin)

描述:读取指定针脚的值,HIGH或LOW。
语法:digitalRead(pin)。
参数:pin,要读取的针脚号(int)。
返回:HIGH或LOW。

  • 模拟I/O操作函数
analogWrite()

描述:从一个针脚输出模拟值(脉冲宽度调制,Pluse Width Modulation,PWM),让LED以不同的亮度点亮或驱动电机以不同速度旋转。analogWrite()输出结束后,该针脚将产生一个稳定的特定占空比的PWM。PWM输出持续到下次调用analogWrite(),或在同一针脚调用digitalRead()或digitalWrite()。
PWM信号的频率大约是490Hz,大多数Arduino板(ATmega168或ATmega328)只有针脚3、5、6、9、10和11可以实现该功能。在Arduino Mega上,针脚2 ~ 13可以实现该功能。旧版本的Arduino板(ATmega8)只有9、10、11可以使用analogWrite()。在使用analogWrite()之前,不需要调用pinMode()来设置针脚为输出模式。
语法:analogWrite(pin,value)。
参数:pin,用于输入的针脚;value,占空比,取值范围为0(完全关闭)~ 255(完全打开)。

analogRead()

描述:从指定的模拟引脚读取数值。Arduino板包含一个6通道(Mini和Nano有8通道,Mega有16通道)、10位模拟/数字转换器。这表示它将0 ~ 5V的输出电压映像到0 ~ 1023的整数值,即每个读数对应电压值5V/1024,每单位0.0049V(4.6mV)。输入范围和精度可以通过analogReferrnce函数改变,其大约现需要100μs(0.0001s)来读取模拟输入,所以最大的阅读速度是每秒1000次。
语法:analogRead(pin)。
参数:模拟引脚或带PWM功能的数字引脚。
返回:从0 ~ 1023的整数值。

  • 时间函数
delay()

描述:是程序设定的暂停时间(单位毫秒)
语法:delay(ms)
参数:ms,暂停的毫秒数(unsigned long)

delayMicroseconds()

描述:使程序暂停指定的一段时间(单位 ms)。目前,能够产生的最大延时准确值是16383。这可能会在未来的Arduino版本中有所改变。对于超过几千μs的延时,应该使用delay()代替。
语法:delayMicroseconds(us)。
参数:μs,暂停的时间,单位微妙(unsigned int)


掌握Arduino编程基础,对往后的编程项目学习会更加顺手。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arduino成长日记2 - Arduino编程基础 的相关文章

随机推荐

  • 智能小车学习笔记

    教程 视频教程 xff1b 资源网站 xff1b 可以获取模块的基础资料 xff1b 有刷电机有损耗 电机选型考虑 xff1a 转速和额定电压 xff1b 电机的力矩 xff0c 减速电机减速箱的作用 xff1a 减速 增大力矩 xff08
  • C++ 容器详解

    顺序容器vectorlistdequestackqueuepriority queue 关联容器mapmultimapsetmultiset 无序容器容器的互相比较迭代器 顺序容器 顺序容器类型特点vector可变大小数组支持快速随机访问
  • Cmake入门&运行保存C/C++文件

    Cmake入门 amp 运行保存C C 43 43 文件 在ubuntu创建 保存 运行c 43 43 文件CMake入门创建文件编译 参考 最近在学习Intel realsense T265双目视觉 xff0c 其中一步需要创建源文件ma
  • NVIDIA Jetson TX2 上手指南

    文章目录 一个性能强大的边缘设备我和 NVIDIA Jetson TX2 的初体验Fresh Your TX2为什么在第一步取消Host Machine可能遇到的问题 用上最好的性能 xff0c 小风扇跳舞吧 xff5e xff5e 运行一
  • extern "C"的作用以及为什么要使用extern "C"

    实现c 43 43 代码能够调用其他c语言代码 xff0c 加上extern 34 C 34 后 xff0c 这部分代码编译器以c语言的方式进行编译和链接 xff0c 而不是按c 43 43 方式原因 xff1a c和c 43 43 对同一
  • 什么是链表?(图解)

    一 xff1a 链表是什么 1 链表是物理存储单元上非连续的 非顺序的存储结构 xff0c 数据元素的逻辑顺序是通过链表的指针地址实现 xff0c 有一系列结点 xff08 地址 xff09 组成 xff0c 结点可动态的生成 2 结点包括
  • C++ STL各个容器的区别

    1 STL容器分类 xff1a STL的容器可以分为以下几个大类 一 顺序 xff08 序列 xff09 容器 xff0c 有vector list deque string stack 适配器类 queue 适配器类 priority q
  • Bat脚本-编译及烧录keil-MDK工程

    目录 概述背景需求需求分析需求实现实现功能使用示例1 修改脚本中的编译软件路径2 将脚本的文件路径加入系统的环境变量3 通过Vscode 进行调用 可进一步优化的方向总结 概述 本文主要讲述的是一个关于调用keil MDK的软件编译对应单片
  • ubuntu部署http服务器

    一 安装apache2 sudo apt install y apache2 二 配置环境 默认是80端口 xff0c 防止冲突自定义端口 xff1a 8001 1 修改 etc apache2 ports conf文件j监听端口 List
  • c/c++math.h标准库

    math h数学函数 这个库中所有可用的函数取double参数并返回double的结果 abs 绝对值 acos 反余弦 acosh 反双曲余弦 asin 反正弦 asinh 反双曲正弦 atan2 两个参数的反正切 atan 反正切 at
  • Linux Simulink打不开——unable to run the MATLABWindow application on Linux

    Linux Simulink打不开 unable to run the MATLABWindow application on Linux 解决办法 xff1a 解决办法 xff1a 参考网页 xff1a https www mathwor
  • RTX移植STM32F103,超详细~

    目录 RTX移植前言移植1 创建工程2 配置工程3 添加LED文件4 编写测试代码5 编译烧录 RTX移植 往期回顾 为什么需要RTOS 前言 keil RTX是一款应用广泛的嵌入式RTOS xff0c 具体可见官网 为什么需要RTOS x
  • 基于28035的ePWM触发ADC采样设计

    目录 前言实验目的实验要求硬件电路实验步骤代码解释实验结果总结体会 前言 玖道最近在做一个开关电源项目 xff0c 需要用到TI 的TMS320F28035 芯片 xff0c 实现控制电路的设计 简单来说就是利用28035采集信号量 xff
  • 浅析DSP28035的看门狗模块

    目录 背景工作原理结构与寄存器代码实验结果总结 背景 嵌入式系统通常会使用DSP来实现控制功能 xff0c 比如开关电源的数字控制 试想如果DSP中程序出现Bug 崩溃 跑飞了怎么办 xff1f 如果不及时处理 xff0c 这对整个嵌入式系
  • 浅析TMS320F28035的GPIO模块

    目录 GPIO简介硬件电路软件代码总结 通用输入输出端口 General Purpose Input Output GPIO 几乎是学习包括DSP xff0c 单片机在内的微处理器的第一步 GPIO的功能包括基本的输入 xff0c 输出 x
  • Ubuntu 20.04下配置 HAL 汇编开发环境教程

    目录 安装解压配置环境变量测试 案例 安装 环境 xff1a Ubuntu 20 04 安装包 xff1a linux64 hla tar gz 这里安装的是64位的 xff0c 具体与linux hla tar gz有什么不同 xff0c
  • 为什么单片机需要时钟系统,时钟信号在单片机中扮演怎样的角色?

    现在想想 xff0c 我自学单片机都快一年了 我自学过8051 msp430和STM32 xff0c 做一些基本的小项目 xff0c 参加过2018年江苏省电子设计大赛 xff0c 还获得了一等奖 我懂 xff0c 也不懂单片机 不懂就要去
  • Spring Security OAuth2.0认证授权学习与使用~(更新中)

    Spring Security OAuth2 0认证授权学习与使用 1 1 什么是认证1 1 1 系统为什么要认证 xff1f 1 1 2 认证 1 2 什么是会话 xff1f 1 2 1 会话1 2 2 基于Session的认证方式如下图
  • Altium中PCB上走线镀锡的方法

    Altium中PCB上走线镀锡的方法 PCB设计时 有时候需要在不增加PCB走线宽度的情况下提高该走线通过大电流的能力 载流能力 通常的方法是给该导线镀锡 或者上锡 下面以在PCB顶层走线镀锡为例 使用AD09软件 简单介绍如何走线上锡处理
  • Arduino成长日记2 - Arduino编程基础

    上一篇讲述了什么是Arduino以及各类Arduino开发板的参数 xff0c 本篇开始介绍开发环境搭建以及一些编程基础 Arduino开发环境 开发环境即Arduino项目的编程环境 Arduino IDE xff0c Arduino集成