0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

arduino小车详细制作教程

454398 作者:工程师吴畏 2018-09-18 10:37 次阅读

第一次做,很粗糙,都是模块的组合,变速箱用的是模型小车的,最大的难点在于变速箱和马达齿轮的配合因为完全是不配套的两样东西,视频中小车也有走外的迹象,配合是主要问题,两块亚克力板的孔没有打好,在安装上还是有瑕疵

智能小车接线

arduino小车详细制作教程

第一刀开启arduino智能小车DIY的第一步

重要的电机驱动扩展板到了

最初的设想想加个散热扇

这边用到了接口扩展板

舵机到货,有点小贵,金属齿的

搭建中,,,

程序DEBUG中

完成图

变速箱和马达

为了使用大扭力电机,改变了原有变速箱的安装方式

代码部分

//超声波智能避障车程序(ARDUINO)

#include

int pinI1=5;//定义I1接口(I1-I4是l298N扩展模块上的电机输出接口)

int pinI2=4;//定义I2接口

int pinI3=7;//定义I3接口

int pinI4=6;//定义I4接口

int inputPin = A1; // 定義超音波信號接收腳位(插错的后果,读值为0,舵机不停地转头)

int outputPin =A0; // 定義超音波信號發射腳位

int Fspeedd = 0; // 前速

int Rspeedd = 0; // 右速

int Lspeedd = 0; // 左速

int directionn = 0; // 前=8 後=2 左=4 右=6

Servo myservo; // 設 myservo

int delay_time = 250; // 伺服馬達轉向後的穩定時間

int Fgo = 8; // 前進

int Rgo = 6; // 右轉

int Lgo = 4; // 左轉

int Bgo = 2; // 倒車

void setup()

{

Serial.begin(9600); // 定義馬達輸出腳位

pinMode(pinI1,OUTPUT);

pinMode(pinI2,OUTPUT);

pinMode(pinI3,OUTPUT);

pinMode(pinI4,OUTPUT);

pinMode(inputPin, INPUT); // 定義超音波輸入腳位

pinMode(outputPin, OUTPUT); // 定義超音波輸出腳位

myservo.attach(9); // 定義伺服馬達輸出第9腳位(PWM)

}

void advance(int a) // 前進

{

digitalWrite(pinI4,LOW);//使直流电机(右)逆时针转

digitalWrite(pinI3,HIGH);

digitalWrite(pinI1,LOW);//使直流电机(左)顺时针转

digitalWrite(pinI2,HIGH);

delay(a * 100);

}

void turnR(int b) //右轉(雙輪)

{

digitalWrite(pinI4,HIGH);//使直流电机(右)顺时针转

digitalWrite(pinI3,LOW);

digitalWrite(pinI1,LOW);//使直流电机(左)顺时针转

digitalWrite(pinI2,HIGH);

delay(b * 100);

}

void turnL(int c) //左轉(雙輪)

{

digitalWrite(pinI4,LOW);//使直流电机(右)逆时针转

digitalWrite(pinI3,HIGH);

digitalWrite(pinI1,HIGH);//使直流电机(左)逆时针转

digitalWrite(pinI2,LOW);

delay(c * 100);

}

void stopp(int d) //停止

{

digitalWrite(pinI4,HIGH);//使直流电机(右)刹车

digitalWrite(pinI3,HIGH);

digitalWrite(pinI1,HIGH);//使直流电机(左)刹车

digitalWrite(pinI2,HIGH);

delay(d * 100);

}

void back(int e) //後退

{

digitalWrite(pinI4,HIGH);//使直流电机(右)顺时针转

digitalWrite(pinI3,LOW);

digitalWrite(pinI1,HIGH);//使直流电机(左)逆时针转

digitalWrite(pinI2,LOW);

delay(e * 100);

}

void detection() //測量3個角度(0.90.179)

