arduino uno r3 机械臂

news2024/11/17 5:51: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 机械臂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/707461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI 绘画风格迁移之青铜模型训练

前情提要 2023-07-01 周六 杭州 阴 小记: mmp&#xff0c;上周吃烤面筋&#xff0c;不小心牙签扎到口腔&#xff0c;结果这几天吃什么都不舒服&#xff0c;可是计划还是要做的&#xff0c;下半年要把当下 AI 的应用梳理下&#xff0c;自己还是喜欢那种先使用再学习相关原理&a…

C语言之数组初阶(1-4)

目录 1. 一维数组的创建和初始化 2. 一维数组的使用 3. 一维数组在内存中的存储 4. 二维数组的创建和初始化 5. 二维数组的使用 6. 二维数组在内存中的存储 7. 数组越界 8. 数组作为函数参数 数组概念:数组是一组相同类型元素的集合 1.一维数组的创建和初始化 在C语言中…

【已解决】nacos新增配置报错: 发布失败。请检查参数是否正确

解决方法&#xff1a; sql文件直接采取容器默认自带的创建表&#xff0c;复制出来即可 非容器自带sql&#xff0c;有多余encrypted_data_key字段 1.删掉config_info 和 his_config_info 表中的encrypted_data_key字段 2.config_info 和 his_config_info 表中非空encrypted_data…

Android12之ServiceManager::addService注册服务的本质(一百五十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

如何用smardaten90天快速开发并上线智慧空间loT物联平台?

前言 大家好&#xff0c;我是小白白&#xff0c;前段时间一位好友接手了一个“烫手山芋”开发任务&#xff0c;77万㎡的科技园区需要打造智慧空间物联平台。要求接入600园区设备&#xff0c;处理15000日数据量&#xff0c;在打造整体IOT物联底座之上&#xff0c;构建起整个园区…

三电阻采样的劣势分析

最近控制过程中&#xff0c;被下三桥采样小坑了一下。 如下图所示为下桥臂三电阻采样方式&#xff0c;该方法的采样器件是高精度电阻&#xff0c;电阻两端电压经过采样调理电路输出至单片机ADC&#xff0c;三电阻采样成本低、结构简单&#xff0c;并且采样信号和输出强电之间是…

【Unity3D】素描特效

1 非真实渲染 法线贴图和凹凸映射中讲述了普通光照的渲染原理&#xff0c;实现的效果比较贴近真实世界&#xff08;照相写实主义&#xff0c;Photorealism&#xff09;&#xff0c;非真实渲染&#xff08;Non-Photorealism Rendering&#xff0c;NPR&#xff09;在照相写实主义…

7-数组创建函数还有哪些?【视频版】

目录 问题视频解答 问题 视频解答 点击观看&#xff1a; 7-数组创建函数还有哪些&#xff1f;

基于IDEA操作springboot项目构建docker镜像部署到云服务器并在idea把镜像推送到harbor仓库

云服务器系统环境: 华为云 Ubuntu 9.3.0-17ubuntu1~20.04 1.ECS准备docker相关环境 1.1ECS安装docker 一行一行执行 都是从官网找的命令 sudo -i apt update apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL htt…

Linux学习之screen和系统日志

screen yum install -y screen安装screen。 输入screen就可以进入screen环境。 在screen环境中执行tail -f /var/log/messages。 可以先按Ctrla&#xff0c;这时没有反应&#xff0c;需要紧接着迅速按d才能退出screen环境。 使用screen -r 11326还可以进入到刚刚挂起的s…

【Rust】基本语法

文章目录 变量与可变性变量与常量Shadowing&#xff08;隐藏&#xff09;数据类型标量类型1.整数类型2.浮点类型3.布尔类型4.字符类型 复合类型1.Tuple2.数组 函数if表达式循环1.loop2.while3.for 变量与可变性 声明变量使用let关键字&#xff0c;默认情况下&#xff0c;变量是…

Android 开发环境搭建

系列文章 MySQL安装教程&#xff08;详细&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/126037520 MySQL卸载教程&#xff08;详细&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129279265 …

【C++】类型转换和IO流

C完结 文章目录 前言一、C的四种类型转换二、IO流总结 前言 首先我们看看C语言中的类型转换&#xff1a; 在 C 语言中&#xff0c;如果 赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或者返回值类型与 接收返回值类型不一致时&#xff0c;就需…

tmux-解决ssh长时间不操作便会话结束的问题

Tmux 是一个终端复用器&#xff08;terminal multiplexer&#xff09;&#xff0c;非常有用&#xff0c;属于常用的开发工具。 如果电脑死机会话中断的话会导致服务器上基于bash的所有进程都被强制关闭。tmux确实是解决这个问题的好办法&#xff0c;而且很容易上手&#xff0c…

帝国CMS自动刷新首页和自定义列表页:实现网站内容的自动更新

本文将介绍一种实现帝国CMS自动刷新首页和自定义列表页的方法。 以下是具体的实现步骤&#xff1a; 1、设置自定义key 添加网站 设置发布网站 发布成功 首先&#xff0c;在您的帝国CMS根目录下创建一个名为"htmlindex"的文件夹&#xff08;您可以自行命名&#xff…

基于网格式搜索SVM方法的电力负荷预测

来源公众号:320科技工作室 随着生活质量的提高&#xff0c;人们对电的需求不断上升&#xff0c;电力系统的发展变得尤为重要。准确的电力负荷预测能够使电力部门降低发电成本&#xff0c;合理安排设备维护以及节省能源&#xff0c;并为电力规划以及制定合理发电量提供相关依据…

PACS医学影像系统(完整版)

一、PACS影像存取与传输系统以实现医学影像数字化存储、诊断为核心任务&#xff0c;从医学影像设备&#xff08;如CT、CR、DR、MR、DSA、RF等&#xff09;获取影像&#xff0c;集中存储、综合管理医学影像及病人相关信息&#xff0c;建立数字化工作流程。 二、系统可实现检查预…

【Echarts系列】— echarts饼图、圆环图配置代码图文详解

前言 简介&#xff1a;本文将从头开始&#xff0c;带你快速上手 echarts最常用图例—饼图 准备&#xff1a;请自行先将echarts图例引入你的项目&#xff0c;本文不多介绍。&#xff08;引入 echarts教程&#xff1a;http://t.csdn.cn/mkTa4&#xff09; 心得&#xff1a;echar…

LangChain 基于 ChatGPT 整合 Google 搜索 强化问答应用

一、LangChain Agents LangChain 中的 Agents 是什么呢&#xff0c;对于官方的描述是&#xff1a;某些应用程序不仅需要预先确定的对 LLM/其他工具的调用链&#xff0c;还可能需要依赖于用户输入的未知链。在这些类型的链中&#xff0c;有一个 Agents 可以访问一套工具。根据用…

【ISO26262】汽车功能安全第4部分:系统层面

第4部分:产品开发:系统层面 GB/T34590的本部分规定了车辆在系统层面产品开发的要求,包括: ———启动系统层面产品开发; ———技术安全要求的定义; ———技术安全概念; ———系统设计; ———相关项集成和测试; ———安全确认; ———功能安全评估;及 ———生产发布。