1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-07-27 18:02:17 +03:00

Ticker library

This commit is contained in:
Ivan Grokhotkov
2014-12-19 01:43:40 +03:00
parent 4cf6737823
commit b22a803d53
6 changed files with 223 additions and 0 deletions

View File

@ -0,0 +1,49 @@
/*
Basic Ticker usage
Ticker is an object that will call a given function with a certain period.
Each Ticker calls one function. You can have as many Tickers as you like,
memory being the only limitation.
A function may be attached to a ticker and detached from the ticker.
There are two variants of the attach function: attach and attach_ms.
The first one takes period in seconds, the second one in milliseconds.
An LED connected to GPIO1 will be blinking. Use a built-in LED on ESP-01
or connect an external one to TXD on other boards.
*/
#include <Ticker.h>
Ticker flipper;
int count = 0;
void flip()
{
int state = digitalRead(1); // get the current state of GPIO1 pin
digitalWrite(1, !state); // set pin to the opposite state
++count;
// when the counter reaches a certain value, start blinking like crazy
if (count == 20)
{
flipper.attach(&flip, 0.1);
}
// when the counter reaches yet another value, stop blinking
else if (count == 120)
{
flipper.detach();
}
}
void setup() {
pinMode(1, OUTPUT);
digitalWrite(1, LOW);
// flip the pin every 0.3s
flipper.attach(&flip, 0.3);
}
void loop() {
}

View File

@ -0,0 +1,36 @@
/*
Passing paramters to Ticker callbacks
Apart from void(void) functions, the Ticker library supports
functions taking one argument. This argument's size has to be less or
equal to 4 bytes (so char, short, int, float, void*, char* types will do).
This sample runs two tickers that both call one callback function,
but with different arguments.
An LED connected to GPIO1 will be pulsing. Use a built-in LED on ESP-01
or connect an external one to TXD on other boards.
*/
#include <Ticker.h>
Ticker tickerSetHigh;
Ticker tickerSetLow;
void setPin(int state) {
digitalWrite(1, state);
}
void setup() {
pinMode(1, OUTPUT);
digitalWrite(1, LOW);
// call setPin(0) every 25 ms
tickerSetLow.attach_ms(&setPin, 25, 0);
// call setPin(1) every 26 ms
tickerSetHigh.attach_ms(&setPin, 26, 1);
}
void loop() {
}