Arduino 控制舵机抖动问题 一直来回动

这个是个大问题   困扰了我很多天   

在使用arduino连接传感器和舵机实现项目的过程中, 一上电舵机就抽风了 抽风了 抽了   一直抽来回动  我的天   弄得我好几天都没有睡好   到底是什么原因  什么原因   我又没让你动  就写了个代码  你他妈的疯了 

好了    不说了    

原因如下 

我们在用的时候 是直接导入了一个  舵机库文件  然后声明对象  进行控制
  
但是不行  舵机库和传感器比如温湿度传感器啥的  有冲突 导致的 

怎么解决呢   
原理就是舵机用的PWM信号  我们直接写个循环 进行输出信号不用他的舵机库了  就没有问题了

int servoPin = 7; 

void setup()  //初始化内容
{
    Serial.begin(9600);
    pinMode(servoPin, OUTPUT); //设定舵机接口为输出接口
}

void loop()   //主循环
{
   servo(50); //调用函数传值直接动

}

void servo(int angle) { //定义一个脉冲函数
  //发送50个脉冲
  for(int i=0;i<50;i++){
    int pulsewidth = (angle * 11) + 500; //将角度转化为500-2480的脉宽值
    digitalWrite(servoPin, HIGH);   //将舵机接口电平至高
    delayMicroseconds(pulsewidth);  //延时脉宽值的微秒数
    digitalWrite(servoPin, LOW);    //将舵机接口电平至低
    delayMicroseconds(20000 - pulsewidth);
  }
  delay(100);
}

 

Python舵机抖动问题可以使用pigpio库解决。抖动是由于舵机信号的不稳定性引起的,可以通过设置合适的PWM信号来解决。 在使用pigpio库解决抖动问题时,你可以首先安装pigpio库,使用命令sudo apt-get install pigpio python-pigpio python3-pigpio进行安装。然后,你需要导入pigpio库,并设置舵机引脚。在代码中,可以使用G90_right_hand.set_PWM_dutycycle()函数来设置舵机的占空比。通过计算角度与占空比的换算关系,将角度转换为相应的占空比值。例如,通过计算(400/180)*i,其中i为角度,可以得到相应的占空比值。设置好占空比后,使用time.sleep()函数延迟一段时间,然后循环调用MG90_right_hand()函数来控制舵机的角度。 下面是使用pigpio库解决舵机抖动问题的代码示例: ```python import time import pigpio # 设置舵机引脚 right_hand = 24 # pigpio的初始化 G90_right_hand = pigpio.pi() # pigpio低电平 G90_right_hand.write(right_hand, 0) # pigpio设置频率 G90_right_hand.set_PWM_frequency(right_hand, 50) # pigpio设置周期范围 G90_right_hand.set_PWM_range(right_hand, 4000) def MG90_right_hand(i): G90_right_hand.set_PWM_dutycycle(right_hand, (400/180)*i) # 通过计算求出角度换算占空比 time.sleep(0.5) while True: MG90_right_hand(90) # 给出一个角度 ``` 另外一种解决舵机抖动问题的方法是使用RPi.GPIO库。在使用RPi.GPIO库时,首先需要安装RPi.GPIO库,并导入库。然后,设置舵机引脚,并设置频率和初始PWM信号。通过MG90_right_hand()函数来设置舵机的角度,通过计算角度与占空比的换算关系,将角度转换为相应的占空比值。设置好占空比后,使用time.sleep()函数延迟一段时间,再将占空比设置为0,以清除舵机抖动。 下面是使用RPi.GPIO库解决舵机抖动问题的代码示例: ```python import RPi.GPIO as GPIO import time # 设置舵机引脚 right_hand = 24 # 设置GPIO口为BCM编码方式 GPIO.setmode(GPIO.BCM) # 设置舵机引脚为输出模式 GPIO.setup(right_hand, GPIO.OUT) # 设置频率为50 G90_right_hand = GPIO.PWM(right_hand, 50) # 在引脚上设置一个初始PWM信号 G90_right_hand.start(0) def MG90_right_hand(i): G90_right_hand.ChangeDutyCycle(2.5 + i/360*20) # 通过计算求出角度换算占空比 time.sleep(0.5) G90_right_hand.ChangeDutyCycle(0) # 设置为0,清除占空白,以消除舵机抖动 while True: MG90_right_hand(90) G90_right_hand.stop() # 停止PWM GPIO.cleanup() # 清理GPIO ``` 综上所述,以上代码示例是使用pigpio库和RPi.GPIO库来解决Python舵机抖动问题的方法。你可以根据自己的需求选择适合的解决方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [树莓派控制舵机抖动问题处理](https://blog.csdn.net/fthf44/article/details/124840243)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值