第六篇、基于Arduino uno,控制180度舵机(SG90)转动——结果导向

news2024/11/17 2:41:39

0、结果

说明:让舵机转动,需要用PWM来控制,下面的程序是舵机从0度一直转到180度,然后又从180度转到0度的这样一个过程。

1、外观

说明:虽然舵机的型号有很多种,但是只要是180度的舵机,控制方式都是差不多的。

 2、连线

说明:只需要连接三根线。
uno————舵机
VCC------红颜色的
GND------黑颜色的
   D9------黄颜色的

3、源程序

说明:采用非阻塞方式编写,一定时间转动一个角度,并将对应功能进行函数化,方便移植。

/****************************************servo part****************************************/
/*
  接线:
  VCC------VCC
  GND------GND
  9------OUT

  注意:信号脚必须接PWM脚
*/
#include <Servo.h>                                        //调用库文件  

Servo myservo;                                            //实例化对象 

#define servoTimeInterval 20                              //控制舵机旋转的速度,数字越小转的越快,不建议过小
unsigned long servoTimes = 0;                             //记录设备运行时间

int posAngle = 1;                                         //舵机的角度
int tempVal = 1;                                          //舵机正转反转逻辑的转化
/****************************************set up and loop part*********************************/
void setup() {
  Serial.begin(9600);                                     //设置波特率

  myservo.attach(9);                                      // 设置四个舵机的信号输出角
  myservo.write(posAngle);                                //设备上电后,舵机的位置在1度,这要设备工作会更加稳定

  Serial.println("设备上线");
}
void loop() {
  servoControl();                                         //舵机控制
}
/****************************************servo part****************************************/
/*舵机控制*/
void servoControl() {
  if (millis() - servoTimes >= servoTimeInterval) {       //非阻塞模式
    servoTimes = millis();

    if ((tempVal == 1) && (posAngle < 181)) {             //1°~180°来回运动
      myservo.write(posAngle);
      posAngle += 1;                                      //角度增加
    }
    if (posAngle == 181) {
      tempVal = 2;                                        //表示正转转完了,现在反转
    }
    if ((tempVal == 2) && (posAngle >= 1)) {              //从180°~转到1°
      myservo.write(posAngle);
      posAngle -= 1;
    }
    if (posAngle == 0) {                                  //表示反转转完了,现在正转,循环转来转去
      tempVal = 1;
    }
  }
}

4、注意事项

说明:如果控制的舵机数量很多,需要外部供电。如果设定转动的角度大于实际转动的角度,电机可能会坏掉。金属舵机力气比塑料舵机力气大,但是也更容易坏。

5、基本原理

        SG90舵机是一种微型伺服电机,广泛应用于模型飞机、机器人、汽车、船只等控制系统中。其工作原理与其他舵机类似,也是基于反馈控制系统实现角度位置控制。
        SG90舵机内部包括一个直流电机、一组齿轮、位置反馈器件和控制电路。当外部的信号输入到舵机控制电路中时,电路会将信号解析成对应的控制信号,并通过驱动电机旋转一定的角度来实现控制。同时,舵机内部的位置反馈器件也会将电机当前的角度信息反馈回来给控制电路,以便控制电路可以按照预定的目标角度进行精确控制。
        具体而言,SG90舵机的工作原理是:当外部输入控制信号时,舵机内部的控制电路会对该信号进行判断,然后输出一定的PWM信号给电机。控制电路不断地调整PWM信号的占空比,以便控制电机的旋转速度和旋转方向,从而使得舵机输出轴的位置和角度达到预期的目标位置。
        另外,SG90舵机还包括一个位置反馈器件,其通过检测电机旋转时输出轴的位置变化,来反馈实际位置信息给控制电路。控制电路根据反馈信号进行调整,以保证舵机输出轴的位置和角度精确地达到预期的目标位置。

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

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

相关文章

XVS-460-15MPI-1-10伊顿触摸屏