{

int delay_time = 250; // 伺服馬達轉向後的穩定時間

ask_pin_F(); // 讀取前方距離

if(Fspeedd 《 10) // 假如前方距離小於10公分

{

stopp(1); // 清除輸出資料

back(2); // 後退 0.2秒

}

if(Fspeedd 《 25) // 假如前方距離小於25公分

{

stopp(1); // 清除輸出資料

ask_pin_L(); // 讀取左方距離

delay(delay_time); // 等待伺服馬達穩定

ask_pin_R(); // 讀取右方距離

delay(delay_time); // 等待伺服馬達穩定

if(Lspeedd 》 Rspeedd) //假如 左邊距離大於右邊距離

{

directionn = Rgo; //向右走

}

if(Lspeedd 《= Rspeedd) //假如 左邊距離小於或等於右邊距離

{

directionn = Lgo; //向左走

}

if (Lspeedd 《 10 && Rspeedd 《 10) //假如 左邊距離和右邊距離皆小於10公分

{

directionn = Bgo; //向後走

}

}

else //加如前方不小於(大於)25公分

{

directionn = Fgo; //向前走

}

}

void ask_pin_F() // 量出前方距離

{

myservo.write(90);

digitalWrite(outputPin, LOW); // 讓超聲波發射低電壓2μs

delayMicroseconds(2);

digitalWrite(outputPin, HIGH); // 讓超聲波發射高電壓10μs,這裡至少是10μs

delayMicroseconds(10);

digitalWrite(outputPin, LOW); // 維持超聲波發射低電壓

float Fdistance = pulseIn(inputPin, HIGH); // 讀差相差時間

Fdistance= Fdistance/5.8/10; // 將時間轉為距離距离(單位:公分)

Serial.print(“F distance:”); //輸出距離(單位:公分)

Serial.println(Fdistance); //顯示距離

Fspeedd = Fdistance; // 將距離 讀入Fspeedd(前速)

}

void ask_pin_L() // 量出左邊距離

{

myservo.write(5);

delay(delay_time);

digitalWrite(outputPin, LOW); // 讓超聲波發射低電壓2μs

delayMicroseconds(2);

digitalWrite(outputPin, HIGH); // 讓超聲波發射高電壓10μs,這裡至少是10μs

delayMicroseconds(10);

digitalWrite(outputPin, LOW); // 維持超聲波發射低電壓

float Ldistance = pulseIn(inputPin, HIGH); // 讀差相差時間

Ldistance= Ldistance/5.8/10; // 將時間轉為距離距离(單位:公分)

Serial.print(“L distance:”); //輸出距離(單位:公分)

Serial.println(Ldistance); //顯示距離

Lspeedd = Ldistance; // 將距離 讀入Lspeedd(左速)

}

void ask_pin_R() // 量出右邊距離

{

myservo.write(177);

delay(delay_time);

digitalWrite(outputPin, LOW); // 讓超聲波發射低電壓2μs

delayMicroseconds(2);

digitalWrite(outputPin, HIGH); // 讓超聲波發射高電壓10μs,這裡至少是10μs

delayMicroseconds(10);

digitalWrite(outputPin, LOW); // 維持超聲波發射低電壓

float Rdistance = pulseIn(inputPin, HIGH); // 讀差相差時間

Rdistance= Rdistance/5.8/10; // 將時間轉為距離距离(單位:公分)

Serial.print(“R distance:”); //輸出距離(單位:公分)

Serial.println(Rdistance); //顯示距離

Rspeedd = Rdistance; // 將距離 讀入Rspeedd(右速)

}

void loop()

