拉风的自走车

2020-04-211.1万
AI 快速预览详细 收起
这个项目是一个基于Arduino Nano和L298N电机驱动的自走车DIY教程。通过超声传感探测前方物体,并在检测到障碍物时自动转弯。硬件清单包括Arduino Nano、L298N、红外避障传感器等。项目难度适中,适合初学者和STEM教育场景。通过这个项目,用户可以学习如何使用Arduino进行编程和电子制作,同时体验到从设计到实现的全过程。


见多了自动小车,有点审美疲劳了。就想到了DIY一个自走车。于是买了铝条和螺丝,折腾了一下午,弄出了个粗糙的玩意。结果不太满意,但过程充满了汗水。功能是通过超声传感探测到前方物体后开始转弯。由于负重较大,走的还比较笨拙。这个后面会调整。



拉风的自走车图1拉风的自走车图7
硬件清单见以下图例
拉风的自走车图2
Arduino nano

拉风的自走车图3
L298N

拉风的自走车图4
红外避障传感

拉风的自走车图5

超声传感

其他一些电线,螺丝,电机等附件

拉风的自走车图6
项目连线图

[mw_shl_code=applescript,false]/*

ReModified by gada888

*/


#include<NewPing.h>

int ENA = 3;  
int ENB = 9;  
int MOTOR_A1 = 4;
int MOTOR_A2 = 5;
int MOTOR_B1 = 6;
int MOTOR_B2 = 7;

int RIGHT = A0;
int LEFT = A1;  

#define TRIG A2
#define ECHO A3
#define MAX_DISTANCE 100

NewPing sonar(TRIG, ECHO, MAX_DISTANCE);

void setup() {
  // put your setup code here, to run once:
  
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(MOTOR_A1, OUTPUT);
pinMode(MOTOR_A2, OUTPUT);
pinMode(MOTOR_B1, OUTPUT);
pinMode(MOTOR_B2, OUTPUT);
pinMode(RIGHT, INPUT);
pinMode(LEFT, INPUT);  


}

void loop() {
  // put your main code here, to run repeatedly:
  
delay(70);
int distance = sonar.ping_cm();
if (distance == 0) {
  distance = 30;
}
if(distance <=15) {
  Stop();
  delay(100);
  turnRight();
  delay(350);
  moveForward();
  delay(500);
  turnLeft();
  delay(350);
  moveForward();
  delay(700);
  turnLeft();
  delay(300);
  moveForward();
  delay(400);
  turnRight();
  delay(400);
}
if (analogRead(RIGHT)<=35 && analogRead(LEFT)<=35) {
  analogWrite(ENA, 100);
  analogWrite(ENB, 100);
  digitalWrite(MOTOR_A1, LOW);
  digitalWrite(MOTOR_A2, HIGH);
  digitalWrite(MOTOR_B1, HIGH);
  digitalWrite(MOTOR_B2, LOW);
  
}else if (analogRead(RIGHT)<=35 && !analogRead(LEFT)<=35) {
  analogWrite(ENA, 100);
  analogWrite(ENB, 100);
  digitalWrite(MOTOR_A1, HIGH);
  digitalWrite(MOTOR_A2, LOW);
  digitalWrite(MOTOR_B1, HIGH);
  digitalWrite(MOTOR_B2, LOW);

}else if (!analogRead(RIGHT)<=35 && analogRead(LEFT)<=35) {
  analogWrite(ENA, 100);
  analogWrite(ENB, 100);
  digitalWrite(MOTOR_A1, LOW);
  digitalWrite(MOTOR_A2, HIGH);
  digitalWrite(MOTOR_B1, LOW);
  digitalWrite(MOTOR_B2, HIGH);
  
}else if (!analogRead(RIGHT)<=35 && !analogRead(LEFT)<=35) {

  Stop();
}

}
void Stop() {
  analogWrite(ENA, 0);
  analogWrite(ENB, 0);
  digitalWrite(MOTOR_A1, LOW);
  digitalWrite(MOTOR_A2, LOW);
  digitalWrite(MOTOR_B1, LOW);
  digitalWrite(MOTOR_B2, LOW);
}

void turnRight() {
  analogWrite(ENA, 100);
  analogWrite(ENB, 100);
  digitalWrite(MOTOR_A1, LOW);
  digitalWrite(MOTOR_A2, HIGH);
  digitalWrite(MOTOR_B1, LOW);
  digitalWrite(MOTOR_B2, HIGH);
  
}

void turnLeft() {
  analogWrite(ENA,100);
  analogWrite(ENB, 100);
  digitalWrite(MOTOR_A1, HIGH);
  digitalWrite(MOTOR_A2, LOW);
  digitalWrite(MOTOR_B1, HIGH);
  digitalWrite(MOTOR_B2, LOW);
}

void moveForward() {
  analogWrite(ENA, 100);
  analogWrite(ENB, 100);
  digitalWrite(MOTOR_A1, LOW);
  digitalWrite(MOTOR_A2, HIGH);
  digitalWrite(MOTOR_B1, HIGH);
  digitalWrite(MOTOR_B2, LOW);
}

[/mw_shl_code]拉风的自走车图8
拉风的自走车图9









创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(6)
诩
把它放地上走一下试试
20060606
20060606
机械结构能分享一下吗?
20060606
20060606回复gada888
谢谢分享
gada888
gada888
作者
回复20060606
内容更新了,看最后两张图片
小刚郭
小刚郭
为什么楼主这么爱车
gada888
gada888
作者
回复小刚郭
已经做了发炮小车,需要一个自动避障小车,自己一个人玩时候,把两台车配合对打的
rzyzzxw
rzyzzxw
所以实践出真知。+1
云天
云天
看着简单,只要动手去做,就是困难重重。所以实践出真知。
gada888
gada888
作者
回复云天
累并快乐着
hnyzcj
hnyzcj
感觉像只虫子
gada888
gada888
作者
回复hnyzcj
参照的是‘人马战神’
- 没有更多了 -