​ XVS-460-15MPI-1-10伊顿触摸屏 触摸屏感应到我们手指的触摸是因为当手指触摸屏幕上的一个具体位置时&#xff0c;相当于为屏幕发送了一个精确的电子信号。触摸屏有很多类型&#xff0c;大致分为电阻式触摸屏和电容式触摸屏。目前应用最广泛的是“电容式触摸屏”。 我们手机…

华为OD机试之考勤信息(Java源码)

考勤信息 题目描述 公司用一个字符串来表示员工的出勤信息 absent&#xff1a;缺勤late&#xff1a;迟到leaveearly&#xff1a;早退present&#xff1a;正常上班 现需根据员工出勤信息&#xff0c;判断本次是否能获得出勤奖&#xff0c;能获得出勤奖的条件如下&#xff1a; 缺…

Python编程环境搭建:Windows中如何安装Python

在 Windows 上安装 Python 和安装普通软件一样简单&#xff0c;下载安装包以后猛击“下一步”即可。 Python 安装包下载地址&#xff1a;https://www.python.org/downloads/ 打开该链接&#xff0c;可以看到有两个版本的 Python&#xff0c;分别是 Python 3.x 和 Python 2.x&…

Nginx网站服务详解(编译安装及系统服务添加)

目录 一、Nginx的相关知识 1&#xff09;Nginx的简介 Nginx&#xff1a; Apache&#xff1a; 2&#xff09;Apache与Nginx的区别 Nginx对比Apache的优势&#xff1a; apache相对于nginx的优点 &#xff1a; 3&#xff09;Nginx的进程 Nginx有两个进程&#xff1a;…

Java的volatile

介绍 volatile volatile 关键字可以说是 Java 虚拟机提供的最轻量级的同步机制&#xff0c;但是它并不容易被正确、完整地理解&#xff0c;以至于许多程序员都习惯去避免使用它&#xff0c;遇到需要处理多线程数据竞争问题的时候一律使用 synchronized 来进行同步。了解 volat…

Flutter:功能型组件(2)- 弹出菜单、弹出提示

弹出菜单 PopupMenuButton 使用PopupMenuButton&#xff0c;点击时弹出菜单 Center(child: PopupMenuButton<String>(initialValue: Math, // 初始值itemBuilder: (context) {// 子项构造函数return <PopupMenuEntry<String>>[const PopupMenuItem(value:…

svg教程-初始svg

第一章 认识svg 简单来说&#xff1a; 位图&#xff1a;放大会失真图像边缘有锯齿&#xff1b;是由像素点组成&#xff1b;前端的 Canvas 就是位图效果。矢量图&#xff1a;放大不会失真&#xff1b;使用 XML 描述图形。 我在 知乎 上找了一个图对说明一下。 左边是位图&am…

华为开发者大会2023官宣,华为云在憋什么大招?

文丨智能相对论 作者丨沈浪 华为云也坐不住了。 在此之前&#xff0c;百度、阿里、商汤、科大讯飞等国内科技厂商以及微软、谷歌等国际巨头都已经发布了自家的大模型新品以及AIGC等相关应用。而华为云手握盘古大模型&#xff0c;却始终按兵不动&#xff0c;迟迟没有正式进场…

实验篇(7.2) 02. 部署物理实验环境(上)❀ 远程访问

【简介】当大家了解到并不需要很高的代价就可以动手做FortiOS 7.2的实验&#xff0c;很多人愿意尝试使用FortiGate防火墙硬件来学习最验难掌握的远程访问部分&#xff0c;这里我们将学习现场部署一套物理实验环境&#xff0c;让大家看到&#xff0c;在一张桌子上&#xff0c;在…

chatgpt赋能python:Python中大小写转换的方法

Python中大小写转换的方法 在Python编程中&#xff0c;经常需要对文本进行大小写转换的操作。本文将介绍Python中字符串大小写转换的方法&#xff0c;以及如何使用它们来优化你的代码。 方法一&#xff1a;使用upper()和lower()方法 Python中&#xff0c;可以使用字符串对象…

数据可视化开发的加入让办公工作更智能!

