记录Arduino学习的各个模块的操作方法,函数的使用及一些函数的封装。主要任务是完成机场模拟环境下有关机械臂些功能的实现
目录
操作代码
串口通信
void setup() //初始化函数
{
Serial.begin(9600); //设置通信波特率,相当于规定与电脑交流的语言
}
void loop() //执行函数
{
Serial.println("我喜欢你"); //ln起到自动回车的功能
delay(1000);
}
舵机控制
#include<Servo.h>
Servo me; //设置舵机名称
void setup()
{
me.attach(9); //设置控制引脚
}
void loop()
{
me.write(90); //设置旋转角度
}
超声波传感
引脚:VCC(正极),GND(负极),trig(触发端), echo(接收端)
函数pulseIn(pin,value),用于检测引脚输出的高低电平的脉冲宽度,Pin--需要读取脉冲的引脚,Value--需要读取的脉冲类型HIGH或LOW
const int TrigPin = 8; //设置发射脚位
const int EchoPin = 9; //设置接收脚位
float cm;
void setup()
{
Serial.begin(9600); //定义与电脑进行串口的波特率
pinMode(TeigPin,OUTPUT);
pinMode(EchoPin,INPUT);
}
void loop()
{
digitalWrite(TrigPin,LOW); //用低高低电平发送脉冲给TrigPin引脚
delayMicrosecond(2); //微秒级延时
digitalWrite(TrigPin,HIGH);
delayMicrosecond(10);
digitalWrite(TrigPin,LOW);
cm=pulseIn(EchoPin,HIGH)/58.0; //读取脉冲宽度,换算成厘米
Serial.print(cm); //显示距离
Serial.print("cm"); //显示单位
Serial.println();
delay(1000);
}
流程:
1 使用 Arduino 采用数字引脚给 SR04 的 Trig 引脚至少 10 μ s 的高电平信号,触发 SR04 模块测距功能;
2 触发后,模块会自动发送 8 个 40KHz 的超声波脉冲,并自动检测是否有信号返回。这步会由模块内部自动完成。
3 如有信号返回, Echo 引脚会输出高电平,高电平持续的时间就是超声波从发射到返回的时间。此时,我们能使用 pulseIn() 函数获取到测距的结果,并计算出距被测物的实际距离。
(实际距离1cm对应58.3微秒)
函数封装
需要定义三个变量,进行三步初始化
函数名:cs_dis() 参数:无 返回值:距离(cm)
const int TrigPin = 6; //设置发射脚位
const int EchoPin = 5; //设置接收脚位
float dis;
//设置部分
void setup()
{
Serial.begin(9600); //定义与电脑进行串口的波特率
pinMode(TrigPin,OUTPUT);
pinMode(EchoPin,INPUT);
}
void loop()
{
}
float cs_dis() //返回测得的距离,没有延时,需要外部添加
{
digitalWrite(TrigPin,LOW); //用低高低电平发送脉冲给TrigPin引脚
delayMicroseconds(2); //微秒级延时
digitalWrite(TrigPin,HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin,LOW);
dis=pulseIn(EchoPin,HIGH)/58.0; //读取脉冲宽度,换算成厘米
// Serial.print(dis); //显示距离
// Serial.print("cm"); //显示单位
// Serial.println();
return dis; //返回测得的距离,单位:cm
delay(1000);
}