{

myservo.write(90); //讓伺服馬達回歸 預備位置 準備下一次的測量

detection(); //測量角度 並且判斷要往哪一方向移動

if(directionn == 2) //假如directionn(方向) = 2(倒車)

{

back(8); // 倒退(車)

turnL(2); //些微向左方移動(防止卡在死巷裡)

Serial.print(“ Reverse ”); //顯示方向(倒退)

}

if(directionn == 6) //假如directionn(方向) = 6(右轉)

{

back(1);

turnR(6); // 右轉

Serial.print(“ Right ”); //顯示方向(左轉)

}

if(directionn == 4) //假如directionn(方向) = 4(左轉)

{

back(1);

turnL(6); // 左轉

Serial.print(“ Left ”); //顯示方向(右轉)

}

if(directionn == 8) //假如directionn(方向) = 8(前進)

{

advance(8); // 正常前進

Serial.print(“ Advance ”); //顯示方向(前進)

Serial.print(“ ”);

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 智能小车
    +关注

    关注

    85

    文章

    541

    浏览量

    81177
  • Arduino
    +关注

    关注

    184

    文章

    6425

    浏览量

    184769
收藏 人收藏

    评论

    相关推荐

    基于Arduino UNO和L298N的避障小车DIY制作

    一、 壁障小车制作 1、 制作避障小车的准备工作 硬件:Arduino UNO、L298N驱动模块、超声波模块、
    发表于 05-08 10:45 4.5w次阅读

    Arduino手机蓝牙遥控智能小车制作教程

    `今天介绍一个Arduino手机蓝牙遥控智能小车制作教程先来看看视频演示:首先给大家介绍今天要使用到的主板:一个mega32u4带两路直流电机驱动的整合开发板:Mboard。MBoard是一款
    发表于 04-27 11:16

    51单片机智能小车制作详细教程

    51单片机智能小车制作详细教程,51单片机蓝牙小车(精要版)实现:通过手机与小车的蓝牙通信,实现手机控制
    发表于 07-15 08:36

    51循迹小车详细制作过程

    51循迹小车详细制作过程,循迹小车话从哪里说起,等到你要说话,什么话都是那样渺茫地找不到个源头。假期来了,决定自己动手做点东西,于是刚接触51不久的我就将眼光转向了“简单”的循迹
    发表于 07-21 09:46

    基于Arduino UNO的小车制作过程简析

    材料:小车套件、Arduino UNO板子、面包板及连接线、L298N电机驱动模块、电池盒、电池一、智能小车套件拼装关于小车套件拼装建议大家在做小车
    发表于 01-05 08:16

    Arduino蓝牙避障小车制作过程

    文章目录前言一、pandas是什么?二、使用步骤1.引入库 2.读入数据 总结前言最近学了些许Arduino知识,加之老师要求用Arduino做出一点东西用来展示,所以自己做了一个Arduino
    发表于 01-05 08:20

    如何使用Arduino单片机制作超声波+红外线智能避障小车

    , 由于Arduino语言有些类似C++的格式而且简单,因此在父亲的帮助下我学习了Arduino单片机和Arduino编程语言,这篇文章介绍了我使用Arduino单片机
    发表于 01-19 07:04

    arduino版的自动避障小车程序

    自动避障小车 arduino版的自动避障小车,自己写的程序
    发表于 11-24 15:24 0次下载

    用手机蓝牙APP控制的基于arduino制作的蓝牙小车

    本文档的主要内容详细介绍的是用手机蓝牙APP控制的基于arduino制作的蓝牙小车
    发表于 10-15 08:00 87次下载

    WIFI智能小车设计制作教程的详细资料免费下载

    本文档的主要内容详细介绍的是WIFI智能小车设计制作教程的详细资料免费下载。
    发表于 11-09 16:06 32次下载

    Arduino教程之如何使用Arduino制作一个宝宝使用的小桔灯详细资料概述

    本文档的主要内容详细介绍的是Arduino教程之如何使用Arduino制作一个宝宝使用的小桔灯详细资料概述主要内容包括了:
    发表于 01-04 18:22 14次下载
    <b class='flag-5'>Arduino</b>教程之如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>一个宝宝使用的小桔灯<b class='flag-5'>详细</b>资料概述

    基于Arduino的麦克纳姆轮小车电路原理图免费下载

    本文档的主要内容详细介绍的是基于Arduino的麦克纳姆轮小车电路原理图免费下载。
    发表于 04-29 08:00 20次下载
    基于<b class='flag-5'>Arduino</b>的麦克纳姆轮<b class='flag-5'>小车</b>电路原理图免费下载

    如何使用Arduino实现智能小车的自由行详细程序资料免费下载

    本文档的主要内容详细介绍的是如何使用Arduino实现智能小车的自由行详细程序资料免费下载。
    发表于 05-30 08:00 10次下载
    如何使用<b class='flag-5'>Arduino</b>实现智能<b class='flag-5'>小车</b>的自由行<b class='flag-5'>详细</b>程序资料免费下载

    使用Arduino设计的智能小车自动避障的接线说明

    本文档的主要内容详细介绍的是使用Arduino设计的智能小车自动避障的接线说明。
    发表于 11-22 08:00 18次下载
    使用<b class='flag-5'>Arduino</b>设计的智能<b class='flag-5'>小车</b>自动避障的接线说明

    Arduino制作循迹小车教程

    Arduino制作循迹小车完全教程
    发表于 01-05 11:09 2次下载