以下是基于Arduino的机器人设计方案,需要准备以下材料:

  • Arduino UNO板
  • 超声波传感器
  • 语音播报模块
  • LED灯模块
  • 舵机模块
  • 杜邦线若干

硬件连接

超声波传感器连接:

  • VCC接Arduino的5V引脚
  • GND接Arduino的GND引脚
  • Trig接Arduino的D2引脚
  • Echo接Arduino的D3引脚

语音播报模块连接:

  • VCC接Arduino的5V引脚
  • GND接Arduino的GND引脚
  • TX接Arduino的D4引脚

LED灯模块连接:

  • 正极接Arduino的D5引脚
  • 负极接Arduino的GND引脚

舵机模块连接:

  • VCC接Arduino的5V引脚
  • GND接Arduino的GND引脚
  • Signal接Arduino的D6引脚

代码实现

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX

const int trigPin = 2;
const int echoPin = 3;
const int ledPin = 5;
const int servoPin = 6;

long duration;
int distance;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(servoPin, OUTPUT);
  mySerial.begin(9600);
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration * 0.034 / 2;
  if (distance < 100) { // 当距离小于100cm时表示有人靠近
    digitalWrite(ledPin, HIGH); // 点亮LED灯
    mySerial.println("欢迎光临"); // 播报欢迎词
    for (int angle = 0; angle <= 180; angle++) { // 舵机转动
      digitalWrite(servoPin, HIGH);
      delayMicroseconds(500 + angle * 5);
      digitalWrite(servoPin, LOW);
      delayMicroseconds(19500 - angle * 5);
    }
  } else {
    digitalWrite(ledPin, LOW); // 关闭LED灯
  }
}

代码解析

SoftwareSerial mySerial(10, 11);:定义一个软串口对象,用于和语音播报模块通信。

const int trigPin = 2;:定义超声波传感器的Trig引脚为D2。

const int echoPin = 3;:定义超声波传感器的Echo引脚为D3。

const int ledPin = 5;:定义LED灯的引脚为D5。

const int servoPin = 6;:定义舵机的引脚为D6。

void setup():初始化函数,在这里设置各个引脚的模式,并初始化软串口。

void loop():循环函数,不断检测超声波传感器的距离,并根据距离来控制LED灯、语音播报模块和舵机的运行。

digitalWrite(trigPin, LOW);:将Trig引脚设置为低电平。

delayMicroseconds(2);:等待2微秒。

digitalWrite(trigPin, HIGH);:将Trig引脚设置为高电平。

delayMicroseconds(10);:等待10微秒。

digitalWrite(trigPin, LOW);:将Trig引脚设置为低电平。

duration = pulseIn(echoPin, HIGH);:读取Echo引脚的高电平持续时间,单位为微秒。

distance = duration * 0.034 / 2;:根据持续时间计算出距离,单位为厘米。

if (distance < 100) {:如果检测到距离小于100cm,则表示有人靠近。

digitalWrite(ledPin, HIGH);:点亮LED灯。

mySerial.println("欢迎光临");:通过软串口向语音播报模块发送“欢迎光临”的指令,让其播报欢迎词。

for (int angle = 0; angle <= 180; angle++) {:循环180次,让舵机旋转角度从0到180度。

digitalWrite(servoPin, HIGH);:将舵机引脚设置为高电平,让舵机转动。

delayMicroseconds(500 + angle * 5);:等待一段时间,让舵机转动到指定角度。

digitalWrite(servoPin, LOW);:将舵机引脚设置为低电平,让舵机停止转动。

delayMicroseconds(19500 - angle * 5);:等待一段时间,让舵机停止转动。

digitalWrite(ledPin, LOW);:将LED灯引脚设置为低电平,关闭LED灯

利用arduino超声波传感器语音播报模块LED灯模块和舵机模块。按如下要求设计:当检测到人来的时候机器人睁眼启动LED灯亮并且播报一次欢迎光临同时舵机转动人走时所有功能停止。给出完整代码以及各部分具体连接

原文地址: https://www.cveoy.top/t/topic/fbmC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录