请问使用红外遥控,但是在接收到红外信号后程序不运行ze...
本帖最后由 是我夕立哒 于 2021-5-8 15:57 编辑使用红外遥控作为开关以及部分功能的遥控,在启动自动跟随后程序无法运行,并且其他动作在通过遥控执行一次后就无法在重复执行,并且自动跟随也无法使用,各位大佬帮忙看看是什么问题则么解决,谢谢! 单独在主程序中去掉函数(距离)就没问题。。
代码
*!
* MindPlus
* mega2560
*
*/
#include <DFRobot_IRremote.h>
#include <DFRobot_Libraries.h>
// 动态变量
String mind_s_HongWai;
volatile float mind_n_Men, mind_n_index_L, mind_n_index_R, mind_n_switch;
// 函数声明
void DF_JuLi();
void DF_ZuoZhengZhuan(float mind_n_ZuoSu);
void DF_KaiMen();
void DF_ZuoFanZhuan(float mind_n_ZuoSu);
void DF_GuanMen();
void DF_ZuoTing();
void DF_YouZhengZhuan(float mind_n_YouSu);
void DF_YouFanZhuan(float mind_n_YouSu);
void DF_YouTing();
// 创建对象
IRremote_Receive remoteReceive_2;
DFRobot_Servo360 servo360_22;
DFRobot_Servo360 servo360_23;
byte comdataL = {}; //接受左边传感器的数据
int mind_n_DistanceL = 6800; //左边小车的距离发送模块的距离
byte comdataR = {}; //接受右边传感器的数据
int mind_n_DistanceR = 6800; //右边小车的距离发送模块的距离
// 主程序开始
void setup() {
Serial.begin(9600);
Serial1.begin(115200);
Serial2.begin(115200);
servo360_22.attach(22);
servo360_23.attach(23);
}
void loop() {
mind_s_HongWai = (remoteReceive_2.getIrCommand(2));
if ((mind_s_HongWai==String("FFA857"))) {
mind_n_switch = 0;
}
if ((mind_s_HongWai==String("FFE01F"))) {
mind_n_switch = 1;
}
if (((mind_s_HongWai==String("FF30CF")) && (mind_n_switch==1))) {
DF_KaiMen();
}
if (((mind_s_HongWai==String("FF18E7")) && (mind_n_switch==1))) {
DF_GuanMen();
}
if (((mind_n_Men==0) && (mind_n_switch==1))) {
delay(10);
DF_JuLi();
Serial.print(mind_n_DistanceL);
Serial.print(" ");
Serial.println(mind_n_DistanceR);
if (((mind_n_DistanceR + mind_n_DistanceL)>=13400)) {
DF_YouTing();
DF_ZuoTing();
}
else {
if (((abs((mind_n_DistanceL - mind_n_DistanceR)))<=50)) {
DF_ZuoZhengZhuan(150);
DF_YouZhengZhuan(150);
}
else {
if (((mind_n_DistanceL - mind_n_DistanceR)>0)) {
DF_ZuoZhengZhuan(150);
DF_YouFanZhuan(150);
}
else {
DF_YouZhengZhuan(150);
DF_ZuoFanZhuan(150);
}
}
}
}
Serial.print("switch:");
Serial.print(mind_n_switch);
Serial.print("\"门\"");
Serial.println(mind_n_Men);
}
void DF_JuLi() {
mind_n_DistanceL =6800;
mind_n_DistanceR =6800;
static byte mind_n_index_L = 0, mind_n_index_R = 0;
while (Serial1.available()) //如果串口数据可用
{
if (mind_n_index_L == 0)
{
comdataL = Serial1.read();//把获取传感器的数据存放到数组里面
if (comdataL == 0xA5) //判断数据的头文件
mind_n_index_L++;
}
else
{
comdataL = Serial1.read();
}
if (mind_n_index_L >= 3)
{
mind_n_index_L = 0;
mind_n_DistanceL = comdataL << 8 | comdataL; //把收到的数据合成为距离值
}
}
while (Serial2.available()) //如果串口数据可用
{
if (mind_n_index_R == 0)
{
comdataR = Serial2.read();//把获取传感器的数据存放到数组里面
if (comdataR == 0xA5) //判断数据的头文件
mind_n_index_R++;
}
else
{
comdataR = Serial2.read();
}
}
if (mind_n_index_R >= 3)
{
mind_n_index_R= 0;
mind_n_DistanceR = comdataR << 8 | comdataR; //把收到的数据合成为距离值
}
}
void DF_ZuoTing() {
analogWrite(13, 0);
analogWrite(12, 0);
}
void DF_ZuoZhengZhuan(float mind_n_ZuoSu) {
analogWrite(12, mind_n_ZuoSu);
analogWrite(13, mind_n_ZuoSu);
digitalWrite(50, LOW);
digitalWrite(51, HIGH);
digitalWrite(52, LOW);
digitalWrite(53, HIGH);
}
void DF_GuanMen() {
// 22右
// 23左
delay(10);
servo360_22.speed(90);
servo360_23.speed(-90);
delay(600);
servo360_22.speed(0);
servo360_23.speed(0);
mind_n_Men = 0;
}
void DF_ZuoFanZhuan(float mind_n_ZuoSu) {
analogWrite(12, mind_n_ZuoSu);
analogWrite(13, mind_n_ZuoSu);
digitalWrite(50, HIGH);
digitalWrite(51, LOW);
digitalWrite(52, HIGH);
digitalWrite(52, LOW);
}
void DF_KaiMen() {
delay(10);
servo360_22.speed(-90);
servo360_23.speed(90);
delay(600);
servo360_22.speed(0);
servo360_23.speed(0);
mind_n_Men = 1;
}
void DF_YouTing() {
analogWrite(10, 0);
analogWrite(11, 0);
}
void DF_YouZhengZhuan(float mind_n_YouSu) {
analogWrite(11, mind_n_YouSu);
analogWrite(10, mind_n_YouSu);
digitalWrite(46, LOW);
digitalWrite(47, HIGH);
digitalWrite(48, LOW);
digitalWrite(49, HIGH);
}
void DF_YouFanZhuan(float mind_n_YouSu) {
analogWrite(11, mind_n_YouSu);
analogWrite(10, mind_n_YouSu);
digitalWrite(46, HIGH);
digitalWrite(47, LOW);
digitalWrite(48, HIGH);
digitalWrite(49, LOW);
}
https://mc.dfrobot.com.cn/forum.php?mod=image&aid=124683&size=300x300&key=0f597358b17f32cb&nocache=yes&type=fixnonehttps://mc.dfrobot.com.cn/forum.php?mod=image&aid=124682&size=300x300&key=8c6961d9d0eed560&nocache=yes&type=fixnone
页:
[1]