目录
程序代码:
1、定义变量
2、void setup( )
{ } 只跑一遍程序
3、void loop( )
{ } 主函数 是循环运行的
Serial.begin(9600) 设置波特率 要使与软件设置的波特率保持一致才能实现通信
Serial.real( ) 读取PC机发送给Arduino的指令或字符 一般用一个变量来接受值
Serial.println( ) 打印返回电脑的信息 末尾会输出回车
Serial.print( ) 打印返回电脑的信息 不输出回车换行
函数:
1、pinMode( )
将指定引脚配置为输入或输出模式 无返回值
pinMode(pin,mode)
pin:要设置的引脚编号
mode:设置模式
INPUT(输入模式)
OUTPUT(输出模式)
INPUT_PULLUP(上拉输入模式)
2、digitalWrite( )
将数字HIGH或LOW值写入数字引脚 无返回值
digitalWrite(pin,value)
pin:要设置的引脚编号
value:设置高低电平
HIGH(1) -> 5V
LOW(0) ->0V
3、delay( )
将程序暂停给定参数的时间量(以毫秒为单位) 无返回值
delay(ms)
ms:暂停的毫秒数
闪烁的LED灯:
1、先通过pinMode( )设置引脚为13为输出模式(OUTPUT) 在setup( )函数内
2、再通过digitalWrite( )改变引脚13的电平(HIGH/LOW) 在loop( )函数内
3、用delay( )来暂停使我们可以清晰看到闪烁状态
int pin = 13;
void setup()
{
pinMode(pin, OUTPUT);//设置13号引脚为输出状态
}
void loop()
{
digitWrite(pin, HIGH);//设置13号引脚为高电平
delay(1000);//延迟1秒,使能看到清晰的闪烁状态
digitWrite(pin, LOW);//设置13号引脚为低电平
delay(1000);//延迟1秒,使能看到清晰的闪烁状态
}
4、tone( )
在指定引脚产生指定频率的方波,可用于蜂鸣器或扬声器播放音效 无返回值
tone(pin,frequency)
pin:要设置的引脚编号
frequency:音调频率
tone(pin,frequency,duration)
pin:要设置的引脚编号
frequency:音调频率
duration:音调持续时间
5、noTone( )
停止产生方波 无返回值
noTone(pin)
pin:要设置的引脚编号
6、analogWrite( )
将模拟值(PWM波)写入引脚 在指定引脚输出指定占空比的PWM方波 无返回值
analogWrite(pin,value)
pin:要设置的引脚编号
value:占空比,介于0-255之间 用于计算一段时间的通导时间
7、analogRead( )
读取模拟器接口的值,即读取施加到其中一个引脚的电压
此函数返回0-1023之间的数字,表示0-5v的电压
val=analogRead(pin)
pin:要设置的引脚编号 Mega上为0-15
val:接受模拟接口值的变量
例如:
施加到0号引脚的电压为2.5v,则analogRead(0)的返回值为512
1023 / 5 = 204.6 204.6 * 25 = 512
int analogPin = 3;//3号引脚
int val = 0;
void setup()
{
Serial.begin(9600);//设置串口的波特率
}
void loop()
{
val = analogRead(analogPin);//把analogPin号引脚的电压的值赋给val
Serial.println(val);//输出analogPin号的电压并输出回车
}
8、attachInterrupt( )
中断函数
attchInterrupt(interrupt,function,mode)
interrupt:中断源,可选值为0或1(0为关,1为开)一般对应2号和3号数字 I/O 口
function:需要中断的函数名
mode:
LOW 低电平触发
CHANGE 在引脚电平变化时触发
RISING 低电平变为高电平时触发
FALLING 高电平变为低电平时触发
9、detachInterrupt( )
中断开关函数
detachInterrupt(interrupt)
interrupt = 1 开
interrupt = 0 关
10、interrupts( )
中断使能函数 使能中断
11、noInterrupts( )
中断使能函数 禁止中断
PWM脉冲宽度调制:
1、PWM作用:
1)通过简单的滤波电路,就可以生成真正的模拟输出量
2)控制灯光亮度,调节电机转速(限制电机和LED功率)
3)控制舵机角度
4)输出信号(接入喇叭可以发声)
5)速度控制器
2、产生PWM:
1)analogWrite(pin,val)
将模拟值(PWM波)写入引脚
在指定引脚输出指定占空比的PWM方波(方波),直到下一次调用analogWrite( )或在相同引脚上调用digitalRead( )或digitalWrite( )
pin:引脚(2-13,44-46号引脚)
value:占空比,介于0(始终通导)-255(始终关断)之间,对应电压0-5v 用于计算一段时间的通导时间
在调用analogWrite( )函数之前,不需要调用pinMode( )将引脚设置为输出
int pin = 8;
void setup()
{
pinMode(pin, OUTPUT);
}
void loop()
{
analogWrite(pin, 128);
delay(500);
}
int ledPin = 13;
int analogPin = 3;
int val = 0;
void setup()
{
pinMode(ledPin, OUTPUT);//将LED灯的引脚置为输出状态
}
void loop()
{
val = analogRead(analogPin);//读取施加到3号引脚的电压,读取的值在 0到1023之间
analogWrite(ledPin, (val / 4));//将模拟值写入LED灯13号引脚,输入的值在0到255之间
}
优点:不需要占用额外的CPU命令时间
2)手动代码实现
int pin = 38;
void setup()
{
pinMode(pin, OUTPUT);
}
void loop()
{
digitWrite(pin, HIGH);
delayMicrosecond(100);//延迟100微秒
digitWrite(pin, LOW);
delayMicrosecond(1000-100);
}
优点:
1)PWM比例可以更准确
2)周期和频率可控制
3)所有的引脚都可以输出
缺点:
CPU无法进行其他的任务了(周期较大的PWM)
3)使用PWM寄存器
3、基本原理:
PWM是随着时间而变化的方波
On-Time(通导时间) 时间信号持续时间较长
Off-Time(关断时间) 时间信号持续时间较短
Period(周期) PWM信号的通导时间和关断时间的总和
Duty Cyde(占空比) 在PWM信号周期内保持通导的时间信号的百分比
4、周期(通导时间):
Ton 通导时间
Toff 信号的关断时间
Ttotal 周期
Ttotal = Ton + Toff
5、占空比:
用于计算一段时间的通导时间
D = Ton / (Ton+Toff) = Ton / Ttotal