克舵机实验

克舵机实验

实验现象

通过调整电位器来改变舵机的旋转的角度

理论学习

标配9g舵机,黄色为信号线,红色为电源,棕色为地线。
舵机控制模块是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机控制模块可以接收数字信号或模拟信号,分别对应了swing模式和turn模式,然后产生舵机的PPM控制信号,使得舵机来回摆动或者旋转到设定角度静止。在swing模式下,电位器可以调节舵机摆动的频率。
舵机控制模块中预设了2种不同的控制机制,可以通过开关进行切换,在非编程模式下自由玩转各种进阶功能。
常用的应用场景:即支持无编程,也支持编程,可搭配mcirobit、Arduino;在无编程中能够快速的切换不同运动模式。目前,舵机控制模块在高档遥控玩具,如飞行器、机械手臂、潜艇模型、遥控机器人等场景中已经得到了普遍应用。
舵机模块既可以接收数字信号,也可以接收模拟信号,主要用于输出设定角度的摆动,摆动范围0~180°。
在非编程条件下,舵机模块需要结合舵机控制模块使用。舵机控制模块既可以接收数字信号,也可以接收模拟信号,分别对应swing模式和turn模式:
swing:在设定角度和初始角度来回摆动
turn:转到设定角度静止 ;

原理图

在这里插入图片描述
在这里插入图片描述

代码编写

#include<Arduino.h>
#define pwm_pin 9
int pulsewidth = 0;
void setup() {
	pinMode(pwm_pin, OUTPUT);
}
void loop() {
	pulse(90);
}
void pulse(int angle) {
	pulsewidth = int((angle * 11) + 500);
	digitalWrite(pwm_pin, HIGH);
	delayMicroseconds(pulsewidth);
	digitalWrite(pwm_pin, LOW);
	delay(20 - pulsewidth / 1000);
}
//引入lib
#include<Servo.h>
//创建一个伺服电机对象
Servo myservo;
//设定连接可变电阻的模拟引脚
#define pot_pin A5
int val;
//创建变量,存储从模拟端口读取的值(0-1023)
void setup() {
	myservo.attach(9);//9号引脚输出电机控制信号,只可以使用9、10引脚
}
void loop() {
	val = analogRead(pot_pin);//读取来自可变电阻的模拟值(0-1023之间)
	val = map(val, 0, 1023, 0, 179);
	myservo.write(val);//设定伺服电机的位置
	delay(15);//等待电机旋转到目标角度
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是一个简单的Arduino代码示例,用于控制人体红外传感器和: ```c++ #include <Servo.h> // 引入库 Servo myservo; // 创建一个对象 int servoPin = 9; // 连接的引脚号 int sensorPin = 2; // 红外传感器连接的引脚号 int sensorValue; // 红外传感器的数值 void setup() { myservo.attach(servoPin); // 将连接到引脚 pinMode(sensorPin, INPUT); // 将红外传感器设置为输入模式 Serial.begin(9600); // 打开串口 } void loop() { sensorValue = digitalRead(sensorPin); // 读取红外传感器的数值 Serial.println(sensorValue); // 输出传感器值到串口监视器 if (sensorValue == HIGH) { // 如果传感器检测到物体 myservo.write(90); // 转动到 90 度角度 delay(1000); // 延迟 1 秒 myservo.write(0); // 回到原点 delay(1000); // 延迟 1 秒 } } ``` 这个代码示例中,我们首先引入了 `Servo` 库,然后创建了一个 `Servo` 对象 `myservo`,并指定了连接的引脚号 `servoPin`。接着,我们定义了红外传感器连接的引脚号 `sensorPin` 和传感器数值变量 `sensorValue`。 在 `setup()` 函数中,我们将连接到引脚,并将红外传感器设置为输入模式,同时打开了串口。 在 `loop()` 函数中,我们首先读取红外传感器的数值,并将其输出到串口监视器中。然后,如果传感器检测到物体,我们就让转动到 90 度角度,等待 1 秒钟,然后再回到原点。这个过程会一直重复,直到程序停止运行。 请注意,这只是一个简单的代码示例,可以根据实际情况进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_45671732

你们鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值