arduino uno r3 机械臂

2023-11-16

1、硬件

    arduino uno r3 改进板、sg90舵机(180度 x 4)、JoyStick Shield PS2游戏摇杆扩展板(或者按键 遥杆模块)、3D打印件、M3螺丝螺母(10mm 15mm 25mm )以及M2螺丝螺母。

2、接线

        开发版使用DC口7V-12V 供电(只用usb(5v)供电口 舵机驱动不了,usb口和DC口可同时供电),舵机正负极并联后直接使用拓展版5v供电,舵机信号线按照代码依次接到D9、D10、D11、D12,对应开发板 9、10、11、12 IO口。

 3、代码

#include <Servo.h>

Servo servob, servot, servol, servor;  // 舵机对象 底座、夹子、小臂、大臂

int bpos = 0, tpos = 0, lpos = 0, rpos = 0;  // 舵机初始角度

int FirstShotX, FirstShotY;

// 舵机动作 num 舵机 1 底座 2 夹子 3 小臂 4 大臂  status true 正向
void action(int num, bool status) {
  int plus = 1;
  if (status != 1) plus = -1;
  switch (num) {
    case 1:
      if (status) bpos += 2;
      else bpos -= 2;
      if (bpos > 180) bpos = 180;
      else if (bpos < 0) bpos = 0;
      servob.write(bpos);
      Serial.println("底座:" + String(bpos));
      delay(5);
      break;
    case 2:
      if (status) tpos += 6;
      else tpos -= 6;
      if (tpos > 180) tpos = 180;
      else if (tpos < 0) tpos = 0;
      servot.write(tpos);
      Serial.println("夹子:" + String(tpos));
      delay(5);
      break;
    case 3:
      if (status) lpos += 2;
      else lpos -= 2;
      if (lpos > 180) lpos = 180;
      else if (lpos < 0) lpos = 0;
      servol.write(lpos);
      delay(8);
      Serial.println("小臂:" + String(lpos));
      break;
    case 4:
      if (status) rpos += 2;
      else rpos -= 2;
      if (rpos > 180) rpos = 180;
      else if (rpos < 0) rpos = 0;
      servor.write(rpos);
      Serial.println("大臂:" + String(rpos));
      delay(8);
      break;
  }
}

void setup() {
  Serial.begin(9600);
  servob.attach(9);
  servot.attach(10);
  servol.attach(11);
  servor.attach(12);

  servob.write(bpos);
  servot.write(tpos);
  servol.write(lpos);
  servor.write(rpos);
  for (int i = 0; i < 19; i++) {
    pinMode(i, INPUT);
    digitalWrite(i, 1);
  }
  FirstShotX = 0;
  FirstShotY = 0;
}

void loop() {
  for (int i = 2; i < 9; i++) {
    int someInt = digitalRead(i);
    if (someInt == 0) {
      switch (i) {
        case 2:
          Serial.print("--------> Button A ");
          action(2, true);
          break;
        case 3:
          Serial.print("--------> Button B ");
          action(1, false);
          break;
        case 4:
          Serial.print("--------> Button C ");
          action(2, false);
          break;
        case 5:
          Serial.print("--------> Button D ");
          action(1, true);
          break;
        case 6: Serial.print("--------> Button E "); break;
        case 7: Serial.print("--------> Button F "); break;
        case 8: Serial.print("--------> Button KEY "); break;
        default: break;
      }
    }
  }

  int sensorValue = analogRead(A0);
  if (FirstShotX == 0) {
    FirstShotX = sensorValue;
    Serial.print("FirstShotX = ");
    Serial.println(FirstShotX);
  }
  int x = sensorValue - FirstShotX;
  if (abs(x) > 20)
    action(3, x > 20);
  // Serial.print("X = ");
  // Serial.print(x);
  sensorValue = analogRead(A1);
  if (FirstShotY == 0) {
    FirstShotY = sensorValue;
    Serial.print("FirstShotY = ");
    Serial.println(FirstShotY);
  }
  int y = sensorValue - FirstShotY;
  if (abs(y) > 20)
    action(4, y > 20);
  // delay(10);
}

         代码只是实现了功能,遥杆控制机械臂的大臂、小臂,按键控制底座转动和夹子。舵机的移动得根据实际情况更改每次角度+-的大小调以及延时时间试出最合适的参数。还有就是舵机安装时初始角度都弄到0度安装到机械臂上。