想要实现办公自动化、智能化&#xff0c;就需要选择灵活、简便、易操作的数据可视化开发平台全力助力。因为这是专注于办公高效发展的开发平台&#xff0c;是企业级的应用低代码开发平台&#xff0c;用于职场中可以实现APP、CRM、OA、ERP、WMS各类管理系统开发。可以说&#xf…

ACL 2022:Graph Pre-training for AMR Parsing and Generation

Graph Pre-training for AMR Parsing and Generation 论文&#xff1a;https://aclanthology.org/2022.acl-long.415/ 代码&#xff1a;https://github.com/goodbai-nlp/AMRBART 期刊/会议&#xff1a;ACL 2022 摘要 抽象语义表示&#xff08;AMR&#xff09;以图形结构突出…

2022年天府杯全国大学生数学建模竞赛A题仪器故障智能诊断技术解题全过程文档及程序

2022年天府杯全国大学生数学建模竞赛 A题 仪器故障智能诊断技术 原题再现&#xff1a; 问题背景&#xff1a;   仪器设备故障诊断技术是一种了解和掌握机器在运行过程的状态&#xff0c;确定其整体或局部正常或异常&#xff0c;早期发现故障及其原因&#xff0c;并能预报故…

关于高三经典励志文章精选

关于高三经典励志文章精选 篇一 人要心有所向 曾经有幸被母校邀请回校做演讲。那一次的演讲结束后&#xff0c;接到学弟学妹最多的问题是&#xff1a;为什么我的大学生活很充实&#xff0c;自己也很努力&#xff0c;可毕业之后依旧觉得很迷茫? 我觉得关于迷茫的解答最后都能归…

git创建本地分支的应用实践

场景 我们希望能够不影响本地master分支的情况下自己单独开发一个功能&#xff0c;等开发完成后再合并到master分支中 操作 创建本地分支sortdev&#xff0c;并且切换到该分支上&#xff1a; git checkout -b sortdev git branch -vv 可以查看到本地master分支追踪的是远程…

【学习记录】二次曲线、二次曲面、对偶二次曲线、对偶二次曲面

一、二次曲线与对偶二次曲线 最近在看基于椭球体的物体SLAM过程中&#xff0c;经常涉及到椭球体的空间几何知识&#xff0c;这里先补充一下一些空间几何相关的基础&#xff0c;参考链接。 椭球体本身属于二次曲面的一种&#xff0c;二次曲面是对空间形状的描述&#xff0c;属于…

每天一道面试题之如何将字符串反转?

在java中&#xff0c;我们可以使用StringBuilder或者StringBuffer类的reverse()方法来实现对字符串的反转。 在讲述实现方法之前&#xff0c;首先我们先来介绍一下StringBuilder和StringBuffer是什么&#xff1f;在实际开发中&#xff0c;会有大量的字符串的拼接,但java中的字…

pytorch 训练EfficientnetV2

文章目录 前言一、数据摆放二、训练二、测试三、训练和测试结果总结 前言 前不久用pytorch复现了efficientnetv2的网络结构&#xff0c;但是后边自己一直有其他事情再做&#xff0c;所以训练部分的文章拖到了现在。关于Efficientnet的部分文章链接可参考如下&#xff1a; Effic…

一百二十、Kettle——用kettle把Hive数据同步到ClickHouse

一、目标 用kettle把hive数据同步到clickhouse&#xff0c;简单运行、直接全量导入数据 工具版本&#xff1a;kettle&#xff1a;8.2 Hive:3.1.2 ClickHouse21.9.5.16 二、前提 &#xff08;一&#xff09;kettle连上hive &#xff08;二&#xff09;kettle连上cli…

10. 数据结构之树

前言 之前介绍了顺序表的数据结构&#xff0c;包含队列&#xff0c;栈等&#xff0c;这种结构都是一对一的&#xff0c;但是现实生活中&#xff0c;经常会遇见一对多的数据结构&#xff0c;比如族谱&#xff0c;部门机构等&#xff0c;此时我们需要一个更复杂的数据结构来表示…