Arduino入门教程 第一章|C语言入门 Posted 2021-04-25 RoboInventor
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino入门教程 第一章|C语言入门相关的知识,希望对你有一定的参考价值。
Arduino 使用 C/C++编写程序,虽然 C++兼容 C 语言,但这是两种语言,C语言是一种面向过程的编程语言,C++是一种面向对象的编程语言。早期的Arduino 使用 C 语言编写,后来引进了面向对象的思想,目前最新的 Arduino 核心库采用 C 与 C++混合编写而成。
通常我们说的Arduino语言,是指Arduino核心库文件提供的各种应用程序编程接口(Application Programming Interface,简称 API)的集合。这些 API 是对更底层的单片机支持库进行二次封装所形成的。例如,使用 AVR 单片机的Arduino 的核心库是对 AVR-Libc(基于 GCC 的 AVR 支持库)的二次封装。传统开发方式中,你需要厘清每个寄存器的意义及之间的关系,然后通过配置多个寄存器来达到目的。而在 Arduino 中,使用了清楚明了的 API 替代繁杂的寄存器配置过程。
第 2 节 数据类型:变量、常量 第 3 节 运算符 第 4 节 表达式 第 5 节 数组:数据类型、数组名称 第 6 节 字符串:字符串名称[字符个数]、String 字符串名称
第 9 节 选择结构 第 10 节 If 语句:简单分支结构、双分支结构、多分支结构
第 11 节 switch...case 语句 第 12 节 循环结构:循环语句、循环控制语句
Arduino 程序基本结构由 setup() 和 loop() 两个函数组成:
Arduino 控制器通电或复位后,即会开始执行 setup() 函数中的程序,该部分只会执行一次。
通常我们会在 setup() 函数中完成 Arduino 的初始化设置,如配置 I/O 口状态,初始化串口等操作。
在 setup() 函数中的程序执行完后,Arduino 会接着执行 loop() 函数中的程序。而 loop()函数是一个死循环,其中的程序会不断的重复运行。
通常我们会在 loop() 函数中完成程序的主要功能,如驱动各种模块,采集数据等。
在 C\C++语言程序中,对所有的数据都必须指定其数据类型。数据又有常量和变量之分。
我们可以在定义时为其赋值,也可以定义后,对其赋值,例如:
在程序运行过程中,其值不能改变的量,称为常量。常量可以是字符,也可以是数字,通常使用语句
“
const 类型 常量名 = 常量值 ”定义常量。
如在 Arduino 核心库中已定义的常数 PI,即是使用
#define PI 3.1415926535897932384626433832795 定义的。
整型即整数类型。Genuino 101 可使用的整型类型及取值范围如下
浮点数也就是常说的实数。在Arduino中有float 和 double 两种浮点类型 ,在Genuino 101中,float 类型占用4个字节(32 位)内存空间,double类型占用8 个字节(64 位)内存空间。
浮点型数据的运算,速度较慢且可能有精度丢失。通常我们会把浮点型转换为整型来处理相关运算。如 9.8cm,我们通常把换算为 98mm 来计算。
字符型,即 char 类型,也是一种整形,占用一个字节内存空间,常用于存储字符变量。存储字符时,字符需要用单引号引用,如
字符都是以整数形式储存在 char 类型变量中的,数值与字符的对应关系,请参照 ASCII 码表。
布尔型变量,即 boolean。它的值只有两个:false(假)和 true(真) 。boolean会占用 1 个字节的内存空间。
通过运算符将运算对象连接起来的式子,我们称之为表达式。如 5+3、a-b、1<9等。
数组是由一组相同数据类型的数据构成的集合。数组概念的引入,使得在处理多个相同类型的数据时,程序更加清晰和简洁。其定义方式如下:
需要注意的是数组下标是从 0 开始编号的 。如,将数组 a 中的第 1 个元素赋值为1:
你可以使用以上方法对数组赋值,也可以在数组定义时,对数组进行赋值。如:
int a[5]; a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5;
字符串的定义方式有两种,一种是以字符型数组方式定义,另一种是使用 String类型定义。
使用字符型数组的方式定义,使用方法和数组一致,有多少个字符便占用多少个字节的存储空间。
大多数情况下,我们使用 String 类型来定义字符串,该类型中提供一些操作字符串的成员函数,使得字符串使用起来更为灵活。
即可定义一个名为 abc 的字符串。你可以在定义时为其赋值,或在定义后为其赋值,如
String abc = “Genuino 101”;
是等效的。 相较于数组形式的定义方法,使用 String 类型定义字符串会占用更多的存储空间。
/*与*/之间的内容,及 // 之后的内容均为程序注释,使用它可以更好的管理代码。注释不会被编译到程序中,不影响程序的运行。为程序添加注释的方法有两种:
顺序结构是三种基本结构之一,也是最基本、最简单的程序组织结构。在顺序结构中程序按语句先后顺序依次执行。一个程序或者一个函数,整体上是一个顺序结构,它是由一系列的语句或者控制结构组成,这些语句与结构都按先后顺序运行。
如图所示,虚线框内是一个顺序结构,其中 A、B 两个框是顺序执行的。即:在执行完 A 框中的操作后,接着会执行 B 框中的操作。
选择结构又称选取结构或分支结构。在编程中,我们经常需要根据当前数据做出判断,决定下一步的操作。例如,Arduino 可以通过温度传感器检测出环境温度,在程序中对温度做出判断,如果温度过高,就发出警报信号,这时便会用到选择结构。
if 语句是最常用的选择结构实现方式,当给定表达式为真时,就会运行其后的语句,其有三种结构:
双分支结构增加了一个 else 语句,当给定表达式结果为假时,便运行 else 后的语句。
if (表达式) { 语句 1; }else { 语句 2; }
使用多个 if 语句,可以形成多分支结构,用以判断多种不同的情况。
if (表达式 1) { 语句 1; }else if (表达式 2) { 语句 2; }else if (表达式 3) { 语句 3; }else if (表达式 4) { 语句 4; } ......
处理比较复杂的问题,可能会存在有很多选择分支的情况,如果还使用 if...else的结构编写程序,会使程序显得冗长,且可读性差。此时我们可以使用 switch,其一般形式为:
switch (表达式) { case 常量表达式 1 : 语句1 break ; case 常量表达式 2 : 语句2 break ; case 常量表达式 3 : 语句3 break ; ...... default : 语句n break ; }
需要注意的是,Switch 后的表达式结果只能是整形或字符型 。如果要使用其他类型,则必须使用 if 语句。
switch 结构会将 switch 语句后的表达式与 case 后的常量表达式比较,如果符合就运行常量表达式所对应的语句;如果都不相符,则会运行 default 后的语句,如果不存在 default 部分,程序将直接退出 switch 结构。
在进入 case 判断,并执行完相应程序后,一般要使用 break 退出 switch 结构。如果没有使用 break 语句,程序则会一直执行到有 break 的位置退出或运行完该switch 结构退出。
循环结构又称重复结构,即反复执行某一部分的操作。有两类循环结构,当(while)循环和直到(until)循环 。
while 循环是一种当型循环。当满足一定条件后,才会执行循环体中的语句 ,其一般形式为:
在某些 Arduino 应用中,你可能需要建立一个死循环(无限循环)。当 while 后的表达式永远为真或者为 1 时,便是一个死循环。
do...while 与 while 循环不同,是一种直到循环,它会一直循环到给定条件不成立时为止 。它会先执行一次 do 语句后的循环体,再判断 是否进行下一次循环。
for 循环比 while 循环更灵活,且应用广泛,它不仅适用于循环次数确定的情况,也适用于循环次数不确定的情况。while 和 do...while 都可以替换为 for 循环。一般形式为:
for (表达式 1;表达式 2;表达式 3) { 语句; }
一般情况下,表达式 1 为 for 循环初始化语句,表达式 2 为判断语句,表达式 3为增量语句 。如
表示初始值 i 为 0,当 i 小于 5 时运行循环体中的语句,每循环完一次,i 自加 1,因此这个循环会循环 5 次。
在循环结构中,都有一个表达式用于判断是否进入循环。通常情况下,当该表达式结果为 false(假)时,会结束循环。有时候,需要提前结束循环,或是已经达到了一定条件,可以跳过本次循环余下的语句,那么可以使用循环控制语句break 和 continue。
break 语句只能用于 switch 多分支选择结构和循环结构中,使用它可以终止当前的选择结构或者循环结构,使程序转到后续的语句运行 。break 一般会搭配 if 语句使用。一般形式为:
continue 语句用于跳过本次循环中剩下的语句,并判断是否开始下一次循环 。同样,continue一般搭配 if 语句使用一般形式为:
以上是关于Arduino入门教程 第一章|C语言入门的主要内容,如果未能解决你的问题,请参考以下文章
C语言笔记初级篇第一章:C语言快速入门及注意事项
C语言笔记初级篇第一章:C语言快速入门及注意事项
C语言编程从入门到实践 第一章:初识C循环
《C语言深度剖析》第一章 关键字详解 p4 C语言从入门到入土(进阶篇)
第一章 Python入门
其他~总贴(全国计算机二级python语言和C语言时间管理MATLAB从入门到精通 十大滤波算法程序)