arduino学习笔记(一)
原来其实也做过一段时间的arduino,但是一直没有系统性的学习,这里专门从头系统性学习一下arduino,希望以后能够有所帮助。
基础知识
程序结构
执行顺序:setup()->loop()
其他函数在这两个必要函数中被调用
void setup(){}
代码只有在启动时会调用一次setuo()函数。使用它来初始化变量,引脚模式,启用库等操作,setup函数只能在arduino板子的每次上电或复位后,才会运行一次
Void setup( ) {
}
void Loop(){}
在创建了用于初始化并设置初始值的setup()函数后,loop()函数会允许程序连续的更改和响应,可以用它来主动控制arduino板,当loop函数运行完后,会自动复位重复运行loop()函数
Void loop( ) {
}
数据类型
数据类型 | 字节大小 | 用途 | |
---|---|---|---|
void | 0 | 仅用于函数声明,表示该函数不返回任何信息 | |
boolean | 1 | 只保存true或false,用来确定是否正确 | |
char | 1 | 存储一个字符值,字符存储形式为ASCII | 双引号"ABC" |
unsigned char | 1 | 无符号存储字符,范围为0-255 | 用法和char类似 |
float | 4 | 浮点数,存储带小数的数字 | |
int | 2(因板而异) | 整数,主要存储类型。范围:(-2^15-1 ~ 2 ^15)-1 | |
Unsigned int | 2(因板而异) | 无符号整数,0-2^32-1 | |
double | 4 | 双精度浮点数,一般板子上与float相同,在arduino due上有8字节精度 | |
byte | 1 | 存储一个8位无符号数,0-255 | 无符号 |
Word | 2/4 | 15位无符号 | |
Long | 4 | int的扩展类型,-2^32-1 ~2 ^32-1 | |
unsigned long | 4 | 无符号数,2 ^64-1 |
变量
变量定义与C语言的特性
局部变量
只作用于该代码块或函数中,不能在其之外运行
Void setup () {
}
Void loop () {
int x , y ;
int z ;
}
全局变量
定义在所有函数之外,通常位于函数顶部,与程序生命周期长度相同,可以被任何函数访问
int T
float A=0
Void setup () {
}
Void loop () {
}
形式参数
在函数参数的定义中,不具有实际意义
int a(int c){
}
运算符
布尔运算符
假设变量A为10,变量B为20
运算符名称 | 运算符简写 | 例子 |
---|---|---|
and(与) | && | (A && B)为真 |
or(或) | || | (A || B)为真 |
not(非) | ! | !(A && B)为假 |
位运算符
假设变量A为60,变量B为13
运算符名称 | 运算符简写 | 描述 | 例子 |
---|---|---|---|
and(与) | & | 如果同时存在于两个操作数中,二进制AND运算符复制一位到结果中。 | (A & B)将得出12,即0000 1100 |
or(或) | 如果存在于任一操作数中,二进制OR运算符复制一位到结果中。 (A | B)将得出61,即0011 1101 | |
xor(异或) | ^ | 如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制XOR运算符复制一位到结果中。 | (A ^ B)将得出49,即0011 0001 |
not(非) | ~ | 二进制NOT运算符是一元运算符,具有"翻转"位效果。 | (〜A)将得出-60,即1100 0011 |
shift left(左移) | << | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 | A<< 2将得出240,即1111 0000 |
shift right(右移) | >> | 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 | A>> 2将得出15,即0000 1111 |
控制语句
if..else
判断语句
if()
{
}
else if()
{
}
else
{
}
switch case
\\变量A只能是整数
switch (A)
{
case 0:{};break;
case 1:{};break;
case 2:{};break;
default:{}
}
循环
while
while(i<n) {
....
}
do...while
do {
...
}
while (i<n);
for
for(int i=0;i <= 9;i++) {
...
}
字符串
字符串数组
可以用char数组存储字符串
与C相同,字符串是一个特殊的数组,字符串末尾有个额外的元素,值永为0,空终止字符串
char str[6]="hello";
char my_str[] = "Hello";
字符串操作
字符串串联
strcat()函数:将一个字符串加到另一个字符串末尾
strcat(str,",john")
字符串长度
strlen():用于获取字符串的长度,不包括空终止符
strlen(str);
数组长度
sizeof:长度包括空终止符
sizeof(str);
复制字符串
strcpy:将字符串str复制到另一个字符串数组
strcpy(out_str, str);
字符串对象
String
String my_str = "This is my string." ;
转换大小写
对象包含的字符串数据(或文本)转换为大写字符
my_str.toUpperCase();
覆盖
仅适用于String对象
my_str = "My new string." ;
替换
replace() 函数用于将传递给它的第二个字符串替换传递给它的第一个字符串
my_str.replace("string", "Arduino sketch");
字符串长度`
length()获取字符串的长度,可以直接获取,你需要中间量
Serial.println(my_str.length());