电子发烧友App

硬声App

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

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

3天内不再提示
电子发烧友网>电子资料下载>电子资料>制作Arduino控制的机器人

制作Arduino控制的机器人

2023-07-06 | zip | 0.04 MB | 次下载 | 免费

资料介绍

描述

今天我们将制作一个Arduino控制的机器人它有点类似于我之前的项目。唯一的区别是我没有使用陀螺仪传感器,而是使用了操纵杆模块。机器人使用 Rf (ASK) 发射器和接收器模块进行无线控制。这两个电路均由两个 ​​Arduino 板组成,均使用 9 V 电池供电

在职的 -

这个项目的工作非常简单。操纵杆模块为 X 和 Y 轴运动提供模拟值。然后借助各种 if else 语句将该值与设置值进行比较。并据此向接收方发送一个字符。就像在这种情况下,字符“a”被发送用于机器人的向前移动。

这些字符然后由另一端的 Rf 接收器接收。接收器的工作就是接收字符并将其发送到 Arduino。Arduino 然后根据发送的字符移动机器人。运动由 L293d 电机驱动模块控制。这是该项目的基本工作。现在让我们开始构建这个机器人。

第 1 步:获取耗材!!!

poYBAGOILIyAGNZDAAGa7zmoOHI023.jpg
 

购买耗材是任何项目的关键部分。最重要的是价格合适。为此,我建议您从UTSource.net网站购买它们。他们以低成本和快速运输提供优质组件。他们还为制造商和原型制造商提供高质量的 PCB现在就去看看他们,并利用他们免费的一个月 Plus 会员试用,这给客户带来了很多好处。

现在让我们快速浏览一下构建这个机器人所需的东西:

1. Arduino Uno 开发板 x 2

2.摇杆模组x 1

3. 射频发射和接收模块 x 1

4. 电机驱动模块 (L293D) x 1

5. 面包板 x 2

6. 带轮子和电机的金属底盘。

7.带领

8. 头线

9.电池(9V)

第 2 步:电路图

pYYBAGOILJGASdlWAAB7lIxlFpI873.jpg
 

该项目的电路图非常简单。构建这个项目大约只需要 10 分钟。连接显示在上面的电路图中。操纵杆模块连接到两个模拟输入,发射器连接到数字引脚。这里我使用了 pin 12。你可以使用串行端口,但这会在上传草图时导致问题。因此,改为使用虚拟线库并将其他一些引脚设为 tx 引脚。

接收器部分由电机驱动模块和射频接收器组成。我们在这里再次使用了虚拟线库。如果接收到字符,则连接一个 LED 以获取状态。两块板均使用 9 V 电池供电。一个单独的电池用于为电机驱动模块供电。

第 3 步:上传草图

 
 
 
poYBAGOILJSATYVOAABH_Z8AILU764.jpg
 
1 / 2
 

现在让我们将草图上传到 Arduino 板上。你可以从下面得到草图。

// 发送器代码

#include 
const int X_AX = A0;
const int Y_AX = A1;
void setup()
{
  Serial.begin(9600);    
  Serial.println("setup");
  vw_setup(2000); 
  vw_set_tx_pin(12); 
}
void loop()
{
  int xval = analogRead(X_AX);
  int yval = analogRead(Y_AX);
  if(xval<=261&&xval>=0)
  {
   char *msg2 = "a";//send a to the receiver
   vw_send((uint8_t *)msg2, strlen(msg2));
   vw_wait_tx();
   Serial.println("a");
  }
  else if(xval<=1023&&xval>=782)
  {
   char *msg2 = "b";
   vw_send((uint8_t *)msg2, strlen(msg2));
   vw_wait_tx();
   Serial.println("b");
  }
  else if(yval<=261&&yval>=0)
  {
   char *msg2 = "c";
   vw_send((uint8_t *)msg2, strlen(msg2));
   vw_wait_tx(); 
   Serial.println("c");
  }
  else if(yval<=1023&&yval>=782)
  {
   char *msg2 = "d";
   vw_send((uint8_t *)msg2, strlen(msg2));
   vw_wait_tx(); 
   Serial.println("d");
  }
  else 
  {
   char *msg2 = "e";
   vw_send((uint8_t *)msg2, strlen(msg2));
   vw_wait_tx(); 
   Serial.println("e");
  }
}
// RECIEVER CODE
#include //Motor A right
const int motorPin1  = 9;  // Pin 9 of L293D
const int motorPin2  = 10;  // Pin 10 of L293D
//Motor B left
const int motorPin3  = 11; // Pin  11 of L293D
const int motorPin4  = 12;  // Pin 12 of L293D
void setup()
{
    Serial.begin(9600); 
    Serial.println("setup");
    vw_setup(2000);  
    vw_set_rx_pin(8);    
    vw_rx_start();      
    pinMode(13, OUTPUT);
    //digitalWrite(13, HIGH);
    pinMode(motorPin1, OUTPUT); 
    pinMode(motorPin2, OUTPUT);
    pinMode(motorPin3, OUTPUT);
    pinMode(motorPin4, OUTPUT);
}if (vw_get_message(buf, &buflen)) 
    {
  int i;
  for (i = 0; i < buflen; i++)
  {
     if(buf[i] == 'a')//if button a is pressed.... i.e.forward buton
      {
        digitalWrite(13, HIGH);
        Serial.println("Forward");
        digitalWrite(motorPin1, LOW);
        digitalWrite(motorPin2, HIGH);//FORWARD
        digitalWrite(motorPin3, LOW );
        digitalWrite(motorPin4, HIGH);
      }
     if(buf[i] == 'b')
      {
        digitalWrite(13, HIGH);
        Serial.println("Backward");
        digitalWrite(motorPin1, HIGH);
        digitalWrite(motorPin2, LOW);//REVERSE
        digitalWrite(motorPin3, HIGH);
        digitalWrite(motorPin4, LOW);
      }
      if(buf[i] == 'c')
      {
        digitalWrite(13, HIGH);
        Serial.println("Left");
        digitalWrite(motorPin1, LOW);
        digitalWrite(motorPin2, LOW);//LEFT
        digitalWrite(motorPin3, LOW);
        digitalWrite(motorPin4, HIGH);
      }
     if(buf[i] == 'd')
      {
        digitalWrite(13, HIGH);
        Serial.println("Right");
        digitalWrite(motorPin1, LOW);
        digitalWrite(motorPin2, HIGH);//RIGHT
        digitalWrite(motorPin3, LOW);
        digitalWrite(motorPin4, LOW);
      }
     if(buf[i] == 'e')
      {
        digitalWrite(13, LOW);
        Serial.println("Stop");
        digitalWrite(motorPin1, LOW);
        digitalWrite(motorPin2, LOW);//STOP
        digitalWrite(motorPin3, LOW);
        digitalWrite(motorPin4, LOW);
      }
      Serial.print(" ");
  }
  Serial.println("");
}
}

上传代码后,连接电池并运行您的项目。如果机器人向操纵杆的相反方向移动,则只需交换电机线即可。

第 4 步:项目的运作

 

如果您喜欢我制作的内容,请不要忘记与您的朋友分享这个教程也关注我,因为我经常想出这样的项目。如果您对此项目有任何疑问,请在下方评论。我会尽力帮助你。就这样吧。看到你会与另一个很棒的项目。谢谢你。

.


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费