Arduino学习笔记
- 太极创客 第一部分 笔记
-
-
- 1-5 变量
- 1-6 程序结构
- 1-7 变量操作
- 1-8/1-9 程序函数
- 1-10/1-11 数字输出 1-12 面包板
- 1-13/1-14 数字输入
- 1-15至1-17 逻辑控制
- 1-19至1-24 MC猜数字(例)
- 1-25/1-26 模拟输出
-
太极创客 第一部分 笔记
1-5 变量
-
int是整数类型变量
-
变量名称规则: ① 只能输入英语 ② 变量名只能使用贯的词,中间不能加空格 ③ 变量名中不能有特殊字符 ④ 第一个字符不能是数字 ⑤ 变量名称不能用于关键字(即)IDE中变蓝的词) ⑥ 可添加下划线
-
默认情况下,整数变量值为0
-
等号(=)有一个特殊的名字赋值运算符
1-6 程序结构
- void setup()属于初始化工作(只运行一次)
- void loop() 函数将永远重复运行
- delay(); 单位为延迟函数ms
1-7 变量操作
-
各种类型的变量:如果一个值超过该类型的最大范围,则该值将返回最小值
-
变量有效域:在特定范围内声明,分为全局变量和局部变量。
全局变量:适用于所有函数
局部变量:有限制范围,只适用于特定区域内
-
浮点型浮点数的值范围为3.4028235 E 38 ~ -3.4028235 E 38
1-8/1-9 程序函数
-
函数固定格式:什么函数? 例如,多少参数delay()只需要一个参数
-
delayMicroseconds()暂停程序运行也是延迟函数delay用法一致,但暂停时间不同。
-
pinMode(pin,Mode):设置引脚的输入输出状态
pinMode()函数可以使用Arduino引脚分为三种模式:
- 输出模式(OUTPUT)——用引脚提供≤40ma的电流
- 输入模式(INPUT)
- 上拉模式(INPUT_PULLUP)
-
digitalWrite(pin,value) :设置输出引脚的高低电平状态
高电平(HIGH)5v ;低电平(LOW)0v/GND
- 将引脚变成输出顺序:
- 首先,为引脚设置相应的工作状态——pinMode(脚位,工作模式)
- 然后设置脚的状态——digitalWrite(脚位,高电平或低电平)
- 设置持续时间——delay(毫秒)
1-10/1-11 数字输出 1-12 面包板
-
LED:发光二级管(长的是 ,短的是-),工作时回产生2V的压降(与LED限流电阻搭配使用)
-
面包板:
上下区域横向相通,一般用于连接电源和接地
中间区域为纵向5位相通,通常用于放置电路元件和电路连接线。
1-13/1-14 数字输入
-
开关(同侧不相连,不同侧相连)
-
上拉电阻
-
当S2没按下时,Input通过两个电阻和 5V连接(注意电路中没有电路,所以不会有压降Input端仍然是高电平),是高电平。当S2按下时, 5V,R2,S2,GND形成回路,R2 电阻大,压降大,所以后面Input是低电平。所以,可以通过Input判断终端的电平S2是否按下。上拉电阻广泛应用于数字电路中。
-
引脚悬空时,电位读取可能是低电位或高电位
-
窗口监视器:程序运行状态
serial.begin(9600):调用serial库中的begin函数,串口波特率通常使用9600,并注意代码与窗口选择一致
serial.println():将变量值输出到窗口监视器
-
digitalRead(pin):读取引脚状态,返回HIGH或LOW
1-15至1-17 逻辑控制
-
输入上拉模式(INPUT_PULLUP),arduino微控制器可以自带内部上拉电阻pinMode()将引脚设置为输入上拉模式。
请注意:在上拉模式下,按钮的逻辑状态是相反的。也就是说,当开关断开时,引脚读取到高电平,按下开关后,引脚读取到低电平。
-
if(逻辑关系型){}
///关系表达式通过关系运算得到真假,真假为1,假为0,其数据类型为布尔//Boolean(除0外,任何其他值都被视为1)
///关键关键字boolean或者bool都可以
-
"=赋值运算符=="为关系运算符
-
布尔运算符:"!"(非);"||"(或);"&&"(与)
1-19至1-24 MC猜数字(例)
-
制作MC猜数字所需的硬件材料:
– Arduino本教程采用共阴极数字管 – 限流电阻 x 1(约200欧姆)公对公杜邦线 x 10, 面包板, 面包板跳线 x 10, 按键开关 x 1
-
while(循环条件){循环体};
do{循环体}while{循环条件}; ///注意判断两者的循环和循环条件
-
switch case
switch (var) {
case 1: //当var这里的程序等于1点执行 break; case 2: //当var这里的程序这里执行程序 break; default: // 如果var的值与以上case中值不匹配 // 在这里执行程序 break;
}
-
- 在以上结构示例代码中,当变量
var
和某个case
后面的数值匹配成功后,如果没有break, Arduino会执行该分支以及后面所有分支的语句。 case
后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。case
后面不能使用字符串,但可以使用字符,使用字符时需要用单引号把字符括起来,如:case: 'b'
。default
不是必须的。当没有default
时,如果所有case
都匹配失败,那么就什么都不执行。
- 在以上结构示例代码中,当变量
-
if(判断条件){语句块}
else if{语句块}
-
随机数:①random(max)②random(min,max)
min: 产生随机数的下限(包含此数值) max: 产生随机数的上限(不包含此数值)
其返回值为:在最小值(min)和最大值减一(max-1)之间的随机数值
单独使用random()函数。每次程序运行所产生的随机数字都是同一系列数字。并非真实的随机数,而是所谓的伪随机数。如果希望每次程序运行时产生不同的随机数值。应配合使用randomseed()函数。
-
randomSeed()函数可用来产生随机种子。单独使用random()函数所产生的随机数,在每一次程序重新启动后,总是重复同一组随机数字。如果希望程序重新启动后产生的随机数值与上一次程序运行时的随机数不同,则需要使用randomSeed()函数。在实际应用时,可以通过调用analogRead()函数读取一个空引脚,作为随机种子数值。
randomSeed(seedVal)
seeseedVal: 随机种子数值
long randNumber;
void setup(){
Serial.begin(9600);
randomSeed(analogRead(A0));
//将引脚A0放空,每次程序启动时所读取的数值都是不同的。
//这么做可以产生真正的随机种子值,从而产生随机数值。
}
void loop(){
randNumber = random(300); // 产生随机数
Serial.println(randNumber);
delay(50);
}
- 函数调用:注意是否有参数,如果有参,那么在函数调用声明前要记得定义变量。
1-25/1-26 模拟输出
-
analogWrite(pin, value);
//在调用analogWrite()函数前,无需使用pinMode()函数来设置该引脚,但是设置了也没有关系。
pin
:被读取的模拟引脚号码value
:0到255之间的PWM频率值, 0对应off, 255对应on -
analogWrite()函数将模拟值(PWM波)写入引脚。它可用于以不同的亮度点亮LED或以各种速度驱动电机。在调用analogWrite()函数之后,引脚将产生指定占空比的稳定方波,直到下一次调用analogWrite()或在相同引脚上调用digitalRead()或digitalWrite()。
大多数引脚上的PWM信号频率约为490 Hz。在Uno和类似的板上,引脚5和6的频率约为980Hz。
在大多数Arduino板上(ATmega168或ATmega328),此 功能在引脚3,5,6,9,10和11上工作。