【Arduino】教你如何自制循迹四驱小车,趣味满满DIY
材料清单:
1X 黑色Arduino小车控制板
1X 黑色循迹模块
1X 循迹模块接线
4X 黄色直流减速电机
4X 黄色轮胎
1X USB线
1X 充电宝
1X 两节18650电池盒
2X 18650电池
1X 硬纸板一块
4X 导线
1X 黑色胶带
工具:
水性笔,剪刀,直尺,裁纸刀,热熔胶枪,胶棒,电烙铁,焊锡。
步骤:
第一步:先选择硬纸板,将一个直流减速电机和轮胎组装在一起,然后在纸板上画出小车的底盘的外轮廓,使用裁纸刀和直尺画出小车底盘的外轮廓;
第二步:使用电烙铁将两节直流减速电机并联焊接在一起;
第三步:使用热熔胶枪将四直流减速电机固定在小车底盘上;
第四步:在纸板上裁出一块矩形,使用热熔胶枪将循迹模块固定在矩形纸板上,将导线连接到黑色循迹模块上面。使用热熔胶枪将矩形纸板固定在电机上;
第五步:使用热熔胶枪将黑色Arduino控制板固定在小车底座上。连接导线;
第六步:使用胶枪将电池盒固定在小车底座上。并将电池盒接线连接到Arduino板上;
第七步:将Arduino代码下载到控制板中;
/***********************************************************
File name: carTest.ino
Description: DIY four-wheeled tracking car
Website: gewbot.com
E-mail: support@gewbot.com
Author: Tom
Date: 2019/08/02
***********************************************************/
//Motor control port
const int dirAPin = 7; // define pin used to control rotational direction of motor A
const int pwmAPin = 6; // define pin for PWM used to control rotational speed of motor A
const int dirBPin = 4; // define pin used to control rotational direction of motor B
const int pwmBPin = 5; // define pin for PWM used to control rotational speed of motor B
//Define motor control direction
#define FORWARD 1
#define BACKWARD 2
#define LEFT 3
#define RIGHT 4
#define STOP 5
void setup()
{
pinMode(dirAPin, OUTPUT); // set dirAPin to output mode
pinMode(pwmAPin, OUTPUT); // set pwmAPin to output mode
pinMode(dirBPin, OUTPUT); // set dirBPin to output mode
pinMode(pwmBPin, OUTPUT); // set pwmBPin to output mode
}
void loop()
{
if(analogRead(A0)>1000&&analogRead(A1)>1000&&analogRead(A2)>1000){
ctrlCar(FORWARD,140);//Three tracking detections are black lines
}
if(analogRead(A0)>1000&&analogRead(A1)<100&&analogRead(A2)<100){
ctrlCar(LEFT,140);//Left A0 tracking detection is black line
}
if(analogRead(A0)<100&&analogRead(A1)>1000&&analogRead(A2)<100){
ctrlCar(FORWARD,140);//The middle side A1 tracking is detected as a black line
}
if(analogRead(A0)<100&&analogRead(A1)<100&&analogRead(A2)>1000){
ctrlCar(RIGHT,140);//Right A2 tracking detection is black line
}
if(analogRead(A0)<100&&analogRead(A1)<100&&analogRead(A2)<100){
ctrlCar(STOP,0);//A0, A1, A2 tracking does not detect black lines
}
}
//Control motor motion direction and speed function
void ctrlCar( int motorDir, byte motorSpd) {
switch(motorDir){
case 1:digitalWrite(dirAPin, HIGH);
digitalWrite(dirBPin, LOW);
break;
case 2:digitalWrite(dirAPin, LOW);
digitalWrite(dirBPin, HIGH);
break;
case 3:digitalWrite(dirAPin, HIGH);
digitalWrite(dirBPin, HIGH);
break;
case 4:digitalWrite(dirAPin, LOW);
digitalWrite(dirBPin, LOW);
break;
}
analogWrite(pwmAPin, motorSpd);
analogWrite(pwmBPin, motorSpd);
}
第八步:在白色地板上画出黑线,小车就可以实现循迹功能了。