Warning: ksort() expects parameter 1 to be array, object given in /home/taweili/blog.ardublock.com/wp-content/plugins/bbpress/includes/core/template-functions.php on line 316
Arduino上有关事件驱动库的评估 | Ardublock

Arduino上有关事件驱动库的评估

世界上自从出现Arduino之后,做互动电子就变得容易了。自从有了ArduBlock后,在Arduino就变得容易了。
smile

我们可以使用Arduino来控制机器人平衡;可以控制小车沿着黑线走;可以让一件艺术品充满活力。但是,但是如果想要完成一个交互复杂的系统的话,想要完成arduino函数就比较困难了。

举个例子来说,我们需要让arduino每秒钟输出一下环境的亮度,同时,当亮度小于某一个值的时候,把灯亮起。程序分开写会很容易。


void loop()
{
Serial.println(analogRead(A0));
}

void loop()
{
if (analogRead(A0) < 200) {
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}
}

但是,如果想要两件事情同时做,就会有些困难,比如没毫秒都检测一下亮度,同时,在整秒的时候输出一下亮度值。如果有更复杂的事情需要处理的时候,代码就会更加难以控制。幸好,我们可以使用第三方事件驱动库来帮助我们解决这个问题。近期,我们寻找并试用了一些Arduino上的事件驱动库,并想办法集成到ArduBlock。这里总结一下。


1.  arduino-EventManager
https://github.com/igormiktor/arduino-EventManager
last update: 2013-01

2.  Arduino Event Manager
http://sourceforge.net/projects/arduinoeventman
last update: 2011-01-24
怎么就一个pde??

3. QP
http://playground.arduino.cc/Code/QP
By Quantum Leaps
last update: 2013-06-02
好象很多人用的
是一个RTOS
自带IDE(QDK, QP Development Kit for arduino)
代码很复杂,不知道他在做什么事情
arduino 1.0 和 00xx的库用的是不同的两套QP

4. Kernel
http://robotic-controls.com/learn/arduino/kernel-event-driven-delays-and-intervals
by Evan Boldt
last update: 2013-02-07
类似javascript的 setInterval

5. Metro
http://playground.arduino.cc/code/metro
last update: 2009-01-19
时间驱动的,也是设置一个interval

6. arduino - softtimer
http://code.google.com/p/arduino-softtimer/
by Prampec
last update: 2012-12
也是 设置 interval
但是他说没有delay
看了代码有点意思,但是太多,还没看

7. Ebl-arduino
http://code.google.com/p/ebl-arduino/
Event-Based Library for Arduino
last update 2011-07
终于有对于引脚的事件了

8. Aiko
https://github.com/geekscape/Aiko
by geekscape
last update: a year ago
arduino 官方给的aiko好像已经很久没更新了,但是其他fork倒是很活跃,比如samotage的
也是设置interval

9. NilRTOS
http://code.google.com/p/rtoslibs/
last update: 2013-02
NilRTOS是一个很好的RTOS,但是它的配置过于灵活和复杂,集成起来有难度
和他类似的还有
NilRTOS
ChibiRTOS
FreeRTOS
SCoop
adOS
ieOS

10. SCoop
https://code.google.com/p/arduino-scoop-cooperative-scheduler-arm-avr/
简单易用的Arduino库,而且mega uno 以及Arduino1.x Arduino-00xx 都支持,就是你了!!

11. PciManager
http://code.google.com/p/arduino-pcimanager/
编译都编译不过,改好能编译过之后还是无法使用。。

12. PinChangeInt
http://code.google.com/p/arduino-pinchangeint/
这好好像用的人比较多,但是只支持Uno,mega什么别的都不支持,而且动不动就死掉。。

其他的一些库可以看这里 http://playground.arduino.cc/Main/LibraryList

最后我们还是选择了SCoop来做为ArduBlock支持的事件驱动库,这里剧透一下,SCoop已经开发完成,正在内测,马上就发布了:-D

ardublock

(English) Languages: