C++ Blynk.syncVirtual(V1)不更新虚拟管脚值

C++ Blynk.syncVirtual(V1)不更新虚拟管脚值,c++,arduino,esp8266,nodemcu,blynk,C++,Arduino,Esp8266,Nodemcu,Blynk,我试着用这段代码运行步进电机并打印Blynk应用程序操纵杆的X和Y坐标。但代码只获取一次操纵杆值。但是当我使用if条件而不是while()时,它工作得很好。我需要在while条件下连续运行步进电机,但在if条件下,它们关闭和打开会很快降低步进电机的速度 请帮我处理这个情况 代码 我知道代码是非常错误的,没有多大意义,但我只需要修复Blynk.syncVirtual()问题 我还尝试在Blynk.syncVirtual()之后添加Blynk.run(),因为有人告诉Blynk社区这样做 在whil

我试着用这段代码运行步进电机并打印Blynk应用程序操纵杆的X和Y坐标。但代码只获取一次操纵杆值。但是当我使用if条件而不是while()时,它工作得很好。我需要在while条件下连续运行步进电机,但在if条件下,它们关闭和打开会很快降低步进电机的速度

请帮我处理这个情况

代码

我知道代码是非常错误的,没有多大意义,但我只需要修复Blynk.syncVirtual()问题

我还尝试在Blynk.syncVirtual()之后添加Blynk.run(),因为有人告诉Blynk社区这样做

在while循环中,您正在设置满足while循环条件的
prev\u x=x
prev\u y=y
,在while循环中,您正在设置满足while循环条件的
prev\u x=x
prev\u y=y
,这是否有效

while(x != prev_x && y != prev_y){

    stepper_1.run();
    stepper_2.run();

    Blynk.syncVirtual(V1);
    Blynk.run();

    Serial.print("X = ");
    Serial.print(x);
    Serial.print("; Y = ");
    Serial.println(y);
    }

    prev_x = x;
    prev_y = y;

  }
while(y <= 150 && x <= 150 && x >= -150 && y >= -150) {

stepper_1.run();
stepper_2.run();

Blynk.syncVirtual(V1);
Blynk.run();

Serial.print("X = ");
Serial.print(x);
Serial.print("; Y = ");
Serial.println(y);
}

//prev_x = x;
//prev_y = y;
while(y=-150){
步进器_1.run();
步进器_2.run();
Blynk.syncVirtual(V1);
Blynk.run();
Serial.print(“X=”);
连续打印(x);
Serial.print(“;Y=”);
序列号println(y);
}
//prev_x=x;
//上一个y=y;
这行吗

while(y <= 150 && x <= 150 && x >= -150 && y >= -150) {

stepper_1.run();
stepper_2.run();

Blynk.syncVirtual(V1);
Blynk.run();

Serial.print("X = ");
Serial.print(x);
Serial.print("; Y = ");
Serial.println(y);
}

//prev_x = x;
//prev_y = y;
while(y=-150){
步进器_1.run();
步进器_2.run();
Blynk.syncVirtual(V1);
Blynk.run();
Serial.print(“X=”);
连续打印(x);
Serial.print(“;Y=”);
序列号println(y);
}
//prev_x=x;
//上一个y=y;


感谢您的回复。我想读取while循环中的虚拟管脚,以便x和y的值发生变化。请告诉我如何读取此循环中操纵杆的虚拟pin,为什么需要
prev_x
prev_y
变量?这样,当不需要特定的prev_x和prev_y时。我将使用这些变量来定义操纵杆中的空档区域,因此每当我们将操纵杆设置为0,0时,步进电机都会来重新检查操纵杆,然后尝试将其作为while循环的条件,看看是否有效,还有什么是
loop()
方法?很抱歉,我没有得到您的答案,请详细说明或发送小代码谢谢您的回复。我想读取while循环中的虚拟管脚,以便x和y的值发生变化。请告诉我如何读取此循环中操纵杆的虚拟pin,为什么需要
prev_x
prev_y
变量?这样,当不需要特定的prev_x和prev_y时。我将使用这些变量来定义操纵杆中的空档区域,因此每当我们将操纵杆设置为0,0时,步进电机都会来重新检查操纵杆,然后尝试将其作为while循环的条件,看看是否有效,还有什么是
loop()
方法?很抱歉,我没有得到您的答案,请详细说明或发送小代码。是的,但只会再次运行存储的第一个值。例如,如果发送的第一个数据是x=37和y 512,则不会更新itCheck
run()
方法是否正常工作。它应该能正常工作一切正常它也在获取新数据,但电机不工作您没有告诉
loop()
方法做什么,因为您没有使用
loop())
在您的代码中是的,但只会再次运行存储的第一个值。例如,如果发送的第一个数据是x=37和y 512,则不会更新itCheck
run()
方法是否正常工作。它应该可以正常工作一切正常它也在获取新数据,但是电机不工作您没有告诉
loop()
方法做什么,因为您没有在代码中使用
loop()
不要调用Blynk.syncVirtual(V1)。如果您移动操纵杆,Blynk将调用Blynk_WRITE(V1),而不使用它。使用syncVirtual in loop,您会淹没服务器,如果我不使用Blynk.syncVirtual,它会阻止您的爆发,然后Blynk只在整个环路中跟踪操纵杆值一次,从而导致步进电机停止,这就是为什么我需要在while loop中反复查看操纵杆值的原因您有
Blynk.syncVirtual(V1)in loop()代码片段我在while循环中添加了它,这样它就可以一次又一次地检查值,如果它们导致条件为false,它就离开while循环。这更糟糕。Blynk忽略嵌套的run()。BLYNK_WRITE是从lop()中的run()调用的,不要调用BLYNK.syncVirtual(V1)。如果您移动操纵杆,Blynk将调用Blynk_WRITE(V1),而不使用它。使用syncVirtual in loop,您会淹没服务器,如果我不使用Blynk.syncVirtual,它会阻止您的爆发,然后Blynk只在整个环路中跟踪操纵杆值一次,从而导致步进电机停止,这就是为什么我需要在while loop中反复查看操纵杆值的原因您有
Blynk.syncVirtual(V1)in loop()代码片段我在while循环中添加了它,这样它就可以一次又一次地检查值,如果它们导致条件为false,它就离开while循环。这更糟糕。Blynk忽略嵌套的run()。BLYNK_WRITE是从lop()中的run()调用的