18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣制作可以控制兩個單獨LED狀態(tài)的按鈕

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-12 11:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1:理論

首先介紹一些理論。 使用按鈕打開燈很簡單,如果按鈕顯示 HIGH (按下時),那么我們可以通過寫連接到的輸出引腳來打開LED 》 HIGH 。按鈕讀取 LOW 后,我們可以再次將輸出引腳設(shè)置為 LOW 以關(guān)閉LED。這就是我們所說的瞬時的。

對于此設(shè)置,我們希望打開或關(guān)閉LED。對于上面的簡單示例,這本身就是一個問題,因為Arduino中的循環(huán)功能每秒重復(fù)數(shù)百次。即使最快的按鍵也可以多次打開和關(guān)閉。第一個問題我們將使用一個或兩個簡單的布爾值來克服,這將在接下來的幾頁中進行解釋。

第二個問題是長按功能。我們?nèi)绾斡|發(fā)此功能而不先觸發(fā)短按功能?答案很簡單。按下按鈕時觸發(fā)長按功能,釋放按鈕后觸發(fā)短按功能。通過在長按功能激活之前在屏幕上釋放一個對象,可以再次在智能手機上觀察到這一點。

在下一步中,我們將創(chuàng)建硬件設(shè)置,如果需要,請?zhí)^此設(shè)置您已經(jīng)處于這個階段。..

步驟2:硬件

怎樣制作可以控制兩個單獨LED狀態(tài)的按鈕

硬件非常簡單,所以我不會給您帶來太多負(fù)擔(dān)。

首先是兩個LED。我們將每個陽極連接到Arduino的引腳12和13,然后將陰極接地。

按鈕連接到5V輸出和Arduino的引腳3,然后用10kOhm電阻接地。

第3步:詳細(xì)軟件第1部分

現(xiàn)在詳細(xì)說明代碼的每個步驟。如果您想直接閱讀完整的代碼,則將在步驟5中找到

。首先讓我們看一下該設(shè)置所需的變量,從簡單的引腳參考開始。

p》 int LED1 = 12;

int LED2 = 13;

int button = 3;

接下來,我們需要一些布爾值。這些將用于打開或關(guān)閉LED的狀態(tài)

boolean LED1State = false;

boolean LED2State = false;

現(xiàn)在另外兩個布爾值。第一個將根據(jù)按鈕的狀態(tài)進行更改。這將使代碼可以檢測到按下或釋放按鈕后的第一個循環(huán)。第二個功能有兩個功能,它將允許代碼停止長按多次激活,并在長按后釋放按鈕時停止激活短按功能。

boolean buttonActive = false;

boolean longPressActive = false;

最后兩個變量。第一個變量用于記錄第一次按下按鈕的時間。第二個變量是您希望按住按鈕的時間長度(以毫秒為單位),以激活長按功能??梢愿臑槟x擇的圖形。

long buttonTimer = 0;

long longPressTime = 250;

現(xiàn)在進行設(shè)置,這又非常簡單,我們只需設(shè)置引腳模式即可。

void setup() {

pinMode(LED1, OUTPUT);

pinMode(LED2, OUTPUT);

pinMode(button, INPUT);

}

第4步:詳細(xì)軟件部分2

現(xiàn)在進入循環(huán)。我將對此進行細(xì)分一點一點地解釋發(fā)生了什么。程序要做的第一件事是讀取按鈕的狀態(tài)。這將為我們提供下面的代碼,并允許我們?yōu)槲窗聪潞桶聪聽顟B(tài)創(chuàng)建函數(shù),請記住,短按功能在釋放按鈕時發(fā)生。

if (digitalRead(button) == HIGH) {

//Button pressed

} else {

//Button not pressed

}

在按下按鈕的部分中,我們要做的第一件事是測試buttonActive變量,在設(shè)置時將其設(shè)置為false 。如果當(dāng)前為假,則表示程序正在檢測首次按下的按鈕。這是因為在讀取false之后,我們立即將其設(shè)置為true,只有釋放按鈕才能將其設(shè)置為false。我們還記錄了按鈕第一次被按下的時間。

if (buttonActive == false) {

buttonActive = true;

buttonTimer = millis();

}

按鈕被按下部分的下一步是測試我們將按鈕按下了多長時間。 。為此,我們測試當(dāng)前時間,減去第一次按下的時間(以毫秒為單位),然后將其與希望激活長按之前的時間進行比較。

