代码之家  ›  专栏  ›  技术社区  ›  learningtech

如何在100微秒时为ESP8266实现股票代码回调?

  •  1
  • learningtech  · 技术社区  · 7 年前

    Ticker.h 以10khz的频率对模拟输入进行一致采样,即每100us采样一次。我注意到 Ticker sampler; sampler.attach(0.0001,callbackfunc); 没用是因为 attach() 不会接受值0.0001。

    因此,我根据我看到的一些指南编写了以下代码:

    #include <ESP8266WiFi.h>
    #include <Ticker.h>
    
    bool s = true;
    void getSample()
    {
      s = !s;
    }
    Ticker tickerObject(getSample, 100, 0, MICROS_MICROS);
    
    const char *ssid =  "___";  // Change it
    const char *pass =  "___";  // Change it
    
    void setup()
    {
      Serial.begin(115200);
      Serial.println(0);      //start
      WiFi.mode(WIFI_STA);
      WiFi.begin(ssid, pass);
    
      tickerObject.start();
    
    }
    
    
    void loop()
    {
        if(s == true)
        {
          Serial.println("True");
        }
        else
        {
          Serial.println("False");
        }
    }
    

    然而,这并没有编译,因为 tickerObject.start() 方法不存在。所以我接下来做的是:

    1. 下载最新的股票代码包 as a zip file
    2. 备份 C:\Users\john\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.5.0-beta2\libraries\Ticker
    3. 重新启动我的Arduino IDE
    4. 编译并运行代码
    5. 打开串行监视器

    但是,当我检查串行监视器时,它打印的所有内容都是“True”。我在期待价值 s 以10khz频率在真与假之间切换。

    我做错了什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ben T    7 年前

    从该库的文档中:

    此库通过轮询 micros() 和 millis() 功能。它需要 update() loop() .

    循环() 应该是:

    void loop()
    {
        tickerObject.update();
    
        if(s == true)
    

    推荐文章