ESP8266使用舵机以及16路PWM舵机PCA 9685的使用方式

news2024/11/25 14:22:26

PWM全称

50Hz也就是一秒内变换50次

根据上面的公式

一个高电平一个低电平叫一个脉冲。

例如每个脉冲占20毫秒,那么他的频率是多少?

就是用1去除以他的周期,也就是我们上面说的20,那么就是除0.02,1秒等于1000毫秒,20毫秒换算成秒。换算过来就是0.02, 1/0.02 = 50,那么他的频率也就是50.

例如这张图,他就是有4个周期

占空比,占空比是指在一定时间高电平保持的时间与总周期的比值

例如下面两段周期分别都是10毫秒的时间

那么高电平占了7ms,那么他在总过程当中就是占了70%

输入电流等于输出电量*占空比

输入为5v,占空比为20%,那么输出就是1

借鉴网址:搞懂什么是PWM控制_哔哩哔哩_bilibili

实例1:PWM与LED的故事

例如我们想要led灯常亮,那么只需要一直给高电平就行了

熄灭就给低电平

假如我们不停的切换高低电平,那么他就会闪烁熄灭

但是如果我们让切换的速度变的极快,那么就不会看见闪烁在熄灭,类似我们看玄幻小说的残影,只要速度够快,原地就会留下一个残影

我们将亮的时间延长,断灭的时间减少,再加上切换的速度,那么你只会看见光芒减弱

实例2:PWM与舵机的故事

舵机根据输入的PWM信号进行转动,舵机内部的芯片会将电位器的电压信号转换成PWM信号,与输入的PWM指令进行对比.最后得到控制电机转动的信号,比如旋转方向和速度

上面的图看来,不同的占比毫秒就能改变他的度数,例如2ms就能让舵机转到135度

程序实例:转动舵机到125度

#define ServoPin 2 // 舵机引脚2号
int highTime  = 2000;//高电平占时换算成微秒。例如2毫秒就是2000微秒
int period = 20000;//固定周期20ms
void setup() {
  // put your setup code here, to run once:
  pinMode(ServoPin,OUTPUT);
}

void loop() {
  digitalWrite(ServoPin,HIGH);
  delayMicroseconds(highTime);//高电平持续时间
  digitalWrite(ServoPin,LOW);
  delayMicroseconds(period-highTime);//低电平持续时间
  // put your main code here, to run repeatedly:

}

舵机正极接5V 负极接GND,信号线接2

实例程序:让舵机依次旋转

#define ServoPin 2 // 舵机引脚2号
int highTime  = 500;//高电平占时换算成微秒。例如2毫秒就是2000微秒
int a = 1000;
int c = 2000;
int d = 2500;
int period = 20000;//固定周期20ms
void setup() {
  // put your setup code here, to run once:
  pinMode(ServoPin,OUTPUT);
}

void loop() {
  digitalWrite(ServoPin,HIGH);
  delayMicroseconds(highTime);//高电平持续时间
  digitalWrite(ServoPin,LOW);
  delayMicroseconds(period-highTime);//低电平持续时间

  delay(1000);
  digitalWrite(ServoPin,HIGH);
  delayMicroseconds(a);//高电平持续时间
  digitalWrite(ServoPin,LOW);
  delayMicroseconds(period-a);//低电平持续时间

  delay(1000);
  digitalWrite(ServoPin,HIGH);
  delayMicroseconds(c);//高电平持续时间
  digitalWrite(ServoPin,LOW);
  delayMicroseconds(period-c);//低电平持续时间

  delay(1000);
  digitalWrite(ServoPin,HIGH);
  delayMicroseconds(d);//高电平持续时间
  digitalWrite(ServoPin,LOW);
  delayMicroseconds(period-d);//低电平持续时间
  delay(100000);
  // put your main code here, to run repeatedly:

}

实例程序:让他旋转的速度慢慢相加

#define ServoPin 2 // 舵机引脚2号
int highTime  = 500;//高电平占时换算成微秒。例如2毫秒就是2000微秒

int period = 20000;//固定周期20ms
void setup() {
  // put your setup code here, to run once:
  pinMode(ServoPin,OUTPUT);
}

void loop() {
  digitalWrite(ServoPin,HIGH);
  delayMicroseconds(highTime);//高电平持续时间
  digitalWrite(ServoPin,LOW);
  delayMicroseconds(period-highTime);//低电平持续时间

  highTime += 1;
  // put your main code here, to run repeatedly:

}

舵机自带的控制函数

舵机使用函数控制

实例1,:让舵机来回旋转

#include <Servo.h> 
int pos  = 0;

