当前位置: 首页 > news >正文

【SG90舵机】arduino uno控制SG90舵机

这里写自定义目录标题

  • SG90舵机硬件
  • arduino uno 简单控制SG90舵机
    • 硬件连接arduino uno
    • Arduino IDE代码
  • arduino uno 可视化电位器控制SG90舵机
    • 电位器
    • 硬件连接arduino uno
    • Arduino IDE代码(通过Servo库)
    • Arduino IDE代码(不通过Servo库)

老样子,重拾csdn记录博文,存档记录自己电机舵机的硬件软件研究过程,以便之后鱼的记忆忘了的时候使用读档之术复刻现在的行动

SG90舵机硬件

参考链接.
懒得上图了,想看去看参考链接,一般找到这里的手上都会有这个东西的实物
首先这个舵机的三根线,接线方法:
红-------------------------VCC
棕色----------------------GND
橙色----------------------信号线

这玩意的控制原理这里就不说了,我自己也没研究明白,这篇博文主要是用于打通arduino uno到SG90舵机的控制流程,具体的原理请各位移步各种频道
(我不了解原理)

arduino uno 简单控制SG90舵机

硬件连接arduino uno

三根线连接到uno的对应位置,VCC连接到5v,gnd连接到gnd,信号线连接到9号引脚(~9,这个带波浪线的九号,波浪线代表这个引脚是pwm口)(别问我什么是pwm,自行学习谢谢啦)

接线如图所示
请添加图片描述

Arduino IDE代码

#include <Servo.h>//调用库函数
 
Servo me; //设置舵机名称

void setup() {
	me.attach(9); // 设置控制引脚
	//当然,这里引脚改成别的pwm引脚也没问题,但是需要记得改这里的9为你连接的引脚号
	//亲,记得看代码注释哦
	//当然,不看也无所谓2333
}
 
void loop() {
	for (int i=0;i++;i<180){
		me.write(i);//设置旋转角度
		delay(5);
	}
	for (int i=180;i--;i>=0){
		me.write(i);//设置旋转角度
		delay(5);
	}
}

然后烧录到板子上,舵机就能(开环)运动了
(开环,是指给舵机一个角度,让它自己到那个角度,但是什么时候到,现在转到什么角度什么的都无法控制)(与之对应的是闭环,但那得看看我能不能找到闭环控制教程)(寻找稚辉君.jpg)

arduino uno 可视化电位器控制SG90舵机

电位器

请添加图片描述
这玩意,学名电位器,但我更想叫他旋钮
总之这个东西也有个VCC,GND,和信号线OUT

硬件连接arduino uno

首先这里硬件连接有所改变,因为我发现ardunio uno好像只有一个5V的引脚电源供电,而这俩玩意(电位器,舵机)都需要5v供电
所以这时候就需要面包板了
面包板使用参考链接.
将ardunio uno 的5v还有gnd连接到面包板上,然后舵机和电位器就从面包板上获取5v和gnd
然后sg90舵机的信号线还是连接到9号引脚,电位器的out连接到arduino uno 的a0引脚(感觉A0~A5应该都可以,但是目前还不知道这几个跟pwm引脚有什么区别,顺带一提,不带波浪线的引脚我也不知道叫什么)

总之,接线如图所示
请添加图片描述

大概理解下就好

Arduino IDE代码(通过Servo库)

参考链接
【Arduino入门14:SG90最常用的舵机,如何使用,制作机械臂必备知识点】

#include <Servo.h>//调用库函数
 
Servo me; //设置舵机名称
int val=0;
int SG=0;

void setup() {
me.attach(9); // 设置控制引脚
Serial.begin(115200);
}
 
void loop() {
val=analogRead(A0);
SG=map(val,0,1023,0,180);

// 电位器控制舵机
Serial.print("sg90 ");
Serial.println(SG);
me.write(SG);//设置旋转角度
delay(5);

}

这里使用了Serial.println来通过串口打印输出,与之对应的是需要在setup里面设置波特率
不设置波特率的话就无法从arduino 的ide的串口监视器里面看见输出的角度信息

然后使用过程就是旋转电位器就能看见舵机旋转

Arduino IDE代码(不通过Servo库)

参考链接
【5分钟入门了解RC伺服电机SG90控制原理及在Arduino的使用(无依赖库)】

#define Servo_Pin 9
#define Pot_Pin A0

void setup() {
  // put your setup code here, to run once:
  pinMode(Servo_Pin, OUTPUT);
  pinMode(Pot_Pin, INPUT);
}
void PWMServo(int angleArg){
  if (angleArg<0)angleArg=0;
  if (angleArg>180)angleArg=180;

  int PWMWidth=(angleArg *11)+500;
  //好家伙这教程直接从pwm高低电平控制,nb
  digitalWrite(Servo_Pin,HIGH);
  delayMicroseconds(PWMWidth);
  digitalWrite(Servo_Pin,LOW);
  delayMicroseconds(20000-PWMWidth);

}



void loop() {
  // put your main code here, to run repeatedly:
  int pot = analogRead(Pot_Pin);
  int angleNum= map(pot,0 ,1023,0,180);
  PWMServo(angleNum);


}

相关文章:

  • GraphMLP: A Graph MLP-Like Architecture for 3D Human Pose Estimation
  • 各类容器技术深度解析:容器全解
  • 【设计模式】外观模式
  • WSL2 与双系统的对比
  • Java之反射
  • C++语法之模板函数和模板类
  • 理解操作系统(一)冯诺依曼结构和什么是操作系统
  • 第六章 | Solidity 函数与可见性修饰符全面讲解
  • Dataset和Dataloader
  • 解锁云原生后端开发新姿势:腾讯云大模型API实战攻略
  • 微调大模型:LoRA、PEFT、RLHF 简介
  • 二分查找------练习2
  • Numpy 简单学习【学习笔记】
  • 基于CNN的FashionMNIST数据集识别6——ResNet模型
  • Python 异步编程
  • MIT6.5840 lab3A
  • llama源码学习·model.py[7]Transformer类
  • gcc -fPIC 选项
  • 浅谈Qt事件子系统——以可拖动的通用Widget为例子
  • AI 驱动视频处理与智算革新:蓝耘MaaS释放海螺AI视频生产力
  • 央行宣布优化两项支持资本市场的货币政策工具
  • 上海飞银川客机触地复飞后备降西安,亲历者:不少乘客都吐了
  • 青岛鞋企双星名人集团家族内斗:创始人发公开信指控子孙夺权
  • 48岁黄世芳履新中国驻毛里求斯大使,曾在广西工作多年
  • 环球马术冠军赛圆满落幕,是马术盛宴更是中国马产业强大引擎
  • 遭反特朗普情绪拖累?澳大利亚联盟党大选落败、党魁痛失议席