




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
5.3Mini臺(tái)燈--數(shù)字大按鈕模塊硬件連接
數(shù)字大按鈕->數(shù)字2
數(shù)字食人魚紅色LED發(fā)光模塊->數(shù)字13
2025/2/7Arduino零基礎(chǔ)C語言編程15.3Mini臺(tái)燈--數(shù)字大按鈕模塊輸入代碼樣例代碼3:
//小臺(tái)燈
intbuttonPin=2; //按鈕連接到數(shù)字2
intledPin=13; //LED連接到數(shù)字13
intledState=HIGH; //ledState記錄LED狀態(tài)
intbuttonState; //buttonState記錄按鍵狀態(tài)
intlastButtonState=LOW; //lastbuttonState記錄按鍵前一個(gè)狀態(tài)
longlastDebounceTime=0;
longdebounceDelay=50; //去除抖動(dòng)時(shí)間
voidsetup(){pinMode(buttonPin,INPUT);pinMode(ledPin,OUTPUT);
digitalWrite(ledPin,ledState);
}
2025/2/7Arduino零基礎(chǔ)C語言編程2voidloop(){//reading用來存儲(chǔ)buttonPin的數(shù)據(jù)intreading=digitalRead(buttonPin);//一旦檢測(cè)到數(shù)據(jù)發(fā)生變化,記錄當(dāng)前時(shí)間
if(reading!=lastButtonState){lastDebounceTime=millis();
}等待50ms,再進(jìn)行一次判斷,是否和當(dāng)前button狀態(tài)相同如果和當(dāng)前狀態(tài)不相同,改變button狀態(tài)同時(shí),如果button狀態(tài)為高(也就是被按下),那么就改變led的狀態(tài)if((millis()-lastDebounceTime)>debounceDelay){if(reading!=buttonState){buttonState=reading;if(buttonState==HIGH){ledState=!ledState;}}}digitalWrite(ledPin,ledState);//改變button前一個(gè)狀態(tài)值lastButtonState=reading;}下載完代碼,按下按鈕,燈點(diǎn)亮。再按下按鈕,燈熄滅。是不是很像個(gè)小臺(tái)燈?5.3Mini臺(tái)燈--數(shù)字大按鈕模塊硬件分析(數(shù)字輸入—數(shù)字輸出)很明顯,大按鈕是輸入設(shè)備,LED是輸出設(shè)備。和前面感應(yīng)燈類似,也是一個(gè)數(shù)字輸入控制一個(gè)數(shù)字輸出。只是形式與代碼有所不同。
2025/2/7Arduino零基礎(chǔ)C語言編程35.3Mini臺(tái)燈--數(shù)字大按鈕模塊代碼回顧由硬件分析可以看出,按鍵是輸入設(shè)備,LED是輸出設(shè)備。pinMode(buttonPin,INPUT);pinMode(ledPin,OUTPUT);
通過digitalWrite()讀取按鍵的狀態(tài):intreading=digitalRead(buttonPin);
通常的按鍵所用開關(guān)為機(jī)械彈性開關(guān),當(dāng)機(jī)械觸點(diǎn)斷開、閉合時(shí),由于機(jī)械觸點(diǎn)的彈性作用,一個(gè)按鍵開關(guān)在閉合時(shí)不會(huì)馬上穩(wěn)定地接通,在斷開時(shí)也不會(huì)一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動(dòng),為了不產(chǎn)生這種現(xiàn)象而作的措施就是按鍵消抖,
抖動(dòng)時(shí)間的長(zhǎng)短由按鍵的機(jī)械特性決定,一般為5ms~10ms。這是一個(gè)很重要的時(shí)間參數(shù),在很多場(chǎng)合都要用到,如下圖所示:
2025/2/7Arduino零基礎(chǔ)C語言編程45.3Mini臺(tái)燈--數(shù)字大按鈕模塊代碼回顧
消抖是為了避免在按鍵按下或是抬起時(shí)電平劇烈抖動(dòng)帶來的影響。按鍵的消抖,可用硬件或軟件兩種方法。一般來說,會(huì)使用軟件方法去抖,即檢測(cè)出鍵閉合后執(zhí)行一個(gè)延時(shí)程序,5ms~10ms的延時(shí),讓前沿抖動(dòng)消失后再一次檢測(cè)鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)為真正有鍵按下。當(dāng)檢測(cè)到按鍵釋放后,也要給5ms~10ms的延時(shí),待后沿抖動(dòng)消失后才能轉(zhuǎn)入該鍵的處理程序。軟件消抖的方法是不斷檢測(cè)按鍵值,直到按鍵值穩(wěn)定。實(shí)現(xiàn)方法:假設(shè)未按鍵時(shí)輸入1,按鍵后輸入為0,抖動(dòng)時(shí)不定??梢宰鲆韵聶z測(cè):檢測(cè)到按鍵輸入為0之后,延時(shí)5ms~10ms,再次檢測(cè),如果按鍵還為0,那么就認(rèn)為有按鍵輸入。延時(shí)的5ms~10ms恰好避開了抖動(dòng)期。一旦檢測(cè)到讀取的數(shù)據(jù)發(fā)生變化,通過millis()函數(shù)記下時(shí)間:if(reading!=lastButtonState){lastDebounceTime=millis();}
2025/2/7Arduino零基礎(chǔ)C語言編程55.3Mini臺(tái)燈--數(shù)字大按鈕模塊代碼回顧millis()是一個(gè)函數(shù),該函數(shù)是Arduino語言自有的函數(shù),它返回值是一個(gè)時(shí)間,Arduino開始運(yùn)行到執(zhí)行到當(dāng)前的時(shí)間,也稱之為機(jī)器時(shí)間,就像一個(gè)隱形時(shí)鐘,從控制器開始運(yùn)行的那一刻起開始計(jì)時(shí),以毫秒為單位。
再等待50ms,再進(jìn)行一次判斷,是否和當(dāng)前button狀態(tài)相同。如果和當(dāng)前狀態(tài)不相同,改變button狀態(tài)。同時(shí),如果button狀態(tài)為高(也就是被按下),那么就改變LED的狀態(tài)。
if((millis()-lastDebounceTime)>debounceDelay){if(reading!=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 3606-2025家用沼氣灶
- 品牌合作開發(fā)與運(yùn)營(yíng)合同范本
- 度設(shè)備維修合同安全協(xié)議
- 幼兒園保安勞動(dòng)合同合同
- 實(shí)習(xí)生勞動(dòng)合同范文參考
- 買賣合同(范本)
- 奶牛租賃合同模板
- 13 人物描寫一組 《兩莖燈草》教學(xué)設(shè)計(jì)-2023-2024學(xué)年語文五年級(jí)下冊(cè)統(tǒng)編版
- 新能源汽車核心配件采購合同
- 客戶服務(wù)人員合同協(xié)議書
- 2025年業(yè)務(wù)員工作總結(jié)及工作計(jì)劃模版(3篇)
- 2024年連云港市贛榆區(qū)區(qū)屬國企對(duì)外招聘筆試真題
- 海南省海口市2024-2025學(xué)年八年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 2025年注射用賴氮匹林項(xiàng)目可行性研究報(bào)告
- 2025江西吉安市新廬陵投資發(fā)展限公司招聘11人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年山東出版集團(tuán)招聘筆試參考題庫含答案解析
- 水泥基自流平地面技術(shù)交底
- T-CSAC 004-2024 軟件供應(yīng)鏈安全要求測(cè)評(píng)方法
- 2024-2025學(xué)年人教版七年級(jí)數(shù)學(xué)上冊(cè)期末模擬測(cè)試卷(含簡(jiǎn)單答案)
- 【MOOC】理解馬克思-南京大學(xué) 中國大學(xué)慕課MOOC答案
- 《商務(wù)溝通-策略、方法與案例》課件 第十章 基本商務(wù)溝通
評(píng)論
0/150
提交評(píng)論