我們還檢查longPressActive布爾值是否為false,因為一旦激活長按功能,我們便會將此布爾值設(shè)置為true以停止重復(fù)激活。一旦將按鈕按住所需的時間,我們將翻轉(zhuǎn)LED1State布爾值的狀態(tài),布爾值將相應(yīng)地翻轉(zhuǎn)LED相應(yīng)地連接到 HIGH 或 LOW 的引腳。

if ((millis() - buttonTimer 》 longPressTime) && (longPressActive == false)) {

longPressActive = true;

LED1State = !LED1State;

digitalWrite(LED1, LED1State);

}

移至未按下代碼部分的按鈕。我們將檢查的第一件事是buttonActive布爾值是否為true。如果將其設(shè)置為true,則代碼是自釋放按鈕以來的第一次循環(huán)。然后它將布爾值設(shè)置回false,以允許上面的代碼檢測到再次按下按鈕。

if (buttonActive == true) {

buttonActive = false;

}

在上面的if語句中,在我們檢測到第一個循環(huán)時釋放按鈕后,我們接下來將檢查長按功能是否已激活,這將放棄兩個可能的步驟。如果長按被激活,我們只需將longPressActive設(shè)置回false即可允許程序再次長按。如果未激活,我們將像第一個那樣翻轉(zhuǎn)第二個LED的狀態(tài)。

if (longPressActive == true) {

longPressActive = false;

} else {

LED2State = !LED2State;

digitalWrite(LED2, LED2State);

}

步驟5:完整代碼

這是準(zhǔn)備上傳到Arduino的完整代碼。

int LED1 = 12;

int LED2 = 13;

int button = 3;

boolean LED1State = false;

boolean LED2State = false;

long buttonTimer = 0;

long longPressTime = 250;

boolean buttonActive = false;

boolean longPressActive = false;

void setup() {

pinMode(LED1, OUTPUT);

pinMode(LED2, OUTPUT);

pinMode(button, INPUT);

}

void loop() {

if (digitalRead(button) == HIGH) {

if (buttonActive == false) {

buttonActive = true;

buttonTimer = millis();

}

if ((millis() - buttonTimer 》 longPressTime) && (longPressActive == false)) {

longPressActive = true;

LED1State = !LED1State;

digitalWrite(LED1, LED1State);

}

} else {

if (buttonActive == true) {

if (longPressActive == true) {

longPressActive = false;

} else {

LED2State = !LED2State;

digitalWrite(LED2, LED2State);

}

buttonActive = false;

}

}

}

步驟6:獎金-兩個按鈕6個功能

如果我們有兩個按鈕怎么辦?那么我們就有6種功能,如下所示。

短按按鈕1

短按按鈕2

短按按鈕1和2

長按按鈕1

長按按鈕2

長按按鈕1和2

該程序的工作方式與第一個代碼相同,但有一些顯著變化。

首先,LED的數(shù)量更多,這意味著變量更多,當(dāng)然還有額外的按鈕。但是最大的改變是激活長按或短按的時間。一旦達到這兩個點中的任何一個,而不是打開或關(guān)閉LED,我們就可以針對每種功能采取三種可能的措施。結(jié)果六個可能的LED之一點亮或熄滅。為了確定要采取的操作,我們檢查每個按鈕的狀態(tài)以及這些要點的狀態(tài),并做出相應(yīng)的響應(yīng)。

這是代碼

int LED1 = 8;

int LED2 = 9;

int LED3 = 10;

int LED4 = 11;

int LED5 = 12;

int LED6 = 13;

int button1 = 3;

int button2 = 4;

long buttonTimer = 0;

long buttonTime = 250;

boolean buttonActive = false;

boolean longPressActive = false;

boolean button1Active = false;

boolean button2Active = false;

boolean LED1Active = false;

boolean LED2Active = false;

boolean LED3Active = false;

boolean LED4Active = false;

boolean LED5Active = false;

boolean LED6Active = false;

void setup() {

pinMode(LED1, OUTPUT);

pinMode(LED2, OUTPUT);

pinMode(LED3, OUTPUT);

pinMode(LED4, OUTPUT);

pinMode(LED5, OUTPUT);

pinMode(LED6, OUTPUT);

pinMode(button1, INPUT);

pinMode(button2, INPUT);

}

