Arduino内置结构:
预先声明:
int delayTime=1000;//全局变量的定义
pinMode( , )//左引脚,右[工作模式]
- OUTPUT//输出,引脚将输出5伏特电压
- INPUT//输入,对于pinRead()引脚的电压大于等于3V时返回 HIGH
- INPUT_PULLUP//输入上拉。
1、设置Arduino引脚为输出(OUTPUT)模式OUTPUT
当引脚设置为输出(OUTPUT)模式时,引脚为低阻抗状态。这意味着Arduino可以向其它电路元器件提供电流。也就是说,Arduino引脚在输出(OUTPUT)模式下可以点亮LED或者驱动电机。(如果被驱动的电机需要超过40mA的电流,Arduino将需要三极管或其它辅助元件来驱动他们。)
2、设置引脚为输入(INPUT)模式INPUT当引脚设置为输入(INPUT)模式时,引脚为高阻抗状态(100兆欧)。此时该引脚可用于读取传感器信号或开关信号。
注意:当Arduino引脚设置为输入(INPUT)模式或者输入上拉(INPUT_PULLUP)模式,请勿将该引脚与负压或者高于5V的电压相连,否则可能会损坏Arduino控制器。
3、设置引脚为输入上拉(INPUT_PULLUP)模式INPUT_PULLUP
Arduino 微控制器自带内部上拉电阻。如果你需要使用该内部上拉电阻,可以通过pinMode()将引脚设置为输入上拉(INPUT_PULLUP)模式。
注意:当Arduino引脚设置为输入(INPUT)模式或者输入上拉(INPUT_PULLUP)模式,请勿将该引脚与负压或者高于5V的电压相连,否则可能会损坏Arduino控制器。
digtialWrite(pin,value)//左引脚,右状态[0/LOW或者1/HIGH]
如果该引脚通过pinMode()设置为输出模式(OUTPUT),您可以通过digitalWrite()语句将该引脚设置为HIGH(5伏特)或LOW(0伏特/GND)。
如果该引脚通过pinMode()设置为输入模式(INPUT),当您通过digitalWrite()语句将该引脚设置为HIGH时,
这与将该引脚将被设置为输入上拉(INPUT_PULLUP)模式相同。
digitalRead(pin)//读取数字引脚的 HIGH(高电平)或 LOW(低电平)
本指令用于从Arduino的模拟输入引脚读取数值。Arduino控制器有多个10位数模转换通道。这意味着Arduino可以将0-5伏特的电压输入信号映射到数值0-1023。
换句话说,我们可以将5伏特等分成1024份。0伏特的输入信号对应着数值0,而5伏特的输入信号对应着1023。
引脚的输入范围以及解析度可以使用analogReference()指令进行调整。
Arduino控制器读取一次模拟输入需要消耗100微秒的时间(0.0001秒)。控制器读取模拟输入的最大频率是每秒10,000次。
analogWrite(pin,val) – PWM 3,5,6,9,10,11
将一个模拟数值写进Arduino引脚。这个操作可以用来控制LED的亮度, 或者控制电机的转速. Arduino每一次对引脚执行analogWrite()指令,都会给该引脚一个固定频率的PWM信号。PWM信号的频率大约为490Hz.
0到255之间的PWM频率值, 0对应off, 255对应on
// 引脚3连接LED
int ledPin = 3;
//变量val用来存储模拟输入信号
int val = 0;
void setup()
{
// 将连接LED的引脚设置为输出模式
pinMode(ledPin, OUTPUT);
}
void loop()
{
//读取引脚A0的输入信号,并将该数值赋给变量val
val = analogRead(A0);
// 将引脚A0读取的数值转换为0-255之间
// 并将该数值写入引脚3
analogWrite(ledPin, val / 4);
}
delay()//延时毫秒数
内置函数
serial(串行通信)
串行端口用于Arduino和个人电脑或其他设备进行通信。所有Arduino控制器都有至少一个串行端口(也称为UART或者USART)。个人电脑可以通过USB端口与Arduino的引脚0(RX)和引脚1(TX) 进行通信。
available
begin Serial.begin(9600); //打开串口通讯,设置传输速率为9600字节每秒
end
find
findUntil
flush
peek
print
Serial.print(val) Serial.print(78) 发送 “78”
Serial.print(val, format) 此指令也可以通过附加参数来指定数据的格式。这个允许的值为:BIN (binary二进制), OCT (octal八进制), DEC (decimal十进制), HEX (hexadecimal十六进制)。对于浮点数,该参数可以指定小数点的位数。例如:Serial.print(78, BIN) 发送 “1001110” Serial.println(1.23456, 2) 发送 “1.23”
println
print打印出来的内容是不能够自动换行的,而println强制自动换行
parseInt
parseFloat
read
readBytes
readBytesUntil
write
readString
readStringUntil
数值
Arduino开发语言是基于C/C++编程语言的。因此Arduino家族中的8位开发板和32位开发板的基本数据类型是有差别。对于8位开发板来说,int占2字节,double和float占4字节。而对于32位开发板,int占用4字节,double占用8字节。
数据类型 | 占用字节 | 数值范围 | 备注 |
void | |
|
只用作函数声明,表示没有返回值 |
boolean / bool | |
true,false | |
char | 1 | -128~127 | char常被是用于储存ASCII字符。如果想存储数据,建议使用byte类型。 |
unsigned |
1 | 0~255 | |
byte | 1 | 0~255 | |
int | 2 | -32768~32767 | 在基于ATMega的8位微控制器的Arduino开发板如Arduino UNO,Ardunio Mega2560,int占用2字节内存。而对于32位Arduino开发板(如Arduino Due,SAMD)int占4字节。 |
unsigned |
2 | 0~65535 | |
word | 2 | 0~65535 | |
long | 4 | -2147483648~2147483647 | |
unsigned |
4 | 0 ~ 4,294,967,295 | 等同于uint32_t类型 |
short | 2 | -32768~32767 | |
float | 4 | -3.4028235E+38~3.4028235E+38 | 只有6~7位小数精度 |
double | 4 | |
在Arduino |
string | |
|
相当于char类型的数组 |
P1笔记:
学习Arduino需要的知识:初中物理电学知识,基础电脑操作知识
P4笔记(1-3 Arduino开发板基本介绍):
Arduino Uno R3开发板:
Atmel的Atmega 328为控制器,
引脚控制外界元件,输入输出都是针对于开发板的。
供电:1、USB传输数据,供电5V 2、DC电源7~12V 3、Power处5V(必须5V)或者VIN端口(需要7~12V)供电。
指示灯:1、ON,电源指示灯。通电亮。 2、RX串口接收指示灯。USB连接计算机,并且Arduino接收数据会亮。 3、TX串口发送指示灯。USB连接计算机,并且Arduino发送数据会亮。 4、L,可编程控制指示灯。连接到13号引脚,当13号为高电平或者高阻态时亮;低电平时不亮。
P5笔记(1-4 初步认识Arduino程序):
0、一般以C/C++入门
1、备注:/**/
2、一句程序结束;
3、setup()初始,loop()循环
P6笔记(1-5 Arduino程序-变量):
1、int是“整数类型变量”
2、变量名称规则:
① 只能输入英文
② 变量名只能用连贯的一个词,中间不能加空格
③ 变量名中不能有特殊字符
④ 第一个字符不能是数字
⑤ 关键字不能做变量名称(IDE中变蓝的词)
⑥ 可以加入下划线
3、整数变量数值默认给0
4、等号(=)有个特殊的名称“赋值运算符”
PS:变量命名潜规则:1、英文拼写2、两个单词时,第二个单词首字母大写;或者用_连接两个单词。
P7笔记(1-6 Arduino程序-程序结构):
1、当打开arduino程序先去看注释文字
2、void setup()属于初始化工作(只运行一次)
3、void loop()函数会永远反复的运行
4、delay ();延迟某段时间
5、pinMode( ,)左引脚,右状态
课后问题:delay ();括号内可以添加变量名称
void setup() {
pinMode(13,OUTPUT);//初始化LED的13号引脚【又叫LED_BUILTIN】为OUTPUT模式
}
void loop() {
digitalWrite(13,HIGH);//写高电平,点亮
delay(1000);
digitalWrite(13,LOW);//写低电平,熄灭
delay(1000);
}
P8笔记(1-7 Arduino程序-变量操作):
整数类型:若一个数值超过最大范围,这个数值会返回到最小数值
变量有作用域:在特定范围内声明,分为全局变量和局部变量。(一个包含到所有函数,另一个只应用于选定的函数)
课后问题:浮点型——浮点数的取值范围在3.4028235 E+38 ~ -3.4028235 E+38
P9笔记(1-8 Arduino程序-程序函数1):
1、函数固定的格式:
什么函数+多少个参数
2、delay()只需要一个参数
课后作业:
delayMicroseconds()是用于暂停程序运行,与delay用法一致,不同的是暂停时间的单位不同。
P10笔记(1-9 Arduino程序-程序函数2):
PINMODE:
pinMode()函数语法:
pinMode(脚位,工作模式)
pinMode()函数可以将Arduino的引脚配置成三种模式:
1、输出模式(OUTPUT)——使用引脚提供≤40ma的电流
2、输入模式(INPUT)
3、上拉模式(INPUT_PULLUP)
DIGITALWRITE:
digitalWrite()函数语法:
digitalWrite(脚位,高电平或低电平)
高电平(HIGH)5v 低电平(LOW)0v/GND
使引脚变为输出的顺序:
1、先给引脚设置相应的工作状态——pinMode(脚位,工作模式)
2、然后设置脚位的状态——digitalWrite(脚位,高电平或低电平)
3、设置持续时间——delay(毫秒)
P13笔记
1、 面包板[取代飞线,来源于放置到切面包的木板]:
同一行(数字命名),串联;
同一列(ABCDE);
中间分隔;
最上面和下面2列是:一列串联,(用来接电源,中间部分用来接元件)
int delayTime=1000;
void setup() {
pinMode(5,OUTPUT);
pinMode(13,OUTPUT);
}
void loop() {
digitalWrite(5,HIGH);
digitalWrite(13,HIGH);
delay(delayTime);
digitalWrite(5,LOW);
digitalWrite(13,LOW);
delay(delayTime);
}
P15(1-14数字输入2-按键开关控制电路)笔记:
1、 窗口监视器:程序运行状态(serial.begin()调用serial库中的begin函数)
2、 digitalread():读取数字引脚的电平状态。返回值是:high(1)和low(0)
3、 serial.println():将变量数值输出到窗口监视器
4、 不按开关,引脚2是高电平1;按下开关,引脚2是低电平0