Servo myservo;
void setup() {
  // put your setup code here, to run once:
  myservo.attach(3);//
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1){
    myservo.write(pos);//驱动舵机旋转
    delay(15);//等待舵机转到相应位置
  }
  for(pos = 180; pos >= 0; pos -= 1){//让舵机从180转到0
  myservo.write(pos);
  delay(15);
  }
}

16路舵机控制板

接线方式

注意看线的颜色,GND = GND  SCL = D1 SOA = D2 VCC = 3V或5V V+ = VIN

这个是esp8266的接线方式,arduino需要大家去探索一下

#include <Wire.h> //I2C库文件wire
#include <Adafruit_PWMServoDriver.h> //驱动板库文件

// 默认地址 0x40
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
int a = 102;
#define SERVO_0  a  //寄存器的值 102 =0.5ms = 0°
#define SERVO_45  187 
#define SERVO_90  280 
#define SERVO_135  373 
#define SERVO_180  510 


void setup() {
  Serial.begin(9600);
  pwm.begin();
  pwm.setPWMFreq(50);  // 50HZ更新频率,相当于20ms的周期

  delay(10);
}

void loop() {
  pwm.setPWM(0, 0, SERVO_0);//舵机编号、脉冲起始时间、脉冲结束时间
  delay(10);
  SERVO_0 += 1;
  Serial.println(SERVO_0);
  
  
}

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

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

相关文章

网络安全 - 应急响应检查表

前言 本项目旨在为应急响应提供全方位辅助&#xff0c;以便快速解决问题。结合自身经验和网络资料&#xff0c;形成检查清单&#xff0c;期待大家提供更多技巧&#xff0c;共同完善本项目。愿大家在应急之路一帆风顺。 图片皆来源于网络&#xff0c;如有侵权请联系删除。 一…

南山智尚10亿元定增质疑声连连,与控股股东超70亿资金往来引瞩目

《港湾商业观察》施子夫 王璐 近期&#xff0c;南山智尚&#xff08;300918.SZ&#xff09;发布了《向特定对象发行A股股票募集说明书(修订稿)》。 据了解&#xff0c;公司此次拟募集资金总额不超过10亿元&#xff0c;扣除发行费用后的募集资金净额将全部用于年产8万吨高性能…

鸿蒙HarmonyOS实战:ArkUI组件添加内容背景模糊效果

动画效果可以丰富界面的细节&#xff0c;提升UI界面的真实感和品质感。例如&#xff0c;模糊和阴影效果可以让物体看起来更加立体&#xff0c;使得动画更加生动。ArkUI提供了丰富的效果接口&#xff0c;开发者可快速打造出精致、个性化的效果。本章中主要对常用的模糊、阴影和色…

速卖通、Lazada、虾皮卖家是如何自建买家账号测评的?

在跨境电商领域&#xff0c;速卖通、Lazada、Shopee等平台上的卖家为了提升店铺信誉、提高产品排名和销量&#xff0c;常常需要借助买家账号进行测评。然而&#xff0c;依赖外部服务商往往存在风险&#xff0c;如账号质量参差不齐、恶意差评等问题。因此&#xff0c;自己养国外…

Crowd-SAM:SAM作为拥挤场景中目标检测的智能标注器

摘要 目标检测是一项重要任务&#xff0c;广泛应用于各种场景。通常&#xff0c;它需要大量的标签进行训练&#xff0c;这相当耗时&#xff0c;尤其是在拥挤的场景中。最近&#xff0c;Segment Anything Model&#xff08;SAM&#xff09;作为一种强大的零样本分割器应运而生&…

数学中常用字母符号读法

文章目录 一、希腊字母二、其他字母1.字母上一横2.拉长的s&#xff08;‌∫&#xff09;‌3.数列中的e4. N:非负整数集合或自然数集合{0,1,2,3,…n} 一、希腊字母 Ω ω&#xff1a;欧米伽 Omega。 ∑ σ&#xff1a;西格玛 Sigma。 作用&#xff1a;是一个求和符号&#xf…

滑动窗口专题——找到所有字母的异位词

一、题目解析&#xff1a; 题意如图 二、算法分析 本题依旧是两种方法&#xff1a;暴力枚举、滑动窗口 暴力枚举&#xff1a; 枚举出所有的字串进行比较&#xff0c;符合则记录位置&#xff0c;最终返回结果数组。 滑动窗口哈希表&#xff1a; 思路&#xff1a;1、初始化左…

怎么区分Alpha因子和风险因子?

这是一个絮絮叨叨的专题系列&#xff0c;跟大伙儿唠一唠量化相关的小问题&#xff0c;有感而发写到哪算哪&#xff0c;这是第3期&#xff0c;来唠个14块钱的~ 不知大伙儿有木有这样的疑惑&#xff1f; 看到Barra里面有Size、Liquid等因子&#xff0c;这些因子同样出现在很多人的…