void loop() {

if (digitalRead(button1) == HIGH) {

if (buttonActive == false) {

buttonActive = true;

buttonTimer = millis();

}

button1Active = true;

}

if (digitalRead(button2) == HIGH) {

if (buttonActive == false) {

buttonActive = true;

buttonTimer = millis();

}

button2Active = true;

}

if ((buttonActive == true) && (millis() - buttonTimer 》 buttonTime) && (longPressActive == false)) {

longPressActive = true;

if ((button1Active == true) && (button2Active == true)) {

LED4Active = !LED4Active;

digitalWrite(LED4, LED4Active);

} else if((button1Active == true) && (button2Active == false)) {

LED5Active = !LED5Active;

digitalWrite(LED5, LED5Active);

} else {

LED6Active = !LED6Active;

digitalWrite(LED6, LED6Active);

}

}

if ((buttonActive == true) && (digitalRead(button1) == LOW) && (digitalRead(button2) == LOW)) {

if (longPressActive == true) {

longPressActive = false;

} else {

if ((button1Active == true) && (button2Active == true)) {

LED1Active = !LED1Active;

digitalWrite(LED1, LED1Active);

} else if ((button1Active == true) && (button2Active == false)) {

LED2Active = !LED2Active;

digitalWrite(LED2, LED2Active);

} else {

LED3Active = !LED3Active;

digitalWrite(LED3, LED3Active);

}

}

buttonActive = false;

button1Active = false;

button2Active = false;

}

}

