APP下载

Arduino避障小车控制程序设计

2019-12-19张兴华庄国锐

数码设计 2019年3期
关键词:兴华云台舵机

张兴华,庄国锐

Arduino避障小车控制程序设计

张兴华,庄国锐

(广东白云学院 机电工程学院,广东广州,510450)

本文介绍了Arduino UNO微控制器控制的智能避障小车的控制程序,小车主控制器采用Arduino UNO,左右前轮采用直流电机驱动,后轮是从动万向轮。舵机驱动的云台上放置一个超声波传感器。可以自动避障。

Arduino;智能小车;舵机云台;自动避障

引言

随着现代计算机技术的不断发展和普及,机器人的发展已经遍及近年来机器人的智能水平不断提高,并且迅速的改变着人们的生活方式。

智能小车主控制器采用Arduino UNO,三轮结构,左右前轮采用直流电机驱动,后轮是从动万向轮。舵机驱动的云台上放置一个超声波传感器。

#include

#include

LiquidCrystal lcd(13,12,7,6,5,4,3);

int Echo = A1; int Trig =A0;

int F_D = 0;int L_D = 0;int R_D = 0;

int L_m_b=8;int L_m_g=9; //左电机后退(IN1)

//左电机前进(IN2)

int R_m_g=10; // 右电机前进(IN3)

int R_m_b=11; // 右电机后退(IN4)

int key=A2;int sp=2;

int ang,pw,v;

void setup(){

Serial.begin(9600); // 初始化串口

pinMode(L_m_g,OUTPUT);//PIN8 pinMode(L_m_b,OUTPUT); // PIN 9

pinMode(R_m_g,OUTPUT);// PIN 10

pinMode(R_m_b,OUTPUT);//PIN 11

pinMode(key,INPUT); pinMode(beep,OUTPUT);

pinMode(Echo, INPUT); // 超声波输入脚

pinMode(Trig, OUTPUT); // 超声波输出脚

lcd.begin(16,2);//初始化液晶

pinMode(sp,OUTPUT);}//舵机接口

void run(int time){

digitalWrite(R_m_g,HIGH); digitalWrite(R_m_b,LOW);

analogWrite(R_m_g,165);//PWM调速

analogWrite(R_m_b,0);

digitalWrite(L_m_g,HIGH); digitalWrite(L_m_b,LOW);

analogWrite(L_m_g,115); analogWrite(L_m_b,0);

delay(time * 100);} //执行时间,可调整

void brake(int time); //刹车,停车

void left(int time);//左轮不动,右轮前进

void spin_left(int time);

void right(int time);void back(int time);

void spin_right(int time);

float D_test(){

digitalWrite(Trig, LOW);

delayMicroseconds(2);// 延时2μs

digitalWrite(Trig, HIGH);

delayMicroseconds(10);

digitalWrite(Trig, LOW);

float FD = pulseIn(Echo, HIGH);

FD= FD/58; return FD;}

void D_display(int D){

if((2

lcd.home();lcd.print(" D: "); //显示

lcd.setCursor(6,2);//光标定位在第2行

lcd.print(D);lcd.print("cm");

}

else{

lcd.home();lcd.print("Out of range"); }

delay(250); lcd.clear();}

Void servopulse(int sp,int ang){//servopin

pw=(ang*11)+500;//将角度对应500~2480值

digitalWrite(sp,HIGH); delayMicroseconds(pw);//延时微秒数

digitalWrite(sp,LOW); delay(20-pw/1000);}//延时毫秒数

void front_detection(){

for(int i=0;i<=5;i++) //延时以转到角度

servopulse(sp,90); F_D = D_test();}

void left_detection(){

for(int i=0;i<=15;i++)

servopulse(sp,175); L_D = D_test();}

void right_detection(){

for(int i=0;i<=15;i++)

servopulse(sp,5);

R_D = D_test();}

void loop(){

while(1)

{

front_detection();//测量前方距离

if(F_D < 32){

back(2);brake(2);

left_detection();D_display(L_D); right_detection();D_display(R_D);

if((L_D < 35 ) &&( R_D < 35 ))

spin_left(0.7);//旋转掉头

else if(L_D > R_D)

{left(3);brake(1); }

else if(L_D < R_D) {right(3);brake(1); }

}

else

run(); //无障碍物,直行

}

}

2 结束语:

在未来的社会中智能也是大势所趋,只能机器人的发展水平可反应出一个国家的高科技水平和综合国力,是国家综合国力强大的标志,也是人类文明进步的标志。

[1] 《Make:Arduino Bots and Gadgets》Kimmo Karvinen,Tero Karvinen,O'Reilly.

[2] 《爱上Arduino》Massimo Benzi,2014.05,人民邮电出版社。

[3] 赵云娥,吴振强.基于Arduino的双模式智能避障小车系统设计与实现[J].现代电子技术,2017,40(21):94-97.

[4] 于洋. 基于Arduino的自动避障及通信控制智能小车系统的研究与设计[D].吉林大学,2017.

[5] 卞云松.基于Arduino单片机的避障小车机器人[J].自动化技术与应用,2014,33(01):16-19.

Control program design of Arduino vehicle for obstacle avoidance

Zhang Xinghua, Zhuang Guorui

Institute of mechanical and electrical engineering of Guangdong Baiyun University, Guangzhou 510450

This paper introduces the control program of the intelligent obstacle avoidance car controlled by Arduino UNO micro controller. The main controller of the car adopts Arduino UNO,the left and right front wheels are driven by DC motor and the rear wheel is a driven universal wheel. An ultrasonic sensor is placed on the platform driven by the steering gear. It can automatic obstacle avoidance.

Arduino; intelligent car; steering gear pan; automatic obstacle avoidance.

10.19551/j.cnki.issn1672-9129.2019.03.038

TP212

A

1672-9129(2019)03-0110-02

张兴华,(1967-)男,硕士,工程师,广东白云学院。研究方向智能装备、工业机器人设计。E-mail:2209282216@qq.com。

庄国锐,(1995-)男,广东白云学院。材料成型及控制工程专业。E-mail:2209282216@qq.com。

猜你喜欢

兴华云台舵机
云上之家——万科·郡西云台
龙门山·卧云台
毛焰艺术风格中的自我表达
兴华市林湖乡:村企联建共走振兴路
帮我买云台
摄影作品欣赏
含齿隙弹载舵机的全局反步模糊自适应控制
基于STM32的无线FPV云台设计
基于dsPIC单片机的飞艇舵机控制实现
马兴华摄影作品欣赏