【Redis】String字符串

目录 String字符串 常见命令 SET GET MSET MGET SETNX 计数命令 INCR INCRBY DECY DECYBY INCRBYFLOAT 其他命令 APPEND GETRANGE SETRANGE STRLEN 内部编码 String类型的典型使用场景 缓存(Cache)功能 计数功能 共享会话(Session) String字符串 字符…

bat批处理文件 —— 用于自动化环境配置和项目执行

文章目录 一、什么是 bat &#xff1f;1.1、支持 bat 的编辑软件1.2、常用命令 三、项目实战3.1、入门案例3.2、&#xff08;自动化&#xff09;环境配置与python库安装3.3、将 bat 当成一个简易的 .exe 可执行文件 四、标识符详解4.1、rem&#xff1a;添加注释4.2、echo off&a…

网工内推 | 上市公司IT工程师,最高15薪,周末双休

01 上海索辰信息科技股份有限公司 &#x1f537;招聘岗位&#xff1a;IT工程师 &#x1f537;岗位职责&#xff1a; 1、熟悉代码研发类企业的内部信息化管理&#xff0c;参与公司自主开发系统的规划和建设&#xff0c;搭建高级别内部信息安全体系&#xff0c;对内部信息的安全…

【practise】删除有序数组中的重复项

关于博主&#xff1a; 今天分享一道简单的关于“双指针”算法的题目。算是双指针中非常基础的题目&#xff0c;有兴趣可以借鉴一波~ 目录 1.题目介绍2.题解思路&#xff1a;双指针法3.代码示例 1.题目介绍 题目链接&#xff1a;LINK 本题要求是&#xff1a;对给定的有序数组…

Android中的沉浸式丝滑转场之共享元素转场动画

文章目录 1. 介绍2. 实现方法3. 举例演示3.1 举例一&#xff1a;普通页面间共享元素转场动画3.2 举例二&#xff1a;列表页面共享元素转场动画 4. 总结 1. 介绍 在Android开发中&#xff0c;经常会有页面转场的动画效果。普通的转场动画不过是左进右出&#xff0c;渐显渐隐&am…

树莓派4B学习笔记24:Python_SYN6288语音模块的控制函数

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: ​ Opencv 版本是4.5.1&#xff1a; ​ Python 版本3.7.3&#xff1a; 今日学习SYN6288语…

叛逆,批判

1、对以往说法的批判之一&#xff08;第一次这么公开批判是2004-2005年&#xff09;&#xff1a; 这部英文版的《数学百科全书》似乎是从俄语版翻译过来的&#xff1f;我查了三本引用的图书文献&#xff0c;都没有关于“nonsingular”和“singular”的类似下面的说法&#xff…

加密市场再遭重创:多重利空因素引发超10亿美元抛售潮

四年前的全球“熔断潮”仿佛还在眼前&#xff0c;如今金融市场再度迎来剧烈震荡&#xff0c;全球股市与加密货币市场遭遇多重利空冲击&#xff0c;尤其是比特币和以太坊的闪崩使得市场恐慌情绪蔓延。这个“黑色星期一”不仅见证了股市的跳水&#xff0c;还标志着加密市场的又一…

每日学习笔记:C++ STL算法之已排序区间算法

目录 查找元素 检查某个元素是否存在: binary_search(beg, end, value) binary_search(beg, end, value, op) 检查数个元素是否存在&#xff1a; includes(beg, end, searchBeg, searchEnd) includes(beg, end, searchBeg, searchEnd, op) ​编辑 查找第一个或最后一…

网安新声 | 微软蓝屏事件安全启示录

网安加社区【网安新声】栏目&#xff0c;汇聚网络安全领域的权威专家与资深学者&#xff0c;紧跟当下热点安全事件、剖析前沿技术动态及政策导向&#xff0c;以专业视野和前瞻洞察&#xff0c;引领行业共同探讨并应对新挑战的策略与可行路径。 2024年7月19日&#xff0c;微软发…

搭建Mysql主从架构

一、主从 1、备份的三种类型 热备份逻辑备份物理备份 二、集群 1、概述 高可用集群&#xff08;HA&#xff09;是指通过特殊软件&#xff0c;把独立的服务器连接起来&#xff0c;组成一个能够提供故障间切换功能的集群。 2、标准 可用性级别 年宕机时间 描述 99% 3.65天 …

蜂窝网络架构

2G/3G 4G eNB RF-RRU eCPRI RRU-BBU 光纤 5G From 38.300 AMF处理信令等&#xff0c;UPF 用户面&#xff0c;后面还有SMF