從這里我們甚至可以為可能的14個LED添加第三個按鈕,或為30個LED添加四個按鈕。也許還有一段時間:)
責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關(guān)注

    關(guān)注

    243

    文章

    24338

    瀏覽量

    684958
  • 按鈕
    +關(guān)注

    關(guān)注

    0

    文章

    134

    瀏覽量

    13365
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    硬件SPI兩個CS操作兩個norflash,怎么互斥操作兩個norflash?

    硬件SPI兩個CS操作兩個norflash,怎么互斥操作兩個norflash,有一norflash被模擬成U盤,會在中斷中操作spi。
    發(fā)表于 09-26 06:18

    有可能在 FX3 GPIF2 中創(chuàng)建兩個獨立的狀態(tài)機嗎?

    我想,如果我想通過 FX3 GPIF2 創(chuàng)建兩個獨立的傳輸流接口,我需要在 GPIF2 設(shè)計器中創(chuàng)建兩個獨立的狀態(tài)機,我是否有可能在 GPIF2 設(shè)計器中創(chuàng)建兩個獨立的
    發(fā)表于 05-20 06:14

    DA芯片電源和MCU電源是兩個不同電源,MCU斷電重啟后DA無輸出,為什么?

    我司使用AD5724AREZ產(chǎn)品做一款模擬量輸出的模塊,AD5724AREZ的電源是IO電源單獨供的隔離電,MCU是另一電源,如果兩個電源同時斷開重啟AD5724AREZ的所有通道就正常輸出,如果
    發(fā)表于 04-16 07:04

    TPS3424 具有可編程延遲的毫微功耗按鈕控制器數(shù)據(jù)手冊

    TPS3423 和 TPS3424 是按鈕控制器,可提供廣泛的短按和長按獨立檢測功能。這些器件每個按鈕最多提供兩個輸出(RESET 和 INT),可用于各種用例,包括啟用穩(wěn)壓器或斷路器
    的頭像 發(fā)表于 04-09 11:20 ?572次閱讀
    TPS3424 具有可編程延遲的毫微功耗<b class='flag-5'>按鈕</b><b class='flag-5'>控制</b>器數(shù)據(jù)手冊

    TPS3423 毫微功耗雙按鈕控制器,具有短按和長按差異化技術(shù)手冊

    TPS3423 和 TPS3424 是按鈕控制器,可提供廣泛的短按和長按獨立檢測功能。這些器件每個按鈕提供多達兩個輸出(RESET 和 INT),可用于各種用例,包括啟用穩(wěn)壓器或斷路器
    的頭像 發(fā)表于 04-09 10:49 ?565次閱讀
    TPS3423 毫微功耗雙<b class='flag-5'>按鈕</b><b class='flag-5'>控制</b>器,具有短按和長按差異化技術(shù)手冊

    是否可以兩個PTN3222GMJ設(shè)備背靠背連接以制作USB2中繼器?

    是否可以兩個 PTN3222GMJ 設(shè)備背靠背連接以制作 USB2 中繼器。 Connection 將如下所示: 如果這個背靠背中繼器是可能的,它是否涉及任何配置或編程?
    發(fā)表于 03-28 08:08

    請問DSP可以同時控制兩個不同的RGB屏嗎?

    如題,這種情況兩個LCD的時鐘信號和復(fù)位信號是不是都要分開?H和V信號可以共用?
    發(fā)表于 03-06 06:50

    DLP4500兩個投影儀外觸發(fā)接一相機,無法觸發(fā)是什么原因?qū)е碌模?/a>

    大佬們,請問我采用兩個投影儀的trig out1連接在一起接到相機的觸發(fā)端,投影儀正常投影,但是無法輸出觸發(fā)。若兩個投影儀拆開單獨觸發(fā)就可以,請問是什么原因造成的呢,如何解決呢,跪
    發(fā)表于 02-21 07:05

    請問DLPA100可以單獨驅(qū)動LED光源嗎?

    請問DLPA100可以單獨驅(qū)動LED光源么?不搭配專用的DLPC用。
    發(fā)表于 02-18 07:37

    可以驅(qū)動兩個直流有刷電機、一雙極步進電機的雙H橋電機驅(qū)動芯片-SS8833E

    電機驅(qū)動芯片 - SS8833E是一種雙橋電機驅(qū)動器,具有兩個H橋驅(qū)動器,可以驅(qū)動兩個直流有刷電機、一雙極步進電機、電磁閥或其他電感負(fù)載。
    的頭像 發(fā)表于 02-12 09:43 ?810次閱讀
    <b class='flag-5'>可以</b>驅(qū)動<b class='flag-5'>兩個</b>直流有刷電機、一<b class='flag-5'>個</b>雙極步進電機的雙H橋電機驅(qū)動芯片-SS8833E

    兩個不同頻率晶振靠的近會怎樣

    晶振的振蕩本質(zhì)上是一種機械振動(在壓電晶體層面)。當(dāng)兩個晶振靠得很近時,它們的機械振動可能會相互影響。一晶振的振動可能會通過電路板或者外殼等介質(zhì)傳遞給另一晶振,從而改變另一晶振的
    的頭像 發(fā)表于 01-20 13:55 ?1911次閱讀
    <b class='flag-5'>兩個</b>不同頻率晶振靠的近會<b class='flag-5'>怎樣</b>

    ADC124S021同時使用兩個通道,兩個通道的轉(zhuǎn)換數(shù)據(jù)發(fā)生串?dāng)_怎么解決?

    用DSP的SPI接口接ADC124S021,如果只是進行單通道的信號采集,則轉(zhuǎn)換后的數(shù)值穩(wěn)定,但是同時使用兩個通道時則兩個通道的數(shù)據(jù)發(fā)生串?dāng)_現(xiàn)象。如,我單獨使用2通道,則轉(zhuǎn)換后數(shù)值穩(wěn)定,但是如果
    發(fā)表于 12-30 07:41

    ads1013有兩個模擬輸入,可以接不同的兩個模擬輸入嗎?

    ads1013有兩個模擬輸入,可以接不同的兩個模擬輸入嗎,驅(qū)動程序中怎么分別讀兩個模擬輸入的轉(zhuǎn)換結(jié)果?
    發(fā)表于 12-02 08:02

    德州儀器推出兩個全新系列實時微控制

    德州儀器 (TI) 近日推出了兩個全新系列的實時微控制器,這些產(chǎn)品的技術(shù)進步可幫助工程師在汽車和工業(yè)應(yīng)用中實現(xiàn)更智能、更安全的處理。
    的頭像 發(fā)表于 11-28 13:45 ?1144次閱讀

    利用PCM5142的minidsp制作均衡器,遇到的兩個疑問求解答

    你好,我的設(shè)計主要是利用PCM5142的minidsp 制作均衡器,現(xiàn)在遇到兩個問題: 問題一:利用Parametric EQ這個原件無論如何配置采樣率都無法出聲 如圖配置 聲源在48k或
    發(fā)表于 11-01 08:27