查看: 280|回复: 8

[已解决] 问一下大家有没有感觉blinker的延迟,怎么能即时响应?

[复制链接]
  • TA的每日心情
    开心
    2019-5-29 16:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2019-5-28 07:23 | 显示全部楼层 |阅读模式
    使用blinker是必须要用回调函数吗,感觉延迟好高,响应的有1-2S的空白
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2019-5-28 08:51 | 显示全部楼层
    通常一秒以内
    可能是你网络问题,或者程序没写好另外,设备和手机在同一个局域网时,会切换成局域网通信,通信速度会更快
    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情
    开心
    2019-5-29 16:18
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2019-5-28 12:05 | 显示全部楼层
    奈何col 发表于 2019-5-28 08:51
    通常一秒以内
    可能是你网络问题,或者程序没写好另外,设备和手机在同一个局域网时,会切换成局域网通信, ...

    后来我直接连手机热点,响应速度也没变化,程序上我也尽可能的精简了,这是我的程序,麻烦您看一下是什么原因。

    #define BLINKER_WIFI
    #include <Blinker.h>
    //#include <Servo.h>

    int INA = D4; //电机A正反转控制端
    int PWMA = D5; //电机A调速端
    int INB = D7; //电机B正反转控制端
    int PWMB = D6; //电机B调速端

    char auth[] = "375e594d10f6";
    char ssid[] = "bukaiyuan";
    char pswd[] = "15910602089";

    /*Servo myservo;

    BlinkerSlider Slider1("duoji");

    void slider1_callback(int32_t value)
    {

       myservo.write(value);
       // BLINKER_LOG("get slider value: ", value);
    }
    */

    BlinkerButton Buttonqian("btn-qian");
    void buttonqian_callback(const String & state) {
        BLINKER_LOG("get button state: ", state);
        if (state=="press")
        {
            digitalWrite(INA,LOW);
           digitalWrite(INB,HIGH);
          analogWrite(PWMA,80);
          analogWrite(PWMB,80);
        }
        else if(state=="pressup"){
          digitalWrite(PWMA,LOW);
           digitalWrite(PWMB,LOW);
        }
    }

    BlinkerButton Buttonhou("btn-hou");
    void buttonhou_callback(const String & state) {
        BLINKER_LOG("get button state: ", state);
        if (state=="press")
        {
            digitalWrite(INA,HIGH);
           digitalWrite(INB,LOW);
           analogWrite(PWMA,80);
           analogWrite(PWMB,80);
        }
        else if(state=="pressup"){
           digitalWrite(PWMA,LOW);
           digitalWrite(PWMB,LOW);
        }
    }

    BlinkerButton Buttonzuo("btn-zuo");
    void buttonzuo_callback(const String & state) {
        BLINKER_LOG("get button state: ", state);
        if (state=="press")
        {
            digitalWrite(INA,HIGH);
           digitalWrite(INB,HIGH);
           analogWrite(PWMA,80);
          analogWrite(PWMB,80);
        }
        else if(state=="pressup"){
           digitalWrite(PWMA,LOW);
           digitalWrite(PWMB,LOW);
        }
    }

    BlinkerButton Buttonyou("btn-you");
    void buttonyou_callback(const String & state) {
        BLINKER_LOG("get button state: ", state);
        if (state=="press")
        {
            digitalWrite(INA,LOW);
           digitalWrite(INB,LOW);
           analogWrite(PWMA,80);
           analogWrite(PWMB,80);
        }
        else if(state=="pressup"){
           digitalWrite(PWMA,LOW);
           digitalWrite(PWMB,LOW);
        }
    }
    void setup()
    {
        analogWriteRange(255);
        //myservo.attach(D5);  
        Serial.begin(115200);
        BLINKER_DEBUG.stream(Serial);

         pinMode(INA,OUTPUT);
         pinMode(INB,OUTPUT);
         pinMode(PWMA,OUTPUT);
         pinMode(PWMB,OUTPUT);
       
        Blinker.begin(auth, ssid, pswd);
        Buttonqian.attach(buttonqian_callback);
        Buttonhou.attach(buttonhou_callback);
        Buttonzuo.attach(buttonzuo_callback);
        Buttonyou.attach(buttonyou_callback);
    }

    void loop()
    {
        Blinker.run();
    }
  • TA的每日心情
    开心
    2019-5-29 16:18
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2019-5-28 12:07 | 显示全部楼层
    奈何col 发表于 2019-5-28 08:51
    通常一秒以内
    可能是你网络问题,或者程序没写好另外,设备和手机在同一个局域网时,会切换成局域网通信, ...

    BLINKER能不能像响应摇杆控制那样,shif让电机即时响应并动作。
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2019-5-28 13:26 | 显示全部楼层
    从你以上描述看,你这不是延迟问题,而是车的惯性。。。
    你停止的时候让轮子反转100ms就行了。。。
    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情
    开心
    2019-5-29 16:18
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2019-5-28 13:47 | 显示全部楼层
    奈何col 发表于 2019-5-28 13:26
    从你以上描述看,你这不是延迟问题,而是车的惯性。。。
    你停止的时候让轮子反转100ms就行了。。。 ...

    不是惯性,从按APP上的按键到小车有动作,这之间有大概一秒的延迟,这是正常现象吗
  • TA的每日心情
    开心
    2019-5-29 16:18
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2019-5-28 14:10 | 显示全部楼层
    奈何col 发表于 2019-5-28 13:26
    从你以上描述看,你这不是延迟问题,而是车的惯性。。。
    你停止的时候让轮子反转100ms就行了。。。 ...

    还有一个类似的问题想请教一下,现在滑块是滑动后发送最后手指离开时候的数据,可不可以把变化的过程也即时发送,就像摇杆控制舵机一样,随着滑块而变化角度?
    PS:BLINKER这个软件真不错,良心之作
  • TA的每日心情
    擦汗
    2018-9-19 20:22
  • 签到天数: 47 天

    [LV.5]常住居民I

    发表于 2019-5-28 16:50 | 显示全部楼层
    bukaiyuan 发表于 2019-5-28 13:47
    不是惯性,从按APP上的按键到小车有动作,这之间有大概一秒的延迟,这是正常现象吗 ...

    一秒内是正常的,两三秒可能是你网络问题。

    你要通过串口调试来判断延迟多少,不要通过眼睛感觉,我从你的描述看,你只是眼睛感觉动作有延迟,那也可能是你硬件上的问题。比如小车并没有马上停下来,你要确定的是,8266是否即时接收到数据,而不是说小车有没停下来;
    如果是接收到数据了,并且动作执行了,没有停下来,就是惯性,或者你电机驱动的原因了

    如果你觉得以上内容帮到了你,你可以打赏支持作者
  • TA的每日心情
    开心
    2019-5-29 16:18
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2019-5-28 18:56 | 显示全部楼层
    coloz 发表于 2019-5-28 16:50
    一秒内是正常的,两三秒可能是你网络问题。

    你要通过串口调试来判断延迟多少,不要通过眼睛感觉,我从你 ...

    确实是一秒内,多的时候到一秒,用BLINKER之前是用摇杆连得线直接控制的,直接模拟读数比较快,可能刚用BLINKER和之前的一比较,主观上觉得动作很肉。
    谢谢大佬的解答。
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    MAC arduino ESP8266mDNS.h不能加载。。。
    MAC arduino ESP8266mDNS.
    SpiderRobot 蜘蛛
    SpiderRobot 蜘蛛
    关于SpiderRobot 项目实行方案 之前有人推荐我做这个项目,于是乎就有了这个 h
    【原创】 drawbot平面关节scara机械臂写字机 画画机器人直播...
    【原创】 drawbot平面关节
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太忙,一直没来得及
    项目分享——arduino梦幻交互雪花2019
    项目分享——arduino梦幻
    雪花由30颗LED打造,分为17个独立的部分,由Arduino Nano控制。每组LED都可以用PWM调
    体验OneNET4.0,一起来拼开发板
    体验OneNET4.0,一起来拼
    一、 活动时间2019年04月09日-2019年6月30日 二、活动链接1.登录Arduino中文社区账
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表