Arduino机械臂meArm学习记录

该教程介绍了如何使用Arduino进行串口通信、舵机控制以及超声波传感器进行距离测量。在Arduino的setup和loop函数中编写代码,实现了串口发送信息、舵机旋转90度以及通过超声波传感器计算物体距离的功能。还封装了测量距离的函数cs_dis(),便于在其他项目中复用。
摘要由CSDN通过智能技术生成

记录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);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值