首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino超声波传感器检测到障碍物后停止转动伺服电机

Arduino超声波传感器检测到障碍物后停止转动伺服电机
EN

Stack Overflow用户
提问于 2020-11-21 02:43:30
回答 1查看 372关注 0票数 0

我想停止一个不断转动的伺服电机,直到超声波传感器检测到障碍物为止。例如,我希望当障碍物距离超声波传感器不到5厘米时,伺服电机停止。在无障碍物的情况下,伺服电机应不停转。

然而,障碍被移除后,我的伺服马达开始从不同的角度旋转,而不是在它停止的地方。我添加了Arduino代码的伺服电机旋转部分。

代码语言:javascript
复制
  void loop() {

    for (int i=0; i<=180; i++) {  
      distance = calculateDistance();
      if (distance <= 10){
        moveStop();
      } else {  
        moveForward();
        myServo.write(i);
        delay(5);  
      } 
    }

    for (int i=180; i>0; i--) {  
      distance = calculateDistance();
      if (distance <= 10) {
        moveStop();
      } else {  
        moveForward();
        myServo.write(i);
        delay(5);
      }
EN

回答 1

Stack Overflow用户

发布于 2020-11-21 22:20:02

问题是,即使物体挡住了我的路,我也会不断地被计数。我不能准确地重建你的设置,但我希望这能帮到你

代码语言:javascript
复制
int y = 0


void loop() {

  for(int i=0;i<=180;i++){  

    distance = calculateDistance();
    if (distance <= 10){
      moveStop();
      y++;                  //"counts the time" the servo is blocked by object
      }
    else{  
      moveForward();
      myServo.write(i-y);   //and subtracts that time from i
      delay(5);  
      } 
    }

  for(int i=180;i>0;i--){  

  distance = calculateDistance();
  if (distance <= 10){
    moveStop();
    y++;
    }
  else{  
    moveForward();
    myServo.write(i+y);              //same but in reverse
    delay(5);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64935125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档