arduino语言(基础)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Arduino语言
Arduino语言是建立在C/C++基础上的,其实也就是基础的C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层,让我们不了解AVR单片机(微控制器)的朋友也能轻松上手。
在与Arduino DIYER接触的这段时间里,发现有些朋友对Arduino
语言还是比较难入手,那么这里我就简单的注释一下Arduino语言(本人也是半罐子水,有错的地方还请各位指正)。
基础C语言
关键字:
if...else
必须紧接着一个问题表示式(expression),若这个表示式为真,紧连着表示式后的代码就会被执行。若这个表示式为假,则执行紧接着else 之后的代码. 只使用 if不搭配else是被允许的。
范例:
if (val == 1) {
digitalWrite(LED,HIGH);
}
for
用来明定一段区域代码重复指行的次数。
范例:
for (int i = 0; i < 10; i++) {
Serial.print("ciao");
}
switch case
if叙述是程序里的分叉路口,switch case 是更多选项的路口。Swith case 根据变量值让程序有更多的选择,比起一串冗长的if叙述,使用swith case可使程序代码看起来比较简洁。
范例 :
switch (sensorValue) {
case 23:
digitalWrite(13,HIGH);
break;
case 46:
digitalWrite(12,HIGH);
break;
default: // 以上条件都不符合时,预设执行的动作
digitalWrite(12,LOW);
digitalWrite(13,LOW);
}
while
当while之后的条件成立时,执行括号内的程序代码。
范例 :
// 当sensor值小于512,闪烁LED灯
sensorValue = analogRead(1);
while (sensorValue < 512) {
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,HIGH);
delay(100);
sensorValue = analogRead(1);
}
do... while
和while 相似,不同的是while前的那段程序代码会先被执行一次,不管特定的条件式为真或为假。因此若有一段程序代码至少需要被执行一次,就可以使用do…while架构。
范例 :
do {
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,HIGH);
delay(100);
sensorValue = analogRead(1);
} while (sensorValue < 512);
break
让程序代码跳离循环,并继续执行这个循环之后的程序代码。此外,在break也用于分隔switch case 不同的叙述。
范例 :
//当sensor值小于512,闪烁LED灯
do {
// 按下按钮离开循环
if (digitalRead(7) == HIGH)
break;
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,HIGH);
delay(100);
sensorValue = analogRead(1);
} while (sensorValue < 512);
continue
用于循环之内,它可以强制跳离接下来的程序,并直接执行下一个循环。
范例 :
for (light = 0; light < 255; light++)
{
// 忽略数值介于 140 到 200之间
if ((x > 140) && (x < 200))
continue;
analogWrite(PWMpin, light);
delay(10);
}
return
函数的结尾可以透过return回传一个数值。
例如,有一个计算现在温度的函数叫 computeTemperature(),你想要回传现在的温度给temperature变量,你可以这样写:
int temperature = computeTemperature();
int computeTemperature() {
int temperature = 0;
temperature = (analogRead(0) + 45) / 100;
return temperature;
}
goto
语法符号:
//单行注释:/*多行注释:在这个范围内你可以写一整首诗*/运算符:
% 余数除法== 等于 !=不等于<= 小于等于>= 大于等于&& 交集|| 联集! 反相
数据类型:
boolean 布林
布尔变数的值只能为真(true)或是假(false)
char 字符
单一字符例如 A,和一般的计算机做法一样Arduino 将字符储存成一个数字,即使你看到的明明就是一个文字。
用数字表示一个字符时,它的值有效范围为 -128 到127。
注意:有两种主流的计算机编码系统ASCII 和UNICODE。ASCII 表示了127个字符,用来在序列终端机和分时计算器之间传输文字。UNICODE可表示的字符量比较多,在现代计算机操作系统内它可以用来表示多国语言。
在位数需求较少的信息传输时,例如意大利文或英文这类由拉丁文,阿拉伯数字和一般常见符号构成的语言,ASCII仍是目前主要用来交换信息的编码法。
byte 字节类型
储存的数值范围为0到255。如同字符一样字节型态的变量只需要用一个字节(8位)的内存空间储存。
int 整数
整数数据型态用到2字节的内存空间,可表示的整数范围为–
32,768 到 32,767; 整数变量是Arduino内最常用到的数据型态。unsigned int 无符号整数(绝对值)
无号整数同样利用2字节的内存空间,无号意谓着它不能储存负的数值,因此无号整数可表示的整数范围为0 到 65,535。
long 长整数
长整数利用到的内存大小是整数的两倍,因此它可表示的整数范围从–2,147,483,648 到 2,147,483,647。
unsigned long 无符号长整数
无号长整数可表示的整数范围为0 到 4,294,967,295。
float 浮点数
浮点数就是用来表达有小数点的数值,每个浮点数会用掉四字节的RAM,注意芯片内存空间的限制,谨慎的使用浮点数
double 双字节浮点