Arduino入门001 - 舵机控制

article/2025/8/17 19:39:39

Arduio基础入门篇001 - 舵机控制

一、舵机介绍

1,结构组成

一般来讲舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路等。舵机的输入线共有三条,如图1所示,红色中间,是电源线,一边黑色的是地线。
在这里插入图片描述图一
其工作流程为:控制信号→控制电路板→电机转动→齿轮组减速→舵盘转动→位置反馈电位计→控制电路板反馈,如图二:
在这里插入图片描述图二

2,工作原理

舵机内部有一个基准电路,产生周期为20ms、宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经过电路板IC方向判断,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到位。

舵机转动的角度是通过调节PWM「脉冲宽度调制」信号的占空比来实现的。标准的PWM信号的周期固定为20ms,理论上脉宽分布应该在1ms到2ms之间,实际上可由0.5ms到2.5ms之间,脉宽与转角0°—180°相对应。不同厂家不同型号的舵机也会有所差异。

在这里插入图片描述 PWM控制
由于Arduino的驱动能力有限,当需要控制多个舵机时,需要外接电源以及使用专用的舵机控制板。

二、 实验材料

①:Uno R3开发板
②:配套USB数据线
③:配套连接线
④:舵机

三、实验步骤

1,搭建电路图

舵机红色线接开发板5V,棕色线接开发板GND,橙色信号线接开发板数字引脚9。如图:
在这里插入图片描述
实物连接如下:

在这里插入图片描述

