Arduino庫以一種簡單的方式控制標準LED。
EasyLeD提供了簡單的邏輯方法,例如on() , off() , toggle() , flash() , isOn() , isOff()和reset() 。
該庫將有助於編寫易於閱讀和理解的清潔代碼。
可以通過簡單地使用語句led.on()來打開LED。當某人閱讀該語句時,立即清楚其做什麼:打開LED。使用Easyled,無需使用pinMode() , digitalWrite() , HIGH和LOW 。
不用輕鬆,您將不得不使用諸如digitalWrite(LED_PIN, LOW)之類的語句來切換LED ON(如果有效-LOW)。閱讀該語句時,尚不清楚它是否會打開或關閉LED。這使得閱讀和理解代碼變得更加困難。您需要記住HIGH還是LOW意味著LED打開還是關閉。當使用主動低LED和主動高LED時,這將使代碼更加難以讀取和理解。
LED被定義為EasyLed類的實例。構造函數需要兩個參數: pin ,即LED連接到activeLevel GPIO引腳,該引腳指示LED是有效的還是高的。枚舉值EasyLed::ActiveLevel::Low代表主動而EasyLed::ActiveLevel::High代表高度高。
對於ON和OFF狀態,使用類似的枚舉值: EasyLed::State::On表示LED已打開, EasyLed::State::Off意味著它已關閉。枚舉值用於狀態,因為LOW或HIGH唯一的識別LED是否打開還是關閉。
可以選擇地指定第三個參數initialState以將初始狀態設置為ON(默認值關閉)。第四參數pinmode也是可選的,並將引腳設置為輸出。通常不得更改(除非有理由將其更改為支持它的架構的output_open_drain) 。
通過編程GPIO PIN的狀態來打開和關閉LED。將GPIO引腳設置為低水平可以打開或關閉LED。如果LED在GPIO引腳水平較低時為ON,則稱為活動低。如果LED在銷級時處於較高時,則稱為高高。 LED是否處於活動狀態還是高高,取決於LED的物理連接方式。兩種類型都在實踐中使用。
EasyLed (
const uint8_t pin, // GPIO pin to which the LED is connected.
const ActiveLevel activeLevel, // The logic level when the LED is on.
const State initialState = State::Off, // Optional, default is off.
const uint8_t pinmode = OUTPUT // Optional, shall normally not be changed. enum class State {Off, On};
enum class ActiveLevel {Low = LOW, High = HIGH}; void on () // Switch LED on
void off() // Switch LED off
void toggle() // Toggle LED state.
void reset() // Reset LED state to initialState.
void flash( // Flash LED (all parameters are optional)
const uint8_t count = 2 , // Number of flashes
const uint16_t onTimeMs = 160 , // on-time duration in milliseconds
const uint16_t offTimeMs = 160 , // off-time duration in milliseconds
const uint16_t leadOffTimeMs = 200 , // off-time duration before first flash
const uint16_t trailOffTimeMs = 300 // off-time duration after last flash
// lead and trail time are only used when LED is on
)
bool isOn() // Returns true if LED is on, false otherwise
bool isOff() // Returns true if LED is off, false otherwise
EasyLed::State getState() // Returns the current state (On or Off)
void setState(EasyLed::State state) // Sets the current state
uint8_t pin() // Returns GPIO pin number as specified in constructor
EasyLed::ActiveLevel activeLevel() // Returns active-level as specified in constructor
EasyLed::State initialState() // Returns initialState as specified in constructorled-basics.ino演示基本用途led-advanced.ino展示了更高級的用途led-state.ino演示如何保存和恢復狀態led-activelevel-tester.ino幫助確定LED是主動低還是高高# include " EasyLed.h "
EasyLed led (LED_BUILTIN, EasyLed::ActiveLevel::Low);
void setup ()
{
...
}
void loop ()
{
readSensors ();
led. on ();
transmitSensorData ();
led. off ();
...
}