ardunio 机械臂

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

arduino uno r3 机械臂 的相关文章

  • Arduino F()宏的实现

    我试图了解 Arduino 中的 F 宏实际上对 PGMEM 和 RAM 做了什么以及运行时的影响是什么 有人可以指出定义这个宏的文件吗 这可能是旧版本 但定义它的一个地方是Wstring h as in here http andybro
  • 如何使用 PHP 读取串口 [重复]

    这个问题在这里已经有答案了 如何使用 php 从连接到我的服务器 运行 kali linux 的旧笔记本电脑 上的 COM 端口的 arduino 读取串行数据 以便我可以在网页上显示数据 我读过有关同一问题的其他问题 所有这些问题要么超级
  • C++ 递减单字节(易失性)数组的元素不是原子的!为什么? (另外:如何在 Atmel AVR mcus/Arduino 中强制原子性)

    由于试图通过一些我不知道的简单内容来调试我的代码 我损失了几天的时间 实际上是大约 25 小时的工作 事实证明 在 AVR ATmega328 8 位微控制器 Arduino 上 用 C 递减单字节数组的元素不是原子操作 并且需要原子访问防
  • C和指针课后答案

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 第八章课后答案 提示 以下是本篇文章正文内容 下面案例可供参考
  • 如何在Arduino上将int转换为字符串?

    如何转换 int n 到一个字符串 以便当我通过串行发送它时 它作为字符串发送 这是我到目前为止所拥有的 int ledPin 13 int testerPin 8 int n 1 char buf 10 void setup pinMod
  • Arduino:字符串到整数得到奇怪的值

    我想转换一个String to an int 我所能找到的就是你必须将 String 转换为 char 数组 然后将该数组转换为int 但我的代码产生奇怪的值 我无法弄清楚问题是什么 void ledDimm String command
  • Arduino Python3 脚本

    我正在尝试使用 Python3 脚本来控制 Arduino Mega 这是一个简单的脚本 用于从键盘获取一行并通过 Arduino 回显它 我从一个可用的 Python 2 脚本开始http petrimaki wordpress com
  • PySerial 从 Arduino 读取线路的延迟

    我正在使用带有基本 DigitalReadSerial 设置的 arduino uno 如下所述 http arduino cc en Tutorial DigitalReadSerial http arduino cc en Tutori
  • 如何将值从 Arduino 发送到 Python,然后使用该值

    我正在构建一个使用 Python 进行远程控制的机器人 通过简单的 GUI 通过互联网发送控制消息 我的部分代码 GUI 和控制系统 运行得很好 但我陷入了困境 我正在尝试使用视差平传感器来获取与物体的距离信息Arduino Mega ht
  • Android BLE 扫描与 UUID 过滤器列表混淆

    我正在 Android 移动设备 A 上执行 UUID 过滤扫描 并且有两个测试用例 一个人在另一台 Android 设备 移动设备 b 上使用名为 BLE Scanner 的应用程序来创建具有两个测试服务 每个服务都有自己唯一的 UUID
  • sim800L GPRS 发布请求

    我一直在研究 LoNet 迷你 GSM 模块 SIM800L 并将其与 Arduino 连接 我已插入 SIM 移动卡并且可以连接互联网 通过串行监视器 我可以毫无问题地与它通信 但是当向网络服务器页面发出 GET 或 POST 请求时 它
  • 静态 uint8_t 数组的输入过程和类型

    我目前正在尝试将 Arduino IDE 中的整数变量转换为静态 uint8 t 数组的值 我在用 include
  • 在Python中快速绘制数据

    我正在尝试使用 arduino 绘制来自 mpu6050 imu 的数据 MPU6050 发送数据的速度比绘图快 Arduino 代码从串口提供 6 个数据 即偏航 俯仰 滚动 轴 ay 和 az 我需要快速情节的建议 Python代码 i
  • 如何实现Android Open Accessory模式即服务?

    我一直在研究 Android 开放配件开发套件 依照指示Google 提供的 DemoKit 示例 http developer android com guide topics usb accessory html 我在使解决方案适应我的
  • 带/不带类的回调函数指针 C++

    我被困 我正在尝试形成一个函数 它将吃掉无类函数指针和对象中的函数指针 这是我当前的代码 希望能解释更多 它应该在 Arduino 上运行 所以我不能使用大型库 首先 我在 Arduino 上使用这个库 SimpleTimer A time
  • AVRDUDE Android Arduino ioctl 错误

    我之前的问题 Android 无法使用 AVRDUDE 与 Arduino 通信 https stackoverflow com questions 15596376 android cannot talk to arduino using
  • 在 Arduino 上将整数/小数转换为十六进制?

    如何将整数或小数变量转换为十六进制字符串 我可以做相反的事情 将十六进制转换为整数 但我无法找出其他方法 这是为了Serial print 数组中的十六进制值 查看 Arduino 字符串教程here http arduino cc en
  • 是否可以在 Arduino 上运行 ZeroMQ

    我想知道是否可以通过 ZeroMQ 与 Arduino 进行通信 我想使用 Arduino 来控制一些设备 并希望将大部分应用程序放在计算机上 为此 如果 Arduino 和控制器可以通过 Zeromq 以及 WiFi 或以太网扩展板进行通
  • 使用 Ardulink 命令 Arduino Uno

    我试图在我的 JAVA 应用程序中使用 Ardulink 库来命令我的 Arduino Uno 但没有成功 我不知道我错过了什么 这是我的代码 Link link Link getDefaultInstance boolean connec
  • 无法将 minicom 的输出保存到文件中

    当我使用Minicom从串口捕获数据时 我需要将大数据保存到一个文件中 名为minicom cap 但是 如果我按 Ctrl A 和 L 来捕获文件 则失败 没有创建文件 minicom cap之前并不存在 我的下载目录已正确创建 我的操作

