怎么在if语句执行到某一步后,跳出if执行一遍串口-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 554|回复: 0

[未解决] 怎么在if语句执行到某一步后,跳出if执行一遍串口

[复制链接]
发表于 2022-2-14 13:25 | 显示全部楼层 |阅读模式
我想实现的功能是:按键控制舵机旋转到100度后,再调用串口,进行红外测距,测量数据显示在显示器上,然后舵机复位
现在的情况是,当我按下按键那一刻,串口就已经停止运行,程序开始执行“jia”函数里的代码,此时“jia”函数运行到“get_data"函数时,获取的串口测距数据为按键按下那一刻的,而不是当前的测距数据。
请问下大神们有没有好的逻辑控制思路或者控制函数,可以让舵机旋转到100度后,执行实时测距功能,完了执行舵机复位。


//舵机控制函数(这只是一部分代码)
void jia()
{
    for(pos = 56;pos <=100; pos += 1)  // 从56度到100度运动
  {                                    
    myservo.write(pos);                // 指定舵机转向的角度
    delay(5);                  
    }
    /*********************************/
    delay(1500);                        //等待测距
    get_data();             //获取串口数据
    loop_oled();            //循环显示OLED显示屏
    CH="";
    /*******************************/
    for (pos = 100; pos >= 156; pos += 1) { //舵机复位
    myservo.write(pos);              
    delay(5);                     
  }     
   delay(100);
   for (pos = 150; pos >= 56; pos -= 1) {
    myservo.write(pos);              
    delay(10);                     
  }
    }


void loop() {
     myservo.write(56); //定义舵机初始值
  if (irrecv.decode(&results)) {
    if(results.value==16753245)
    {
        delay(10);
        if(results.value==16753245)
        jia();
    }
    irrecv.resume(); // Receive the next value
  delay(10);
  }
  else{
     get_data();
     Serial.println(CH);
     CH="";
    delay(10);
    }
}

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-30 23:52 , Processed in 0.124392 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表