arduino 函数在loop中可以直接引用,但是在红外线控制函数-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 481|回复: 2

[未解决] arduino 函数在loop中可以直接引用,但是在红外线控制函数

[复制链接]
发表于 2022-3-9 23:21 | 显示全部楼层 |阅读模式
  1. void judge_front()
  2. {
  3.   
  4. //digitalWrite(beep, LOW);
  5.   run();
  6.   
  7.      if(analogRead(flame_head) <25 )
  8.    {
  9.    
  10.     digitalWrite(beep, HIGH);
  11.       digitalWrite(INA, LOW);//正转
  12.       digitalWrite(INB, HIGH);
  13.       brake(100000);
  14.       }
  15.       else {
  16.       
  17.         digitalWrite(INA, LOW);//正转
  18.       digitalWrite(INB, LOW);
  19.       digitalWrite(beep, LOW);
  20.         }
  21.    
  22. }

  23. void dump(decode_results *results)
  24. {
  25.   int count = results->rawlen;
  26. }


  27.   void control()
  28.   {
  29.     if (irrecv.decode(&results)) //调用库函数:解码
  30.   {
  31.     // If it's been at least 1/4 second since the last
  32.     // IR received, toggle the relay
  33.     if (millis() - last > 250) //确定接收到信号
  34.     {
  35.       on = !on;//标志位置反
  36.       digitalWrite(13, on ? HIGH : LOW);//板子上接收到信号闪烁一下led
  37.       dump(&results);//解码红外信号
  38.     }
  39.     if (results.value == run_car )//按键CH
  40.     {
  41.       run();//前进
  42.       }
  43.     if (results.value == back_car )//按键+
  44.      {
  45.       back(10);//后退
  46.      }
  47.     if (results.value == left_car )//按键<<
  48.       {
  49.         left(6);
  50.        stop();
  51.         }
  52.     if (results.value == right_car )//按键>||
  53.      { right(7);//右转
  54.        stop();
  55.      }
  56.     if (results.value == stop_car )//按键>>|
  57.       {
  58.         stop();
  59.         }
  60.   
  61.        if (results.value == void_car)
  62.       { run();
  63.         for (int i = 1; i <= 100; i++)
  64.     {
  65.        PID_Init();  //PID初始化,需要初始化才能开始计算pid
  66.       Distance_test();
  67.       PID.Current_value =Distance_test();//实际值        
  68.       PID_operation(15.0);
  69.       c=PID.PWM;
  70.         PWM(c);
  71.       }
  72.       }
  73.        if (results.value ==judge_car)
  74.        {
  75.          judge_LR();
  76.           }  
  77.          if(results.value ==judge_stop)
  78.          {
  79.          judge_front( );
  80.           }
  81.     last = millis();      
  82.     irrecv.resume(); // Receive the next value
  83.   }
  84.     }
  85. ///////////程序运行///////////////////////
  86. void loop()
  87. {
  88.   keysacn();     //调用按键扫描函数
  89.   while (1)
  90. {

  91. //control();
  92. //judge_LR();
  93. judge_front();
  94. Serial.println(analogRead(flame_head));

  95.   
  96. }
  97. }
  98.   
复制代码
 楼主| 发表于 2022-3-9 23:22 | 显示全部楼层
在if(results.value ==judge_stop)
         {
         judge_front( );
          }

  judge_front( )在loop中直接引用功能是完整的,但是在if(results.value ==judge_stop)中没有反应,只是在run();前进,if没有判断
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-1 08:39 , Processed in 0.070969 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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