2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。
#include <Servo.h>Servo myservo;  // 定义Servo对象来控制
int pos = 0;    // 角度存储变量void setup() {myservo.attach(9);  // 控制线连接数字9
}void loop() {for (pos = 0; pos <= 90; pos ++) { // 0°到90°// in steps of 1 degreemyservo.write(pos);              // 舵机角度写入delay(10);                       // 等待转动到指定角度}for (pos = 90; pos >= 0; pos --) { // 从90°到0°myservo.write(pos);              // 舵机角度写入delay(10);                       // 等待转动到指定角度}
}
3,连接开发板设置好端口和开发板类型,进行验证上传。

在这里插入图片描述

4,实验现象

在这里插入图片描述

5. 库函数介绍

用Arduino控制舵机一般有两种方法:

通过Arduino的普通数字引脚产生占空比不同的方波,模拟产生PWM信号进行舵机控制。
直接利用Arduino自带的Servo库进行控制。
Servo库常用函数:

Attach(接口)—设定舵机接口。
Write(角度)—用于设定舵机旋转的角度,可设定范围0°—180°。
Read()—用于读取舵机角度的语句,可理解为读取最后一条write()命令中的值。

部分来自链接:https://www.jianshu.com/p/f3fee0082519


http://chatgpt.dhexx.cn/article/g1fbYKVv.shtml

相关文章

舵机控制(STM32F103C8T6)

前言 本文是以STM32F103C8T6作为主控芯片&#xff0c;通过PB6端口输出PWM&#xff0c;实现控制180舵机。 一、舵机控制原理 &#xff08;一&#xff09;概述 舵机是一种位置伺服驱动器器&#xff0c;是一种带有输出轴的小装置。当我们向伺服器发送一个控制信号时&#xff0c;…

Java 源代码怎么执行的

许多 Java 虚拟机的执行引擎在执行 Java 代码的时候都是解释执行&#xff08;通过解释器执行&#xff09;和编译执行&#xff08;通过即时编译器产生本地代码执行&#xff09;混合运行。 大体流程为&#xff1a; 编写 java 文件源码通过 javac 编译器将 java 源码编译为字节码流…

Java基础-java程序代码截取字符串及判断字符串是否包含某个字符(串)

文章目录 有一串字符串&#xff0c;是一串拼接码&#xff0c;如何截取获取想要的字段&#xff1f;判断字符串是否包含某个字符&#xff08;串&#xff09;indexOf方法 有一串字符串&#xff0c;是一串拼接码&#xff0c;如何截取获取想要的字段&#xff1f; public class Inte…

编写高质量JAVA程序代码的建议

--------------------------------------------------------------------------------------------------- 前言&#xff1a;原著《改善JAVA程序的151个建议》有151个建议&#xff0c;我在拜读的过程根据自己的理解合并了其中的几个&#xff0c;并将每个建议的核心要义进行了一…

java简单记事本代码_简单记事本的java程序代码

展开全部 天啊&#xff0c; 冖_Na0 为什么会有62616964757a686964616fe4b893e5b19e31333262343038我编的记事本代码呢&#xff1f;&#xff1f;&#xff1f;呵呵……你肯定是“请教”过我的吧&#xff1f;&#xff1f; 呵呵……我自己编了一个&#xff0c;不过呢&#xff0c;没…

IntelliJ IDEA 写java程序代码

快捷键 注释 单行&#xff1a;选中代码 ctrl/ 再来一次就是取消 多行&#xff1a;选中代码 ctrlshift/ 再来一次就是取消 格式化 CtrlAltL

Android studio如何运行java程序代码

先看Java程序类 public class GGG {public static void main(String[] args) {System.out.println("我是java程序");} }就是这么简单的一个java程序&#xff0c;在之前studio上可以直接运行&#xff0c;但是像现在升级studio后就发现运行报错&#xff1a; 首先java…

怎样使用lntelliJ IDEA 编写Java程序代码?

下面使用IDEA创建一个Java程序&#xff0c;实现在控制台上打印HelloWorld!的功能&#xff0c;具体步骤如下。 1.创建Java项目 进入New Project界面后&#xff0c;单击New Project选项按钮创建新项目&#xff0c;弹出New Project对话框&#xff0c;如下图所示。 New Projeet 对…

Java学习代码合集

其实我学习java最根本的原因是&#xff1a;我是一个挺关注外在的人&#xff0c;虽然是个程序员&#xff0c;所以我很喜欢写出那些带有漂亮的界面的程序&#xff0c;因为C总是控制台&#xff0c;我不是很喜欢&#xff0c;在这份java代码合集中&#xff0c;我会记录自己学习Java界…

Java开发常用代码

一.获取UUID UUID uuid UUID.randomUUID(); String str uuid.toString(); // 去掉“-” String s str.replaceAll("-", "");二.获取固定格式的时间字符串 第一种 //获取当前时间对象 Date d new Date(); //创建日期格式化类对象,”yyyy/MM/dd HH:mm…

一个简单的Java例程

编写一个程序&#xff0c;输出如下&#xff1a; 1.在IDEA中新建一个helloworld类&#xff0c;注意Java中严格区分大小写 2.在文件中添加如下代码&#xff1a; 源代码如下&#xff1a; public class helloworld{public static void main(String[] args){System.out.println(&q…

Python3读取大文件的方法

Python3读取大文件的方法 1. 方法一&#xff1a;利用yield生成器2. 方法二&#xff1a;利用open()自带方法生成迭代对象&#xff0c;这个是一行一行的读取3. 二者的比较 1. 方法一&#xff1a;利用yield生成器 def readPart(filePath, size1024, encoding"utf-8"):w…

大文件处理(上传,下载)思考

文件处理一直都是前端人的心头病&#xff0c;如何控制好文件大小&#xff0c;文件太大上传不了&#xff0c;文件下载时间太长&#xff0c;tcp直接给断开了&#x1f631;&#x1f631;&#x1f631;等 效果 为了方便大家有意义的学习&#xff0c;这里就先放效果图&#xff0c;如…

python拆分大文件(大文件分割)

python拆分大文件 前言实现过程实验结果 前言 在工作中常常会遇见一些大文件&#xff0c;由于内容太多&#xff0c;使用比如记事本、notePad等软件也打不开&#xff0c;无法查看内容&#xff0c;最好是将整个文件进行拆分&#xff0c;分开处理&#xff0c;现在处理的文件原本是…

如何快速地向服务器传大文件,大文件如何快速传输

在这个互联网时代&#xff0c;信息更新速度逐渐加快。用户在进行文件传输时&#xff0c;一定是希望既稳定又快速的&#xff0c;并且还能够保证安全。但是通常来讲&#xff0c;FTP文件传输并不能同时实现这三点的&#xff0c;特别是上传大文件时&#xff0c;FTP上传文件速度明显…

Linux - 怎么实现大文件传输

一 前言 博文《PageCache》中介绍了 PageCache 的优缺点&#xff0c;其实在处理大文件中 PageCache 作用反而没有那么好。所以本文介绍 Linux 是怎么处理大文件的。 二 起因 首先看一下一个 read() 系统调用流程发生了什么&#xff0c;如下图&#xff1a; 当调用 read 方法时…

如何快速传输大文件:4 种大文件传输有效的方法

文件大小正在爆炸式增长&#xff0c;随之而来的挑战是如何仍然以快速、安全的方式发送。从这个意义上说&#xff0c;弄清楚如何快速传输大文件似乎是一项几乎不可能完成的任务。随着工作流程不断适应数字化&#xff0c;这对于自由职业者、业余视频编辑、后期制作公司和广播公司…

win 10计算机查找大文件,教你如何在Win10系统中查找大文件?

Win10系统如何查找大文件&#xff1f;Win10系统内置有搜索功能&#xff0c;可以帮助用户快速找到所需文件&#xff0c;一般我们都是输入名称进行查找文件的。当然也有其他的搜索方式&#xff0c;比如按照文件大小搜索&#xff0c;相信大家比较少见吧。那么在Win10系统中该如何查…

如何进行大文件传输?

本文首发微信公众号&#xff1a;码上观世界 网络文件传输的应用场景很多&#xff0c;如网络聊天的点对点传输、文件同步网盘的上传与下载、文件上传到分布式文件存储器等&#xff0c;其传输速度主要受限于网络带宽、存储器大小、CPU处理速度以及磁盘读写速度&#xff0c;尤其是…

大文件分片上传

前言 前端进行文件大小分割 &#xff0c;按10M分割进行分片上传&#xff0c;使用的项目还是前面文档介绍的poi同一个项目 另一篇poi导出文章,使用的同一个项目 poi的使用和工具类&#xff08;一&#xff09; 开发 1、maven依赖 <!--文件分片上传使用到依赖 start --&g…