查看: 1763|回复: 14

[未解决] 如何写程序让舵机固定角度啊,为啥他老是自动转回去啊

[复制链接]

该用户从未签到

发表于 2019-5-5 21:59 | 显示全部楼层 |阅读模式
想让舵机只转一次,就是固定到某一个角度不要立马转回去。如何实现呢 ?以下是我的程序
#include <Servo.h>    // 声明调用Servo.h库
#include <dht11.h>
#define DHT11PIN 5
dht11 DHT11;
Servo myservo; // 创建一个舵机对象
int pos=0;        // 变量pos用来存储舵机位置
int i=0;
void setup()
{
myservo.attach(9);  // 将引脚9上的舵机与声明的舵机对象连接起来
Serial.begin(9600);
}
void loop() {
delay(1000);
  int chk = DHT11.read(DHT11PIN);
  Serial.print("当前湿度: ");//湿度
  Serial.print(DHT11.humidity);
  Serial.println(" %RH ");
  Serial.print("当前温度: ");//温度
  Serial.print(DHT11.temperature);
  Serial.println(" ℃ ");
  Serial.println("  ");
if(DHT11.temperature>=25)
  {
     //for(pos = 0; pos < 180; pos+= 1)  // 舵机从0°转到180°,每次增加1°
         
      myservo.write(180);           // 给舵机写入角度   
      delay(15);   // 延时15ms让舵机转到指定位置
     
     
  }
    if(DHT11.temperature<=20){
       //for(pos = 180; pos>=0; pos-=1)    // 舵机从180°转回到0°,每次减小1°                        
       myservo.write(0);        // 写角度到舵机   
       delay(15);                 // 延时15ms让舵机转到指定位置
      
}

  }


该用户从未签到

 楼主| 发表于 2019-5-5 22:00 | 显示全部楼层
求帮助 这舵机神经病一样 而且我程序里写的转180度怎么实际感觉他只转了90度 (如果算着来回过程是180度)
  • TA的每日心情
    擦汗
    2019-8-19 23:06
  • 签到天数: 715 天

    [LV.9]以坛为家II

    发表于 2019-5-5 22:26 | 显示全部楼层
    你把延时弄长一点,它还没来的及转到180度就要转回0度去了
    感谢支持,希望以上内容能给予你启发

    该用户从未签到

     楼主| 发表于 2019-5-5 22:31 | 显示全部楼层
    xmile 发表于 2019-5-5 22:26
    你把延时弄长一点,它还没来的及转到180度就要转回0度去了

    不行啊 我在后面加延时也不行啊 是不是我修改的不对呢 能方便在我代码后面给我示范一下吗

    该用户从未签到

     楼主| 发表于 2019-5-5 22:33 | 显示全部楼层
    a732483741 发表于 2019-5-5 22:31
    不行啊 我在后面加延时也不行啊 是不是我修改的不对呢 能方便在我代码后面给我示范一下吗 ...

    不行啊  把延时修改大点不对啊  
  • TA的每日心情
    擦汗
    2019-8-19 23:06
  • 签到天数: 715 天

    [LV.9]以坛为家II

    发表于 2019-5-5 22:37 | 显示全部楼层
    #include <Servo.h>    // 声明调用Servo.h库
    #include <dht11.h>
    #define DHT11PIN 5
    dht11 DHT11;
    Servo myservo; // 创建一个舵机对象
    int pos=0;        // 变量pos用来存储舵机位置
    int i=0;
    void setup()
    {
    myservo.attach(9);  // 将引脚9上的舵机与声明的舵机对象连接起来
    Serial.begin(9600);
    }
    void loop() {
    delay(1000);
      int chk = DHT11.read(DHT11PIN);
      Serial.print("当前湿度: ");//湿度
      Serial.print(DHT11.humidity);
      Serial.println(" %RH ");
      Serial.print("当前温度: ");//温度
      Serial.print(DHT11.temperature);
      Serial.println(" ℃ ");
      Serial.println("  ");
    if(DHT11.temperature>=25)
      {
         //for(pos = 0; pos < 180; pos+= 1)  // 舵机从0°转到180°,每次增加1°
             
          myservo.write(180);           // 给舵机写入角度   
          delay(150);   // 延时15ms让舵机转到指定位置
         
         
      }
        if(DHT11.temperature<=20){
           //for(pos = 180; pos>=0; pos-=1)    // 舵机从180°转回到0°,每次减小1°                        
           myservo.write(0);        // 写角度到舵机   
           delay(150);                 // 延时15ms让舵机转到指定位置
          
    }

      }
    感谢支持,希望以上内容能给予你启发

    该用户从未签到

     楼主| 发表于 2019-5-6 10:02 | 显示全部楼层
    xmile 发表于 2019-5-5 22:37
    #include     // 声明调用Servo.h库
    #include
    #define DHT11PIN 5

    不好使啊  这么加行啊 解决不了
  • TA的每日心情
    慵懒
    2019-8-16 15:57
  • 签到天数: 60 天

    [LV.6]常住居民II

    发表于 2019-5-6 10:43 | 显示全部楼层
    本帖最后由 jpolo 于 2019-5-6 10:46 编辑

    if(DHT11.temperature>=25)
      {
         for(pos = 0; pos < 180; pos+= 1) { // 舵机从0°转到180°,每次增加1° ----------//加括号
             
          myservo.write(180);           // 给舵机写入角度   ----------//是不是应该写成 myservo.write(pos);
          delay(15);   // 延时15ms让舵机转到指定位置
         }
         
      }
        if(DHT11.temperature<=20){
           for(pos = 180; pos>=0; pos-=1) {  // 舵机从180°转回到0°,每次减小1°     ----------//加括号                  
           myservo.write(0);        // 写角度到舵机    ----------//是不是应该写成 myservo.write(pos);
           delay(15);                 // 延时15ms让舵机转到指定位置
           }
    }

      }

    该用户从未签到

     楼主| 发表于 2019-5-6 11:27 | 显示全部楼层
    jpolo 发表于 2019-5-6 10:43
    if(DHT11.temperature>=25)
      {
         for(pos = 0; pos < 180; pos+= 1) { // 舵机从0°转到180°,每次增 ...

    写POS或者角度都可以 但是都不能解决这个自动摆回去问题
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    OLED 128*64自制可达10000000个选项的菜单(已更新)
    OLED 128*64自制可达10000
    OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
    这个怎么整?标点都是英文的
    这个怎么整?标点都是英文
    a=a+1改成a++也不行
    [WiFiduino-8266开发板测试]三、测试IO口
    [WiFiduino-8266开发板测
    首先测试IO口的关系,板载正面的D0~D15[D14,D15没有,相同的位置写的是D4,D5],反面
    求助,arduino nano发热严重
    求助,arduino nano发热严
    我有一块arduino nano板,装在一个扩展板上(如下图),用扩展板上的外接电源接口(资
    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表