第三篇 I/O口的高级应用

3.1  调声函数

1.tone()

功能:让指定引脚产生一个占空比为50%的指定频率的方波

语法:

tone(pin,frequency);

tone(pin, frequency, duration);

pin是输出方波的引脚;frequency为输出方波的频率;duration为频率持续的时间,单位为毫秒。如果没有该参数,Arduino将持续发出设定的音调,直到改变了发声频率或者使用no Tone()函数停止发声。

注意:同一时间的tone函数只能作用于一个引脚,如果有多个引脚需要使用tone函数,则必须先使用noTone函数停止之前已经使用了tone函数的引脚

3.2脉冲宽度测量函数及超声波测距

3.2.1脉冲宽度测量函数

pulseIn()

功能:检测指定引脚上的脉冲信号宽度

语法:pulseIn(pin,value); pulseIn(pin,value, timeout);

参数:pin:读取脉冲的引脚

value:需要读取脉冲的类型,为HIGH或LOW;

timeout:超时时间,单位为微秒,返回值类型为 unsigned long

(如果超过设定时间仍未检测到脉冲,则会退出pulseIn()函数并返回0。当没有设定超时时间时,默认返回1s)

3.2.2超声波测距

1.SR04超声波传感器

引脚Vcc    Trig(触发引脚)  Echo(回馈引脚) Gnd(地)

2.使用方法

使用Arduino数字引脚给SR04模块的Trig引脚至少10us的高电平信号,触发测距功能

若有信号返回Echo引脚会输出高电平,高电平持续时间是超声波从反射到返回的时间。此时pulseIn()函数获取测距结果,并计算实际距离

示例程序:(编译已通过)

//设定SR04连接的Arduino引脚
const int TrigPin = 2;
const int EchoPin = 3;
float distance;
void setup() {
  //初始化串口通信及连接SR04的引脚
  Serial.begin(9600);
  pinMode(TrigPin, OUTPUT);
  pinMode(EchoPin, INPUT);
  Serial.println("Ultrasonic sensor:");
 

}

void loop() {
  //产生一个10us的高脉冲去触发TrigPin
  digitalWrite(TrigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(TrigPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin,LOW);
  //检测脉冲宽度,并计算出距离
  distance = pulseIn(EchoPin,HIGH)/58.00;                             //s = (v*t)/2;
  Serial.print(distance);
  Serial.print("cm");
 
  delay(1000);

}

4.中断函数

在setup()中使用attachInterrupt()函数对中断引脚进行初始化配置,以开启Arduino的外部中断功能

4.1中断触发方式

LOW:低电平触发

CHANGE:电平变化触发

RISING:上升沿触发,即低电平变高电平

FALLING:下降沿触发,即高电平变低电平

 

4.2attachInterrupt(interrupt,function,mode)

功能:对中断引脚进行初始化配置

参数:

interrupt:中断编号(不是引脚编号)int0,int1;

function:中断函数名,当中断触发后便执行此函数

mode:中断模式

例如

attachInterrupt(0, hello, FALLING);//UNO板上的2号引脚

如果不需要使用外部中断,则可以使用中断分离函数detachInterrupt()来关闭中断功能

4.3detachInterrupt(interrupt)

功能:禁用外部中断

参数:interrupt,要禁用的中断号

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值