* AM2321的取温度间隔得大于2s,否则,i2c会不工作了 * SimpleTimer有个bug,会导致两次快速的读温度,现在读温度函数里加了保护 * Blynk有个bug,会导致无法把数据传到服务器 * 现在可以正常工作了
Blynk_v0_3_7/SimpleTimer/SimpleTimer.h
- Committer:
- lixianyu
- Date:
- 2016-06-23
- Revision:
- 0:740c1eb2df13
File content as of revision 0:740c1eb2df13:
/* * SimpleTimer.h * * SimpleTimer - A timer library for Arduino. * Author: mromani@ottotecnica.com * Copyright (c) 2010 OTTOTECNICA Italy * * This library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser * General Public License as published by the Free Software * Foundation; either version 2.1 of the License, or (at * your option) any later version. * * This library is distributed in the hope that it will * be useful, but WITHOUT ANY WARRANTY; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU Lesser General Public * License for more details. * * You should have received a copy of the GNU Lesser * General Public License along with this library; if not, * write to the Free Software Foundation, Inc., * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifndef SIMPLETIMER_H #define SIMPLETIMER_H #include "mbed.h" typedef void (*timer_callback)(void); class SimpleTimer { public: // maximum number of timers const static int MAX_TIMERS = 10; // setTimer() constants const static int RUN_FOREVER = 0; const static int RUN_ONCE = 1; // constructor SimpleTimer(); // this function must be called inside loop() void run(); // call function f every d milliseconds int setInterval(uint32_t d, timer_callback f); // call function f once after d milliseconds int setTimeout(uint32_t d, timer_callback f); // call function f every d milliseconds for n times int setTimer(uint32_t d, timer_callback f, int n); // destroy the specified timer void deleteTimer(int numTimer); // restart the specified timer void restartTimer(int numTimer); // returns true if the specified timer is enabled bool isEnabled(int numTimer); // enables the specified timer void enable(int numTimer); // disables the specified timer void disable(int numTimer); // enables the specified timer if it's currently disabled, // and vice-versa void toggle(int numTimer); // returns the number of used timers int getNumTimers(); // returns the number of available timers int getNumAvailableTimers() { return MAX_TIMERS - numTimers; }; private: // deferred call constants const static int DEFCALL_DONTRUN = 0; // don't call the callback function const static int DEFCALL_RUNONLY = 1; // call the callback function but don't delete the timer const static int DEFCALL_RUNANDDEL = 2; // call the callback function and delete the timer // find the first available slot int findFirstFreeSlot(); // value returned by the millis() function // in the previous run() call uint32_t prev_millis[MAX_TIMERS]; // pointers to the callback functions timer_callback callbacks[MAX_TIMERS]; // delay values uint32_t delays[MAX_TIMERS]; // number of runs to be executed for each timer int maxNumRuns[MAX_TIMERS]; // number of executed runs for each timer int numRuns[MAX_TIMERS]; // which timers are enabled bool enabled[MAX_TIMERS]; // deferred function call (sort of) - N.B.: this array is only used in run() int toBeCalled[MAX_TIMERS]; // actual number of timers in use int numTimers; }; #endif