随机推荐

  • 利用Tensorflow构建CNN图像多分类模型及图像参数、数据维度变化情况实例分析

    本文以CIFAR 10为数据集 基于Tensorflow介绍了CNN 卷积神经网络 图像分类模型的构建过程 着重分析了在建模过程中卷积层 池化层 扁平化层 全连接层 输出层的运算机理 以及经过运算后图像尺寸 数据维度等参数的变化情况 CIF
  • Linux怎么重启文档,linux快速重启技巧

    技巧 Linux系统快速启动的十大秘诀 Linux需要重新启动是少有的 可是一旦需要 Linux启动常常是缓慢的 简单介绍一些加速的办法 其中一些方法不太难 1 撤消多余的服务 根据机器的用途 很多服务是不需要的 要是Linux只用作桌面
  • 常见30种数学建模模型_数学建模_隐马尔可夫模型HMM

    1 要解决的问题 例如 1 我要用键盘输入一大段文字 如果在手动输入时 能不能有一个输入法能猜测出我想要录入的句子供我选择 2 和别人对话 听到一串连续的声音 能不能有个机器能预测他实际想要表达的内容 3 希望根据当前天气的情况来预测未来天
  • tshark删除pcap文件中与网关通信的数据包

    与网关的通信一般是 192 168 0 1或192 168 1 1或其他的ip 需要明确网关ip 然后删除即可 tshark r 源数据包 pcap Y ip dst 192 168 1 1 Y ip src 192 168 1 1 w 保
  • 用C语言实现单链表的基本操作(附有完整代码)

    导语 无论是顺序存储结构还是链式存储结构 在内存中进行存放元素的时候 不仅需要存放该元素的相关信息 还需要存放该元素和其他元素之间的关系 而我们之前所学的顺序表 与生俱来 的物理结构自然地能够表达出元素和元素之间的关系 不需要额外的信息去表
  • 超详细!一文讲透机器视觉常用的 3 种“目标识别”方法

    来源 机器视觉沙龙 随着机器视觉技术的快速发展 传统很多需要人工来手动操作的工作 渐渐地被机器所替代 传统方法做目标识别大多都是靠人工实现 从形状 颜色 长度 宽度 长宽比来确定被识别的目标是否符合标准 最终定义出一系列的规则来进行目标识别
  • 软件测试面试题(持续更新)

    1 软件配置管理的作用 软件配置包括什么 软件配置管理 Software Configuration Management SCM 是一种标识 组织和控制修改的技术 软件配置管理应用于整个软件工程过程 在软件建立时变更是不可避免的 而变更加
  • 支付宝小程序IOS连接mqtt接收AMQJS0007E Socket error

    1 现象 支付宝小程序集成xmqtt js后 安卓可以正常连接服务器 接收发送消息 IOS连接服务器正常 但是无法接收稍长的字符串 支付宝小程序的真机调试报错AMQJS0007E Socket error 未能完成操作 OSStatus错误
  • BMC—服务器运维管理利器

    BMC全称BaseboardManagement Controller 通俗来讲 BMC是整个服务器单板的大管家 从一款服务器上电时刻 它的所有部件都归BMC来负责和管理 说到这里 大家可能已经了解BMC是与服务器有关的 但还是会有疑惑 B
  • Libevent使用例子,从简单到复杂

    转载请注明出处 http blog csdn net luotuo44 article details 39670221 本文从简单到复杂 展示如何使用libevent 网上的许多例子都是只有服务器端的 本文里面客户端和服务器端都有 以飨读
  • 算法设计与分析考试复习

    冒泡排序 排序思路 1 从第0个元素开始 每次用相邻的两个元素进行比较 2 一旦发现后面的一个元素小于我们前面的一个元素就交换位置 3 经过一轮冒泡排序比较之后最后一个元素就是最大值 4 排除最后一个元素 以此类推 每次比较完成后最大值都会
  • IDEA 断点调式按键/断点跳跃技巧

    一 调试按键的使用说明 对于我日常调试 Step Over Step Into使用最频繁 当然还有断点跳跃 1 Step Over 按照程序从上往下执行 遇到方法也点击这个 则跳过方法 方法其实直接执行完成 直接进入下一个语句 简单的方法或
  • 软件工程毕业设计选题大全 毕设题目推荐

    文章目录 0 前言 1 题目推荐 2 开题指导 2 1 起因 2 2 如何避坑 重中之重 2 3 为什么这么说呢 2 4 难度把控 2 5 题目名称 3 最后 0 前言 这是学长亲手整理的 软件工程毕设选题系列第三篇 都是经过学长精心审核的
  • 【Libevent】Libevent特征和事件集创建

    1 libevent特点 事件驱动 高性能 轻量级 专注于网络 跨平台 支持Windows Linux Linux Mac Os等 支持多种I O多路复用技术 epoll poll dev poll select kqueue等 支持I O
  • linux的thrift编译指南详细版(64位 + 32位)

    linux的thrift编译指南详细版 64位 32位 一 简介 二 编译 1 OpenSSL 2 libevent 3 boost 4 thrift 三 检查 四 总结 一 简介 thrift是使用IDL定义接口的支持多种开发语言的RPC
  • Spring Boot 2.x整合微信支付项目实战

    资料 zip 第 1 章项目介绍和前期准备 1 1 SpringBoot整合微信支付开发在线教育视频站点介绍 ts 1 2 中大型公司里面项目开发流程讲解 ts 1 3 在线教育站点需求分析和架构设计 ts 1 4 在线教育后台数据库设计
  • Maven第5篇:手把手教你搭建私服

    Maven第5篇 手把手教你搭建私服 环境 maven3 6 1 开发工具idea jdk1 8 本篇内容 私服介绍 windows中安装nexus私服 linux中安装nexus私服 nexus私服中各种仓库详解 配置本地Maven从ne
  • GCP application performance management lab

    最后更新2022 03 19 这是这节最后一个实验了 加油 照例先enable service 然后下载repository 再build一下 再开一个cloud shell 点一下头部标识中的 下载另一个用于debug的repositor
  • 揭开golang中defer的坑

    揭开golang中defer的坑 defer执行顺序 后进先出 是个栈 函数在执行最后的RET返回指令前 会先检查是否存在defer语句 如果有从栈中依次取出 匿名返回值在return执行时被声明然后给他赋值 所以并不会返回在defer中修
  • arduino uno r3 机械臂

    1 硬件 arduino uno r3 改进板 sg90舵机 180度 x 4 JoyStick Shield PS2游戏摇杆扩展板 或者按键 遥杆模块 3D打印件 M3螺丝螺母 10mm 15mm 25mm 以及M2螺丝螺母 2 接线 开