查看: 698|回复: 2

[未解决] 求助!舵机不工作时鬼畜乱抖动....

[复制链接]
  • TA的每日心情
    开心
    2018-8-7 15:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2018-8-7 15:57 | 显示全部楼层 |阅读模式
    我实现的是:一开始初始化4个舵机到角度1;按下开关,舵机摇臂开始从角度1到角度2来回运动;松开开关,舵机持续运动10秒后停止工作,回到角度1。
    这部分我已经实现了,但是问题是舵机停止工作后会存在鬼畜乱动的现象。

    我去查阅发现,可能是计时器信号没有断的原因,可以使用中断函数,加标志位?

    但是本人实在是菜鸟,咋加都不对,前来求助各位大佬。若有大佬愿意伸出援手,先说声感谢!!我把现在的编程帖在下面了。


    #include <Servo.h>
    //初始化4个舵机
    Servo myservo1, myservo2, myservo3, myservo4;
    
    int btn1 = 2;
    long time;
    int leds;
    
    //通电时的舵机角度
    int myservoIni = 90;
    
    //存储舵机角度值
    int pos = 0;
    
    void setup()
    {
    
      pinMode(13, OUTPUT);
      digitalWrite(LED_BUILTIN, LOW);
    
      //稳定性等待
      myservo1.attach(6);
      myservo2.attach(9);
      myservo3.attach(10);
      myservo4.attach(11);
      delay(200);
    
      pinMode(btn1, INPUT);
      digitalWrite(btn1, HIGH);
    }
    
    void loop() 
    {
    
      //舵机运行到初始化角度
      myservo1.write(myservoIni);
      myservo2.write(myservoIni);
      myservo3.write(myservoIni);
      myservo4.write(myservoIni);
      delay(10);
    
      //按钮1
      if (digitalRead(btn1) == LOW)
      {
    
        leds = 1;
        for (pos = 0; pos <= 180; pos += 1) 
        {
    
          myservo1.write(pos);
          myservo2.write(pos);
          myservo3.write(pos);
          myservo4.write(pos);
          delay(15);
    
        }
        for (pos = 180; pos >= 0; pos -= 1) 
        {
    
          myservo1.write(pos);
          myservo2.write(pos);
          myservo3.write(pos);
          myservo4.write(pos);
          delay(15);
    
        }
        digitalWrite(LED_BUILTIN, HIGH);
    
      } else {
    
        if (leds == 1)
        {
          time = millis();
          leds = 0;
        }
      }
    
      if (millis() - time > 10000)
      {
        digitalWrite(LED_BUILTIN, LOW);
        myservo1.write(pos);
        myservo2.write(pos);
        myservo3.write(pos);
        myservo4.write(pos);
        delay(15);
      }
    
    }
    
  • TA的每日心情

    2018-10-20 07:05
  • 签到天数: 60 天

    [LV.6]常住居民II

    发表于 2018-8-8 11:57 | 显示全部楼层
    myservo1.dettach();//试试不想让它动时,用这个。再用前,先attach
    打赏作者鼓励一下!
  • TA的每日心情
    开心
    2018-8-7 15:47
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2018-8-10 22:27 | 显示全部楼层
    wwwusr 发表于 2018-8-8 11:57
    myservo1.dettach();//试试不想让它动时,用这个。再用前,先attach

    谢谢!我后来发现是信号没断的原因。感谢!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    Arduino IDE安装esp8266 SDK
    Arduino IDE安装esp8266 S
    使用Arduino IDE开发esp8266开发板 1.下载Arduino IDE 下载地址 2.打开Arduino IDE
    arduino SD卡识别不了
    arduino SD卡识别不了
    arduino版本为1.8.7 单片机是arduino uno 使用的程序为自带程序cardinf 连线开始弄错
    arduino sd卡读取后 后期数据处理的问题
    arduino sd卡读取后 后期
    测试内容:UNO板子+SD卡+时钟1302模块+自制传感器模块。实现采集到的数据储存到SD卡中
    求助!在使用Digispack Kickstarter做BadUSB时报错
    求助!在使用Digispack Ki
    如图 在编译时出现错误 [mw_shl_code=c,true]void setup() { Digispark.Keyboard vo
    arduino智能小车蓝牙控制系统
    arduino智能小车蓝牙控制
    蓝牙智能小车简介 智能小车主要可以分为 3 部分, 传感器部分、控制部分、执行部分。
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表