用于“多任务处理”的Arduino算法

时间:2013-08-15 04:16:22

标签: c algorithm arduino multitasking

首先,我不是在寻找确切的代码,只是帮助创建一个算法。我们走了......

我有一个带有以太网屏蔽的arduino,设置为每隔几分钟发出一次HTTP请求。对该请求的响应是一个简单的JSON数组{"new":0}{"new":1}我不会详细介绍,但基本上,我在Web上有一个事情,当更新时,这个JSON数组变为1,当更新已被确认,即用户登录到后端,JSON数组变回0。

我需要arduino做的是当JSON数组等于1时,打开和关闭LED,直到JSON数组再次等于0。

我遇到的问题是,设计一种能够淡化LED同时继续发送HTTP请求的算法。

2 个答案:

答案 0 :(得分:0)

基本的伪代码大纲如下:

int PWM;
int minute_ctr;

loop()
{
   if (minute_ctr > 1000)
   {
      minute_ctr = 0;
      check HTML page for 1/0
   }

   if (page == 1)
      PWM++;
      set PWM for LED (analogWrite) change direction when PWM = 0 or 255
   else 
      set LED off
   end if

   delay(10)  

   minute_ctr += 10;
}

您需要填写所有详细信息。

答案 1 :(得分:0)

我建议看看Simple Timer Library它基本上会像@JackCColeman建议的那样,但是以更清洁/更简单的方式,在幕后。类似于@Morrison Chang的打断,建议。

#include <SimpleTimer.h>
SimpleTimer timer;

// a function to be executed periodically
// by the below timer.run in the main loop
void change_pwm() {
  if (page == 1)
    PWM++;
    set PWM for LED (analogWrite) change direction when PWM = 0 or 255
  else 
    set LED off
  end if
}

void setup() {
    Serial.begin(9600);
    timer.setInterval(10, change_pwm);
}

void loop() {
    timer.run();
    //...along with all the other stuff.
}