《Arduino 手册(思路与案例)》栏目介绍:
在电子制作与智能控制的应用领域,本栏目涵盖了丰富的内容,包括但不限于以下主题:Arduino BLDC、Arduino CNC、Arduino E-Ink、Arduino ESP32 SPP、Arduino FreeRTOS、Arduino FOC、Arduino GRBL、Arduino HTTP、Arduino HUB75、Arduino IoT Cloud、Arduino JSON、Arduino LCD、Arduino OLED、Arduino LVGL、Arduino PID、Arduino TFT,以及Arduino智能家居、智慧交通、月球基地、智慧校园和智慧农业等多个方面与领域。不仅探讨了这些技术的基础知识和应用领域,还提供了众多具体的参考案例,帮助读者更好地理解和运用Arduino平台进行创新项目。目前,本栏目已有近4000篇相关博客,旨在为广大电子爱好者和开发者提供全面的学习资源与实践指导。通过这些丰富的案例和思路,读者可以获取灵感,推动自己的创作与开发进程。
https://blog.csdn.net/weixin_41659040/category_12422453.html
构建您的第一个低成本 2 轮移动机器人,并了解如何使用激光切割技术设计每个机器人结构。
阅读本文后,您将了解到:
如何创建两轮移动机器人。
如何创建 JLCPCB 屏蔽来连接所有设备。
使用 Arduino 为机器人编程以避开障碍物。
超声波传感器的工作原理。
TCRT5000线从动传感器的工作原理。
如何计算 18650 电池移动机器人的自主性。
如何组装两轮移动机器人的控制电路。
立即使用 Arduino UNO 和各种资源构建您的 2 轮移动机器人。
使用超声波传感器,使机器人能够检测并避开障碍物。该计算基于声音在空气中传播的速度。
声音在空气中的传播速度为340 m/s。Arduino 触发传感器发出声音信号,并测量信号来回到接收器的时间 (t)。
根据速度数据(340m/s)和时间(t),我们能够计算出机器人与物体之间的距离。
距离由下面的等式确定。
距离 = 0.034*(t/2)
根据这个方程,机器人确定距离,如果靠近障碍物,则改变其轨迹。
最后,我们有用于线路跟随器功能的TCRT5000传感器。两个传感器固定在移动机器人底座的下部区域。
项目代码
#define Motor1A 2
#define Motor1B 3
#define Motor2A 4
#define Motor2B 5
#define echoPin 10
#define trigPin 11
long tempo = 0;
byte distancia = 0;
void setup()
{
pinMode(Motor1A, OUTPUT);
pinMode(Motor1B, OUTPUT);
pinMode(Motor2A, OUTPUT);
pinMode(Motor2B, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
}
void loop()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
tempo = pulseIn(echoPin, HIGH);
delay(300);
distancia = tempo * (0.034/2);
if(distancia >= 10)
{
frente();
}
else
{
parar();
delay(500);
direita();
delay(1000);
parar();
}
}
void frente()
{
digitalWrite(Motor1B, LOW);
digitalWrite(Motor2B, LOW);
digitalWrite(Motor1A, HIGH);
digitalWrite(Motor2A, HIGH);
}
void re()
{
digitalWrite(Motor1A, LOW);
digitalWrite(Motor2A, LOW);
digitalWrite(Motor1B, HIGH);
digitalWrite(Motor2B, HIGH);
}
void parar()
{
digitalWrite(Motor1A, HIGH);
digitalWrite(Motor2A, HIGH);
digitalWrite(Motor1B, HIGH);
digitalWrite(Motor2B, HIGH);
}
void direita()
{
digitalWrite(Motor1B, LOW);
digitalWrite(Motor2A, LOW);
digitalWrite(Motor1A, HIGH);
digitalWrite(Motor2B, HIGH);
}
【Arduino 动手做】带 2 个轮子的移动机器人
项目链接:https://www.hackster.io/moreirarobotics/mobile-robot-with-2-wheels-acdd03
项目作者:Robotics Arduino
项目代码:https://www.hackster.io/code_files/543379/download