Novas classes foram adicionadas à Event-Based Library for Arduino na sua revisão 45.
English version of this article: Event-Based Library for Arduino updated to R45!.
Dois novos componentes estão disponíveis nessa revisão:
Properties
Manipulador de variáveis persistentes. Pode ser usado para salvar dados de configuração na area persistente de memória EEPROM do Arduino.
Nesse exemplo duas variáveis para contar boots são salvas na EEPROM, uma do tipo numerico e outra do tipo string:
#include <Properties.h> #define PROPERTY_BOOTS 0 #define PROPERTY_TEXT 1 void setup() { Serial.begin(9600); if (Properties.load()) { if (Properties.getInt(PROPERTY_BOOTS)<=15) { //print data Serial.print("PROPERTY_BOOTS: "); Serial.println(Properties.getInt(PROPERTY_BOOTS)); Serial.print("PROPERTY_TEXT ("); Serial.print(Properties.get(PROPERTY_TEXT)->valueSize); Serial.print("): "); Serial.write((byte*)Properties.get(PROPERTY_TEXT)->value,Properties.get(PROPERTY_TEXT)->valueSize); Serial.println(); //sum PROPERTY_BOOTS and update text Properties.set(PROPERTY_BOOTS,Properties.getInt(PROPERTY_BOOTS)+1); char* text = (char*)malloc(32); sprintf(text,"Boot times: %d...", Properties.getInt(PROPERTY_BOOTS)); Properties.set(PROPERTY_TEXT,(void*)text,strlen(text)); Properties.save(); } else { Serial.println("Flushing!"); //flush data Properties.flush(); Properties.save(); } } else { Serial.println("Starting!"); //create data Properties.set(PROPERTY_BOOTS,1); char* text = (char*)malloc(32); sprintf(text,"Boot times: %d...", Properties.getInt(PROPERTY_BOOTS)); Properties.set(PROPERTY_TEXT,(void*)text,strlen(text)); Properties.save(); } } void loop() { }
TimedEvent
Simples temporizador de tarefas.
Nesse exemplo um evento (event1) é utilizado para controlar quando um outro evento (event2) é iniciado e parado em intervalos regulares enquanto eles enviam dados pelo Serial Monitor:
#include <TimedEvent.h> #define CONTROLLED_TIMER 1 bool flag = true; void setup() { Serial.begin(9600); //event 1 TimedEvent.addTimer(5000, event1); //event 2 TimedEvent.addTimer(CONTROLLED_TIMER, 500, event2); TimedEvent.start(CONTROLLED_TIMER); } void loop() { TimedEvent.loop(); } void event1(TimerInformation* Sender) { Serial.print("event1: "); if (flag=!flag) { TimedEvent.start(CONTROLLED_TIMER); Serial.println("START!"); } else { TimedEvent.stop(CONTROLLED_TIMER); Serial.println("STOP!"); } } void event2(TimerInformation* Sender) { Serial.println("event2!!"); }
Esse projeto possui um repositório com maiores informações sobre as classes, instruções de uso e opções para download. Ele pode ser acessado pela URL http://code.google.com/p/ebl-arduino/.
No comments:
Post a Comment