怎样制作一个操纵杆来控制机器人

电子说

1.3w人已加入

描述

零件清单: -

Arduino Nano - 2

RF 433 Mhz发射器 - 接收器模块 - 1

L293D - 1

操纵杆 - 1

面包板-1

纸板 - 根据需要

脚轮 - 1

BO马达 - 2

BO电动轮 - 2

LiPo电池 - 1

跳线 - 根据需要

步骤1:模块规范

我们使用RF发射器接收器模块(如上图所示)将数据从我们的操纵杆传输到机器人。

变送器:

工作电压:3V - 最大12V。电源使用12V

工作电流:最大值小于40mA,最小值为9mA

谐振模式:(SAW)

调制模式:ASK

工作频率:Eve 315MHz或433MHz

传输功率:25mW(12V时为315MHz)

频率误差:+ 150kHz(最大值)

速度:小于10Kbps

因此该模块将在开放区域内传输长达90米。

接收器:

工作电压:5.0VDC + 0.5V

工作电流:最大≤5.5mA

工作方式:OOK/ASK

工作频率:315MHz-433.92MHz

带宽:2MHz

灵敏度:excel -100dBm(50Ω)

发射速度:《9.6Kbps(315MHz和-95dBm)

注意: - 使用可选天线会增加无线通信的有效性。一个简单的电线就可以解决问题。

操纵杆 -

模拟操纵杆是在项目中添加一些控制的好方法。

我们需要5个连接到操纵杆。

连接是:键,Y,X,电压和地。 “Y和X”是模拟,“键”是数字。

如果您不需要开关,那么您只能使用4个引脚。

第2步:原理图

机器人

机器人

机器人

此模块的连接非常简单。

for Transmitter :

Vcc 》》》》 5V

ATAD 》》》 D4“您可以根据需要从软件中进行更改”。

Gnd 》》》 Gnd

接收器:

Vcc 》》》》 5V

数据》》》 D2

Gnd 》》》 Gnd

操纵杆: -

Vcc的》》》》 5V

GND 》》》 GND

X 》》》 A0

Y》 》》 A1

Key 》》》 D2“只有在你需要使用它时才将它连接到arduino”

L293D: -

10 》》》 D6

15 》》》 D5

2 》》》 D9

7 》》》 D10

1,8,9,16 》》》 5V

4,5,12,13 》》》 GND

11,14 》》》电机A

3,6 》》》电机B

步骤3:代码

只需将此代码复制到Arduino IDE即可。你必须在一个Aduino程序中将发射器的代码和接收器的代码复制到另一个程序。

发射器的代码将被上传到操纵杆接口的arduino,接收器的代码将被连接到机器人上的arduino。

发射器代码: -

(注意: -

首先使用操纵杆进行校准串行监视器,以获得你的操纵杆各自的值)。

AS我必须发送4个数据位,我使用了4个发送器腿来发送4位而不是一个数据位,如图所示)

void setup(){

//将设置代码放在这里,运行一次:

pinMode(5,OUTPUT);

pinMode(6,OUTPUT);

pinMode(9,OUTPUT);

pinMode(10,OUTPUT);

//Serial.begin(9600);

}

void loop(){

int a = analogRead(A0) ;

int b = analogRead(A1);

//Serial.print(a);

//Serial.print(“\\”);

//Serial.println(b);

if(b》 = 700& b 《1023& a》 = 500&& a 《= 540){

digitalWrite(5,0) );//FORWARD

digitalWrite(6,1);

digitalWrite(9,0);

digitalWrite(10,1);

}

if(b 《200& a》 = 500&& a 《= 540 ){

digitalWrite(5,1);//REVERSE

digitalWrite(6,0);

digitalWrite(9,1);

digitalWrite(10,0);

}

if(a》 = 700& a 《1023& b》 = 500 && b 《= 540){

digitalWrite(5,0);//right

digitalWrite(6,1);

digitalWrite(9,1);

digitalWrite(10,0);

}

if(a 《200& b》 = 500&& b 《= 540 ){

digitalWrite(5,1);//left

digitalWrite(6,0);

digitalWrite(9,0);

digitalWrite(10,1);

}

if(a》 = 500& a 《= 540& b》 = 500&& b 《= 540){

digitalWrite(5,0);//停止

digitalWrite(6,0);

digitalWrite(9,0);

digitalWrite(10,0);

}

}

接收者代码: -

(注意: - 由于我必须接收4个数据位,我使用了4个接收器而不是一个数据位,如原理图所示。

void setup (){

//将设置代码放在这里,运行一次:

pinMode(9,INPUT);

pinMode(10,INPUT);

pinMode(11,INPUT);

pinMode(12,INPUT);

pinMode(5,OUTPUT);

pinMode(6,OUTPUT );

pinMode(9,OUTPUT);

pinMode(10,OUTPUT);

}

void loop(){

int a,b,c,d;

a = digitalRead(9);

b = digitalRead(10);

c = digitalRead(11);

d = digitalRead(12);

if(a == 0&& b == 1&& c == 0&& d == 1){

digitalWrite(5,1);

digitalWrite(6,0);

digitalWrite(9, 1);

digitalWrite(10,0);

}

if(a == 1&& b == 0&& c == 1&& d == 0){

digitalWrite(5,0);

digita l写(6,1);

digitalWrite(9,0);

digitalWrite(10,1);

}

if(a == 0&& b == 1&& c == 1&& d == 0){

digitalWrite(5,0);

digitalWrite(6,1);

digitalWrite(9,1);

digitalWrite(10,0);

}

if(a == 1&& b == 0&& c == 0&& d == 1){

digitalWrite(5,1);

digitalWrite(6,0);

digitalWrite(9,0);

digitalWrite(10,1);

}

if(a == 0&& b == 0&& c == 0&& d == 0){

digitalWrite(5,0);

digitalWrite(6,0);

digitalWrite(9,0);

digitalWrite(10,0);

}

}

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分