雖然技術更新迭代很快,但有很多基本的技術,仍然在實際項目中會用到,今天就拿LED為例來說說吧。
LED有哪些作用別小看LED,它在實際生活中應用很廣泛的。
首先就是以LED為光源的項目,比如呼吸燈、廣告燈、LED顯示屏等,這類控制LED亮滅(閃爍),或者亮度漸變。
再次就是LED背光燈,像液晶背光燈、按鍵背光燈等,這種也是需要控制LED變化的。我之前做過有按鍵的項目,按鍵背光燈需要漸變、配合音效控制LED不同頻率閃爍,目的就是為了達到更好的體驗效果。
再再次,LED作為指示燈,電源指示燈、狀態(tài)指示燈,這種就和接近初學者的學習時的LED燈,但這種卻在項目中很常見。拿狀態(tài)指示燈來說,一個項目的LED狀態(tài)指示燈可以直觀明了的指示設備的運行狀態(tài),比如:運行、故障、待機、死機等常見狀態(tài)。通過RGB,或者紅黃綠不同顏色LED組合,可以實現(xiàn)更多狀態(tài)的指示。
下面針對LED狀態(tài)燈,說幾點細節(jié)的內容。
LED狀態(tài)燈實現(xiàn)這里結合代碼為大家分享一些項目中常見的LED狀態(tài)燈的實現(xiàn)方法。
1.單色LED運行狀態(tài)指示燈
通過閃爍(一亮一滅)指示設備運行的狀態(tài)的指示燈,一個關鍵作用:設備有沒有死機。
很多產品中都會用到,你買一個開發(fā)板,提供的綜合例程也基本都有。
裸機情況下(一般狀態(tài)機),在某一個狀態(tài)實現(xiàn)LED閃爍:
int main(void)
{
??//系統(tǒng)初始化
while(1)
{
????//do?something
switch(State)
{
case 狀態(tài)1:
//do something
break;
case 狀態(tài)2:
//do something
??????break;
·
·
??????·
case 狀態(tài)燈:
ED_TOGGLE(); //LED閃爍
break;
}
}
}
RTOS情況下,新建一個狀態(tài)燈線程,在線程里面直接控制即可:
void StatusLight_Task(void *pvParameters)
{
??static?TickType_t?xLastWakeTime;
//初始化
xLastWakeTime = xTaskGetTickCount();
for(;;)
{
//do something
LED_TOGGLE(); //LED閃爍
vTaskDelayUntil(