chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

【產(chǎn)品應(yīng)用】基于EsDA MPC-ZC1快速實(shí)現(xiàn) — 按鍵高級(jí)應(yīng)用

ZLG致遠(yuǎn)電子 ? 2022-11-02 10:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

按鍵是嵌入式產(chǎn)品常用的人機(jī)交互方式。為了更好的結(jié)構(gòu)設(shè)計(jì)、更低的制造成本,對(duì)按鍵功能會(huì)有更高的要求,常見(jiàn)有單擊、雙擊和長(zhǎng)按等需求。本文將基于 EsDA 開(kāi)發(fā)套件介紹如何快速完成按鍵業(yè)務(wù)的開(kāi)發(fā)。

5641e9ac-5790-11ed-b116-dac502259ad0.jpg ?簡(jiǎn)介

按鍵主要是指輕觸式按鍵,一種常用的電子開(kāi)關(guān),通過(guò)施加壓力,使內(nèi)部金屬?gòu)椘佑|,形成接通;撤銷壓力時(shí)接觸點(diǎn)斷開(kāi)連接,從而產(chǎn)生關(guān)斷效果,其物理特性正好對(duì)應(yīng)到軟件中的二進(jìn)制狀態(tài)。EsDA 平臺(tái)在使用按鍵功能時(shí),只需要通過(guò)拖拽節(jié)點(diǎn)、連線繪制流圖,即可實(shí)現(xiàn)按鍵信號(hào)捕獲與處理,大大地簡(jiǎn)化了開(kāi)發(fā)流程,縮短了項(xiàng)目開(kāi)發(fā)周期,為客戶產(chǎn)品搶占市場(chǎng)提供先機(jī)。項(xiàng)目開(kāi)發(fā)過(guò)程,除去單一的識(shí)別按下、松開(kāi)等單擊事件外,還經(jīng)常需要支持雙擊、三擊和長(zhǎng)按等復(fù)雜事件。本文主要論述如何通過(guò) EsDA 開(kāi)發(fā)平臺(tái)和 MPC-ZC1 工控單板快速實(shí)現(xiàn)按鍵的多種應(yīng)用場(chǎng)景。


5641e9ac-5790-11ed-b116-dac502259ad0.jpg ?按鍵相關(guān)節(jié)點(diǎn)介紹

按鍵相關(guān)的節(jié)點(diǎn)有button和button_expand,用戶可在AWFlow Designer中查看相關(guān)介紹。button節(jié)點(diǎn)用于綁定IO,配置按鍵高、低電平觸發(fā)模式,實(shí)現(xiàn)基礎(chǔ)的按鍵功能;button_expand節(jié)點(diǎn)用于統(tǒng)計(jì)處理button節(jié)點(diǎn)的行為,并輸出給下一個(gè)消費(fèi)者,是對(duì)button按鍵節(jié)點(diǎn)功能進(jìn)行的擴(kuò)展。

1.button節(jié)點(diǎn)

button節(jié)點(diǎn)與GPIO綁定之后,即可實(shí)時(shí)讀取到按鍵的狀態(tài),當(dāng)用戶按下/松開(kāi)按鍵時(shí),該節(jié)點(diǎn)即可輸出相應(yīng)的物理狀態(tài)(當(dāng)用戶按下按鍵時(shí),節(jié)點(diǎn)輸出"on",當(dāng)用戶松開(kāi)按鍵時(shí),節(jié)點(diǎn)輸出"off")。其主要屬性如下:564e730c-5790-11ed-b116-dac502259ad0.png

顯示名稱:在流圖顯示上所展示的名稱,用戶可自行修改;

對(duì)應(yīng)的GPIO編號(hào):按鍵信號(hào)引腳所接的引腳編號(hào);

觸發(fā)條件:可選擇是下降沿觸發(fā)(fall),還是上升沿觸發(fā)(up),具體模式由用戶的硬件模塊電路的實(shí)現(xiàn)方式?jīng)Q定;

輸出變量:在按鍵按下時(shí)輸出on,松開(kāi)時(shí)輸出off,在初始化完成以及按鈕狀態(tài)發(fā)生改變的時(shí)候會(huì)輸出當(dāng)前狀態(tài)。

2.button_expand節(jié)點(diǎn)

2.1節(jié)點(diǎn)功能簡(jiǎn)介button_expand節(jié)點(diǎn)為按鍵節(jié)點(diǎn)button的擴(kuò)展信號(hào)處理節(jié)點(diǎn),主要配合button節(jié)點(diǎn)進(jìn)行使用,其主要功能為監(jiān)控button節(jié)點(diǎn)的輸出信號(hào)情況,從而判斷按鍵觸發(fā)方式如單擊、雙擊、連擊、長(zhǎng)按等等。該節(jié)點(diǎn)主要包含兩大類主模式,分別為觸發(fā)條件模式與行為統(tǒng)計(jì)模式。觸發(fā)條件模式,當(dāng)button的信息情況符合預(yù)先設(shè)定時(shí),節(jié)點(diǎn)將直接觸發(fā),同時(shí)不會(huì)設(shè)置payload屬性。行為統(tǒng)計(jì)模式,該模式下將對(duì)button的信息情況進(jìn)行次數(shù)統(tǒng)計(jì),同時(shí)會(huì)設(shè)置payload屬性將結(jié)果進(jìn)行輸出。2.2八種操作模式

  • cycle mode(trigger):用戶在周期時(shí)間內(nèi)按下指定次數(shù)的按鍵時(shí),該節(jié)點(diǎn)將觸發(fā)輸出;
  • continuous mode(trigger):用戶連續(xù)按下按鍵,且每次按鍵的時(shí)間小于設(shè)定時(shí)間間隔,將進(jìn)行累加,直至超出設(shè)定間隔時(shí),統(tǒng)計(jì)按鍵次數(shù),若符合設(shè)定次數(shù),該節(jié)點(diǎn)將觸發(fā)輸出;
  • press-release mode(trigger):用戶按下按鍵后持續(xù)一段時(shí)間再松開(kāi),統(tǒng)計(jì)按下-松開(kāi)的時(shí)間,若持續(xù)時(shí)間在設(shè)定的時(shí)間段內(nèi),該節(jié)點(diǎn)將觸發(fā)輸出;
  • keep press mode(trigger):用戶按下按鍵持續(xù)不放,若持續(xù)時(shí)間超過(guò)設(shè)定時(shí)間,該節(jié)點(diǎn)將觸發(fā)輸出;
  • cycle mode(statistical):統(tǒng)計(jì)用戶在周期時(shí)間內(nèi)按下的按鍵次數(shù),然后通過(guò)msg.payload(int)傳給后續(xù)的節(jié)點(diǎn);
  • continuous mode(statistical):用戶連續(xù)按下按鍵,且每次按鍵的時(shí)間小于設(shè)定時(shí)間間隔,將進(jìn)行累加,直至超出設(shè)定間隔時(shí),統(tǒng)計(jì)按鍵次數(shù)后通過(guò)msg.payload(int)傳給后續(xù)的節(jié)點(diǎn);
  • press-release mode(statistical):用戶按下按鍵后持續(xù)一段時(shí)間再松開(kāi),節(jié)點(diǎn)記錄按鍵持續(xù)的時(shí)間,然后通過(guò)msg.payload(int,單位ms)傳給后續(xù)的節(jié)點(diǎn);
  • keep press mode(statistical):用戶按下按鍵持續(xù)不放,在持續(xù)期內(nèi),每超用戶設(shè)定的周期時(shí)間將輸出一次按鍵按下至此刻的時(shí)間統(tǒng)計(jì)。

* 若論功能模式,則可分為兩大類,分別為trigger模式(四種)和statistical模式(四種)。同種操作碼類型下,trigger模式與statistical模式可以相互替換,但對(duì)流圖和數(shù)據(jù)的處理卻有一定的區(qū)別。具體區(qū)別在后續(xù)詳細(xì)講解。2.3輸入變量
由button節(jié)點(diǎn)所輸出的信號(hào)對(duì)象。2.4輸出變量
節(jié)點(diǎn)的主題,用戶可自行設(shè)置。

565e31b6-5790-11ed-b116-dac502259ad0.jpg 應(yīng)用案例

本應(yīng)用將通過(guò)4個(gè)應(yīng)用案例,分別講解cycle mode(trigger)、continuous mode(trigger)、press-release mode(trigger)和keep press mode(trigger)操作類型的應(yīng)用。

硬件連接

  • 按鍵模塊引腳展示

56637d4c-5790-11ed-b116-dac502259ad0.jpg

* 該模塊為下降沿觸發(fā),故流圖中的button節(jié)點(diǎn),選擇下降沿觸發(fā)方式。

  • 按鍵模塊與ZC1板連接情況

5689af12-5790-11ed-b116-dac502259ad0.png1.cyclemode(trigger)模式實(shí)驗(yàn)

1.1實(shí)驗(yàn)簡(jiǎn)介

本實(shí)驗(yàn)使用 MPC-ZC1 板載的紅色LED、綠色LED 作為實(shí)驗(yàn)結(jié)果指示燈。本實(shí)驗(yàn)中,通過(guò)LED的不同顯示狀態(tài)來(lái)指示不同的按鍵事件,對(duì)應(yīng)關(guān)系如下表。

操作

事件

效果

單擊

開(kāi)啟紅燈

led燈中紅燈亮

雙擊

開(kāi)啟綠燈

led燈中 綠燈亮

三擊

關(guān)閉所有燈光

led燈熄滅

1.2流圖設(shè)計(jì)

57598a0c-5790-11ed-b116-dac502259ad0.png其中,單擊、雙擊、三擊名稱節(jié)點(diǎn),均為button_expand節(jié)點(diǎn),只是顯示名稱不同而已。同理,顯示名稱為開(kāi)啟紅燈、開(kāi)啟綠燈、關(guān)閉所有燈光節(jié)點(diǎn),均為fscript類型節(jié)點(diǎn)。顯示名稱為紅燈、綠燈節(jié)點(diǎn)均為led類型節(jié)點(diǎn)。1.3?button_expand節(jié)點(diǎn)

1.3.1 單擊名稱節(jié)點(diǎn)

577f5e44-5790-11ed-b116-dac502259ad0.png

cycle mode(trigger):用戶在周期時(shí)間內(nèi)按下指定次數(shù)的按鍵時(shí),該節(jié)點(diǎn)將觸發(fā)輸出;

周期時(shí)間為800ms:表示一次觸發(fā)實(shí)限為800ms,及800ms內(nèi)按下指定次數(shù)即可觸發(fā)該節(jié)點(diǎn);

冷卻時(shí)間為1200ms:表示該節(jié)點(diǎn)被觸發(fā)后,需要的冷卻時(shí)間1200ms,該時(shí)間內(nèi)再次按下將不會(huì)觸發(fā)節(jié)點(diǎn),且節(jié)點(diǎn)冷卻時(shí)間重新計(jì)算;

按鍵次數(shù)為1:表示在指定周期且非冷卻時(shí)間內(nèi)按下1次,即可觸發(fā)該節(jié)點(diǎn);

主題和顯示名稱:用戶可自行配置,主題為傳遞給下一個(gè)節(jié)點(diǎn)的msg.topic參數(shù),顯示名稱為在流圖上節(jié)點(diǎn)顯示的名字。

該節(jié)點(diǎn)主要實(shí)現(xiàn)功能為,在800ms周期內(nèi),按鍵被按下一次,節(jié)點(diǎn)觸發(fā),冷卻時(shí)間1200ms滿后可再次觸發(fā)。

1.3.2 雙擊節(jié)點(diǎn)

57b749da-5790-11ed-b116-dac502259ad0.png

* 該節(jié)點(diǎn)配置與單擊名稱節(jié)點(diǎn)同理,區(qū)別在于按鍵次數(shù)修改為2,即同一周期內(nèi)只按下兩次,即可觸發(fā),且主題配置為雙擊,周期時(shí)間配置為1200ms,冷卻時(shí)間配置為800ms。用戶可參照上一小節(jié)cycle mode(trigger)模式實(shí)驗(yàn)-單擊名稱節(jié)點(diǎn)配置講解。

1.3.3 三擊節(jié)點(diǎn)

57d417ae-5790-11ed-b116-dac502259ad0.png

* 該節(jié)點(diǎn)配置與單擊名稱節(jié)點(diǎn)同理,區(qū)別在于按鍵次數(shù)修改為3,即同一周期內(nèi)只按下三次,即可觸發(fā),且主題配置為三擊,周期時(shí)間配置為1600ms,冷卻時(shí)間配置為400ms。用戶可參照上一小節(jié)cycle mode(trigger)模式實(shí)驗(yàn)-單擊名稱節(jié)點(diǎn)配置講解。

1.4fscript節(jié)點(diǎn)

1.4.1 開(kāi)啟紅燈節(jié)點(diǎn)

if(msg.topic == "單擊"){

output.payload = 1

}

*該內(nèi)容,主要實(shí)現(xiàn)對(duì)button_expand節(jié)點(diǎn)的消息進(jìn)行判斷,如果收到主題信息單擊,則向下一個(gè)節(jié)點(diǎn)傳遞output對(duì)象中的payload屬性值為1。由于下一個(gè)節(jié)點(diǎn),連接了led節(jié)點(diǎn),即為開(kāi)燈。1.4.2開(kāi)啟綠燈節(jié)點(diǎn)

if(msg.topic=="雙擊"){
output.payload=1

}

*該內(nèi)容,主要實(shí)現(xiàn)對(duì)button_expand節(jié)點(diǎn)的消息進(jìn)行判斷,如果收到主題信息雙擊,則向下一個(gè)節(jié)點(diǎn)傳遞output對(duì)象中的payload屬性值為1。由于下一個(gè)節(jié)點(diǎn),連接了led節(jié)點(diǎn),即為開(kāi)燈。1.4.3關(guān)閉所有燈光節(jié)點(diǎn)

if(msg.topic=="三擊"){
output.payload=0

}

*該內(nèi)容,主要實(shí)現(xiàn)對(duì)button_expand節(jié)點(diǎn)的消息進(jìn)行判斷,如果收到主題信息三擊,則向下一個(gè)節(jié)點(diǎn)傳遞output對(duì)象中的payload屬性值為0。由于下一個(gè)節(jié)點(diǎn),連接了led節(jié)點(diǎn),即為關(guān)燈。1.5led節(jié)點(diǎn)580b215e-5790-11ed-b116-dac502259ad0.png

紅燈節(jié)點(diǎn)

58115aba-5790-11ed-b116-dac502259ad0.png

綠燈節(jié)點(diǎn)

1.6實(shí)驗(yàn)現(xiàn)象

依次對(duì)按鍵進(jìn)行單擊、雙擊和三擊操作。

581ff340-5790-11ed-b116-dac502259ad0.jpg

單擊

紅燈亮起

583402ea-5790-11ed-b116-dac502259ad0.jpg

雙擊

綠燈亮起

589bdf14-5790-11ed-b116-dac502259ad0.jpg

三擊

兩燈都熄滅

2. continuous mode(trigger)模式實(shí)驗(yàn)

2.1實(shí)驗(yàn)簡(jiǎn)介

本實(shí)驗(yàn)將與cycle mode(trigger)模式實(shí)驗(yàn)所實(shí)現(xiàn)的功能相同,不同點(diǎn)在于使用的button_expand節(jié)點(diǎn)的操作模式為continuous mode(trigger)。

2.2流圖設(shè)計(jì)

*同cycle mode(trigger)模式實(shí)驗(yàn)流圖。

2.3button_expand節(jié)點(diǎn)

2.3.1 單擊節(jié)點(diǎn)

58cce7ee-5790-11ed-b116-dac502259ad0.png

continuous mode(trigger)模式:用戶連續(xù)按下按鍵,且每次按鍵的時(shí)間小于設(shè)定時(shí)間間隔,將進(jìn)行累加,直至超出設(shè)定間隔時(shí),統(tǒng)計(jì)按鍵次數(shù),若符合設(shè)定次數(shù),該節(jié)點(diǎn)將觸發(fā)輸出;

動(dòng)作間隔時(shí)間為500ms:表示用戶前一次按下與后一次按下間隔時(shí)間,如果小于500ms,則進(jìn)行計(jì)數(shù)。如果大于500ms時(shí),則停止計(jì)數(shù);

按鍵次數(shù)為1:當(dāng)停止計(jì)數(shù)時(shí),計(jì)數(shù)次數(shù)為1,則觸發(fā)該節(jié)點(diǎn);

  • 主題為單擊:表示節(jié)點(diǎn)觸發(fā)時(shí),輸出給下一個(gè)節(jié)點(diǎn)的topic信息為"單擊"。

2.3.2 雙擊節(jié)點(diǎn)

58dae718-5790-11ed-b116-dac502259ad0.png

* 該節(jié)點(diǎn)配置與單擊名稱節(jié)點(diǎn)同理,區(qū)別在于按鍵次數(shù)修改為2,主題配置為雙擊。用戶可參照上一小節(jié)continuous mode(trigger)模式實(shí)驗(yàn)-單擊名稱節(jié)點(diǎn)配置講解。

2.3.3三擊節(jié)點(diǎn)

58f4848e-5790-11ed-b116-dac502259ad0.png

* 該節(jié)點(diǎn)配置與單擊名稱節(jié)點(diǎn)同理,區(qū)別在于按鍵次數(shù)修改為3,主題配置為三擊。用戶可參照上一小節(jié)continuous mode(trigger)模式實(shí)驗(yàn)-單擊名稱節(jié)點(diǎn)配置講解。

2.4其余節(jié)點(diǎn)配置* 同cycle mode(trigger)模式實(shí)驗(yàn)中其他節(jié)點(diǎn)配置。2.5實(shí)驗(yàn)現(xiàn)象

依次對(duì)按鍵進(jìn)行單擊、雙擊和三擊操作。

led燈顯示情況

同cycle mode(trigger)模式實(shí)驗(yàn)中l(wèi)ed燈顯示情況。3.press-releasemode(trigger)模式實(shí)驗(yàn)3.1實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)主要使用板子上所焊接好的led燈模塊,該模塊一共有兩種燈顏色,分別為紅燈與綠燈。本實(shí)驗(yàn)中,主要將紅燈、綠燈模擬成兩個(gè)獨(dú)立的設(shè)備,通過(guò)一個(gè)button按鍵、button_expand按鍵實(shí)現(xiàn)長(zhǎng)按2秒、長(zhǎng)按3秒、長(zhǎng)按1秒,從而控制紅燈、綠燈的開(kāi)關(guān)情況。3.2流圖設(shè)計(jì)59033c0e-5790-11ed-b116-dac502259ad0.png其中,顯示名稱為長(zhǎng)按2秒、長(zhǎng)按3秒、長(zhǎng)按1秒的節(jié)點(diǎn),均為button_expand類型節(jié)點(diǎn),只是顯示名稱不同而已。同理,顯示名稱為長(zhǎng)按開(kāi)啟紅燈、長(zhǎng)按開(kāi)啟綠燈、長(zhǎng)按關(guān)閉所有設(shè)備的節(jié)點(diǎn),均為fscript類型節(jié)點(diǎn)。顯示名稱為紅燈、綠燈均為led類型節(jié)點(diǎn)。3.3?button_expand節(jié)點(diǎn)3.3.1?長(zhǎng)按2s節(jié)點(diǎn)
5917caa2-5790-11ed-b116-dac502259ad0.png

操作模式為 press-release mode(trigger):用戶按下按鍵后持續(xù)一段時(shí)間再松開(kāi),節(jié)點(diǎn)記錄按鍵持續(xù)的時(shí)間,然后通過(guò)msg.payload(int,單位ms)傳給后續(xù)的節(jié)點(diǎn);

最短持續(xù)時(shí)間為1800ms:表示按下按鍵后,1800ms以前不松開(kāi);

最長(zhǎng)持續(xù)時(shí)間為2500ms:表示按下按鍵后,2500ms以前必松開(kāi)。

* 簡(jiǎn)而言之,從用戶剛按下按鍵開(kāi)始,如果按住的持續(xù)時(shí)間介于1800ms與2500ms之間,則該節(jié)點(diǎn)觸發(fā),輸出主題"長(zhǎng)按2s"。

3.3.2長(zhǎng)按4s節(jié)點(diǎn)

59259da8-5790-11ed-b116-dac502259ad0.png

* 該節(jié)點(diǎn)配置與長(zhǎng)按2s名稱節(jié)點(diǎn)同理,區(qū)別在于最短持續(xù)時(shí)間為3500ms,最長(zhǎng)持續(xù)時(shí)間為4500ms,主題配置為長(zhǎng)按4s。用戶可參照上一小節(jié)press-release mode(trigger)模式實(shí)驗(yàn)-長(zhǎng)按2s名稱節(jié)點(diǎn)配置講解。即從用戶剛按下按鍵開(kāi)始,如果按住的持續(xù)時(shí)間介于3500ms與4500ms之間,則該節(jié)點(diǎn)觸發(fā),輸出主題"長(zhǎng)按4s"。

3.3.3長(zhǎng)按1s節(jié)點(diǎn)

592eb118-5790-11ed-b116-dac502259ad0.png

* 該節(jié)點(diǎn)配置與長(zhǎng)按2s名稱節(jié)點(diǎn)同理,區(qū)別在于最短持續(xù)時(shí)間為500ms,最長(zhǎng)持續(xù)時(shí)間為1200ms,主題配置為長(zhǎng)按1s。用戶可參照上一小節(jié)press-release mode(trigger)模式實(shí)驗(yàn)-長(zhǎng)按2s名稱節(jié)點(diǎn)配置講解。即從用戶剛按下按鍵開(kāi)始,如果按住的持續(xù)時(shí)間介于500ms與1200ms之間,則該節(jié)點(diǎn)觸發(fā),輸出主題"長(zhǎng)按1s"。

3.4fscript節(jié)點(diǎn)

3.4.1 開(kāi)啟紅燈節(jié)點(diǎn)

if(msg.topic=="長(zhǎng)按2s"){
output.payload=1

}

*該內(nèi)容,主要實(shí)現(xiàn)對(duì)button_expand節(jié)點(diǎn)的消息進(jìn)行判斷,如果收到主題信息是長(zhǎng)按2s,則向下一個(gè)節(jié)點(diǎn)傳遞output對(duì)象中的payload屬性值為1。由于下一個(gè)節(jié)點(diǎn),連接了led節(jié)點(diǎn),即為開(kāi)燈。3.4.2開(kāi)啟綠燈名稱節(jié)點(diǎn)

if(msg.topic=="長(zhǎng)按4s"){
output.payload=1

}

*該內(nèi)容,主要實(shí)現(xiàn)對(duì)button_expand節(jié)點(diǎn)的消息進(jìn)行判斷,如果收到主題信息是長(zhǎng)按4s,則向下一個(gè)節(jié)點(diǎn)傳遞output對(duì)象中的payload屬性值為1。由于下一個(gè)節(jié)點(diǎn),連接了led節(jié)點(diǎn),即為開(kāi)燈。3.4.3關(guān)閉所有設(shè)備名稱節(jié)點(diǎn)

if(msg.topic=="長(zhǎng)按1s"){
output.payload=0

}

*該內(nèi)容,主要實(shí)現(xiàn)對(duì)button_expand節(jié)點(diǎn)的消息進(jìn)行判斷,如果收到主題信息是長(zhǎng)按1s,則向下一個(gè)節(jié)點(diǎn)傳遞output對(duì)象中的payload屬性值為0。由于下一個(gè)節(jié)點(diǎn),連接了led節(jié)點(diǎn),即為關(guān)燈。

3.5其余節(jié)點(diǎn)配置

* 同cycle mode(trigger)模式實(shí)驗(yàn)節(jié)點(diǎn)配置。3.6實(shí)驗(yàn)現(xiàn)象依次對(duì)按鍵進(jìn)行長(zhǎng)按2s、長(zhǎng)按4s和長(zhǎng)按1s操作。

led燈顯示情況;

長(zhǎng)按2s-紅燈亮起;

595b7f04-5790-11ed-b116-dac502259ad0.jpg

長(zhǎng)按4s-綠燈亮起;

5981f166-5790-11ed-b116-dac502259ad0.jpg

長(zhǎng)按1s-兩燈都熄滅

59a0ec4c-5790-11ed-b116-dac502259ad0.jpg

4.keep press mode(trigger)模式實(shí)驗(yàn)

4.1實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)主要使用板子上所焊接好的led燈模塊,該模塊一共有兩種燈顏色,分別為紅燈與綠燈。本實(shí)驗(yàn)中,主要將紅燈、綠燈模擬成兩個(gè)獨(dú)立的設(shè)備,通過(guò)一個(gè)button按鍵、button_expand按鍵實(shí)現(xiàn)長(zhǎng)按超過(guò)2秒、長(zhǎng)按超過(guò)3秒、長(zhǎng)按超過(guò)1秒,從而控制紅燈、綠燈的開(kāi)關(guān)情況。4.2流圖設(shè)計(jì)59c2f7ec-5790-11ed-b116-dac502259ad0.png

其中,顯示名稱為長(zhǎng)按超過(guò)2秒、長(zhǎng)按過(guò)時(shí)3秒、長(zhǎng)按超過(guò)1秒的節(jié)點(diǎn),均為button_expand類型節(jié)點(diǎn),只是顯示名稱不同而已。同理,顯示名稱為長(zhǎng)按開(kāi)啟紅燈、長(zhǎng)按開(kāi)啟綠燈、長(zhǎng)按關(guān)閉所有設(shè)備的節(jié)點(diǎn),均為fscript節(jié)點(diǎn)。顯示名稱為紅燈、綠燈均為led類型節(jié)點(diǎn)。

4.3button_expand節(jié)點(diǎn)

4.3.1 長(zhǎng)按超過(guò)1s節(jié)點(diǎn)5abf24fe-5790-11ed-b116-dac502259ad0.png

  • 操作模式為 keep press mode(trigger):用戶按下按鍵持續(xù)不放,若持續(xù)時(shí)間超過(guò)設(shè)定時(shí)間,該節(jié)點(diǎn)將觸發(fā)輸出;
  • 超時(shí)時(shí)間為1000ms:從用戶剛按下按鍵開(kāi)始,如果按住的持續(xù)時(shí)間超過(guò)1000ms,則該節(jié)點(diǎn)觸發(fā),輸出主題"長(zhǎng)按1s"。

4.3.2長(zhǎng)按超過(guò)2s節(jié)點(diǎn)

5aea7d0c-5790-11ed-b116-dac502259ad0.png

* 該節(jié)點(diǎn)配置與長(zhǎng)按超過(guò)1s名稱節(jié)點(diǎn)同理,區(qū)別在于超時(shí)時(shí)間為2000ms,主題配置為長(zhǎng)按超過(guò)2s。用戶可參照上一小節(jié)keep press mode(trigger)模式實(shí)驗(yàn)-長(zhǎng)按超過(guò)1s名稱節(jié)點(diǎn)配置講解。即從用戶剛按下按鍵開(kāi)始,如果按住的持續(xù)時(shí)間超過(guò)2000ms,則該節(jié)點(diǎn)觸發(fā),輸出主題"長(zhǎng)按2s"。4.3.3 長(zhǎng)按超過(guò)3s節(jié)點(diǎn)

5b065b6c-5790-11ed-b116-dac502259ad0.png

* 該節(jié)點(diǎn)配置與長(zhǎng)按超過(guò)3s名稱節(jié)點(diǎn)同理,區(qū)別在于超時(shí)時(shí)間為3000ms,主題配置為長(zhǎng)按超過(guò)3s。用戶可參照上一小節(jié)keep press mode(trigger)模式實(shí)驗(yàn)-長(zhǎng)按超過(guò)1s名稱節(jié)點(diǎn)配置講解。即從用戶剛按下按鍵開(kāi)始,如果按住的持續(xù)時(shí)間超過(guò)3000ms,則該節(jié)點(diǎn)觸發(fā),輸出主題"長(zhǎng)按3s"。

4.4fscript節(jié)點(diǎn)

4.4.1長(zhǎng)按紅燈節(jié)點(diǎn)

if(msg.topic == "長(zhǎng)按超過(guò)1s"){

output.payload = 1

}

*該內(nèi)容,主要實(shí)現(xiàn)對(duì)button_expand節(jié)點(diǎn)的消息進(jìn)行判斷,如果收到主題信息是長(zhǎng)按超過(guò)1s,則向下一個(gè)節(jié)點(diǎn)傳遞output對(duì)象中的payload屬性值為1。由于下一個(gè)節(jié)點(diǎn),連接了led節(jié)點(diǎn),即為開(kāi)燈。4.4.2長(zhǎng)按綠燈節(jié)點(diǎn)

if(msg.topic=="長(zhǎng)按超過(guò)2s"){
output.payload=1

}

*該內(nèi)容,主要實(shí)現(xiàn)對(duì)button_expand節(jié)點(diǎn)的消息進(jìn)行判斷,如果收到主題信息是長(zhǎng)按超過(guò)2s,則向下一個(gè)節(jié)點(diǎn)傳遞output對(duì)象中的payload屬性值為1。由于下一個(gè)節(jié)點(diǎn),連接了led節(jié)點(diǎn),即為開(kāi)燈。4.4.3長(zhǎng)按關(guān)閉所有設(shè)備節(jié)點(diǎn)

if(msg.topic=="長(zhǎng)按超過(guò)3s"){
output.payload=0

}

*該內(nèi)容,主要實(shí)現(xiàn)對(duì)button_expand節(jié)點(diǎn)的消息進(jìn)行判斷,如果收到主題信息是長(zhǎng)按超過(guò)3s,則向下一個(gè)節(jié)點(diǎn)傳遞output對(duì)象中的payload屬性值為0。由于下一個(gè)節(jié)點(diǎn),連接了led節(jié)點(diǎn),即為關(guān)燈。

4.5其余節(jié)點(diǎn)配置

* 同keep press mode(trigger)模式實(shí)驗(yàn)節(jié)點(diǎn)配置。

4.6實(shí)驗(yàn)現(xiàn)象

4.6.1操作

一直按住按鍵,持續(xù)4s。

4.6.1 led燈顯示情況5b2ba2aa-5790-11ed-b116-dac502259ad0.jpg

長(zhǎng)按超過(guò)1s時(shí)

紅燈亮起

5b6b969e-5790-11ed-b116-dac502259ad0.jpg

長(zhǎng)按超過(guò)2s時(shí)

綠燈亮起

5ba8980a-5790-11ed-b116-dac502259ad0.jpg

長(zhǎng)按超過(guò)3s時(shí)

兩燈熄滅

5. 同操作類型下trigger模式與statistical模式的區(qū)別

5.1主要區(qū)別

區(qū)別一

同操作類型下,兩種模式所實(shí)現(xiàn)的功能均可相互代替,但是所實(shí)現(xiàn)的fscript節(jié)點(diǎn)數(shù)據(jù)處理有所不同。trigger模式主要用于觸發(fā)它所連接的節(jié)點(diǎn)工作;statistical模式則可以輸出統(tǒng)計(jì)的信息,如連續(xù)按下按鍵的次數(shù),或者按鍵按下所持續(xù)的時(shí)間。

區(qū)別二
同操作類型下,一個(gè)statistical模式節(jié)點(diǎn)可以代替多個(gè)trigger模式節(jié)點(diǎn)所實(shí)現(xiàn)的功能(fscript節(jié)點(diǎn)處理方式也要更改),從而使我們的流圖得到大幅度簡(jiǎn)化。

5.2模式實(shí)驗(yàn)

* 以continuous mode(trigger)模式實(shí)驗(yàn)為例,我們使用對(duì)應(yīng)的(statistical)模式來(lái)實(shí)現(xiàn),從而讓大家進(jìn)一步理解其之間的區(qū)別。

5.2.1 原trigger實(shí)驗(yàn)流圖

57598a0c-5790-11ed-b116-dac502259ad0.png

5.2.2 現(xiàn)statistical實(shí)驗(yàn)流圖

5bcef694-5790-11ed-b116-dac502259ad0.png* statistical模式流圖明顯簡(jiǎn)化。5.3button_expand節(jié)點(diǎn)按下次數(shù)統(tǒng)計(jì)名稱節(jié)點(diǎn)。

5bf3acd2-5790-11ed-b116-dac502259ad0.png

* 該實(shí)驗(yàn)下,只需要把操作模式切換到statistical模式即可。

5.4fscript節(jié)點(diǎn)

5.4.1 紅燈設(shè)備控制節(jié)點(diǎn)

if(msg.payload==1){
output.payload=1
}

if(msg.payload==3){
output.payload=0

}

*該內(nèi)容,主要實(shí)現(xiàn)對(duì)button_expand節(jié)點(diǎn)的消息進(jìn)行數(shù)據(jù)處理。如果收到msg.payloa為1,則向下一個(gè)節(jié)點(diǎn)傳遞output對(duì)象中的payload屬性值為1。由于下一個(gè)節(jié)點(diǎn),連接了led節(jié)點(diǎn),即為開(kāi)燈。如果收到msg.payloa為3,則向下一個(gè)節(jié)點(diǎn)傳遞output對(duì)象中的payload屬性值為0。由于下一個(gè)節(jié)點(diǎn),連接了led節(jié)點(diǎn),即為關(guān)燈。5.4.2綠燈設(shè)備控制節(jié)點(diǎn)

if(msg.payload==2){
output.payload=1
}

if(msg.payload==3){
output.payload=0

}

*該內(nèi)容,主要實(shí)現(xiàn)對(duì)button_expand節(jié)點(diǎn)的消息進(jìn)行數(shù)據(jù)處理。如果收到msg.payloa為2,則向下一個(gè)節(jié)點(diǎn)傳遞output對(duì)象中的payload屬性值為1。由于下一個(gè)節(jié)點(diǎn),連接了led節(jié)點(diǎn),即為開(kāi)燈。如果收到msg.payloa為3,則向下一個(gè)節(jié)點(diǎn)傳遞output對(duì)象中的payload屬性值為0。由于下一個(gè)節(jié)點(diǎn),連接了led節(jié)點(diǎn),即為關(guān)燈。5.5其余節(jié)點(diǎn)配置* 同continuous mode(trigger)模式實(shí)驗(yàn)節(jié)點(diǎn)配置。5.6實(shí)驗(yàn)現(xiàn)象依次對(duì)按鍵進(jìn)行單擊、雙擊和三擊操作。

  • led燈顯示情況

* 同continuous mode(trigger)模式實(shí)驗(yàn)led燈顯示情況。

由此可見(jiàn),使用statistical模式要比trigger模式更佳利于流圖的簡(jiǎn)化,但是流圖的簡(jiǎn)化,便意味著fscript節(jié)點(diǎn)中的數(shù)據(jù)處理可能會(huì)更加的復(fù)雜。兩種方式各有利弊,大家可以根據(jù)自身的處理習(xí)慣和偏好進(jìn)行選擇。


565e31b6-5790-11ed-b116-dac502259ad0.jpg 總結(jié)

button_expand擴(kuò)展節(jié)點(diǎn)很巧妙地實(shí)現(xiàn)了,在有限的按鍵資源下,完成對(duì)遠(yuǎn)大于按鍵個(gè)數(shù)的事件進(jìn)行控制。通過(guò)對(duì)button輸出信號(hào)的處理,實(shí)現(xiàn)例如單擊、n擊、長(zhǎng)按、短按等各種組合情況的判斷。為用戶在一定程度上簡(jiǎn)化了流圖的復(fù)雜度,節(jié)約了一定的硬件資源成本。

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

    關(guān)注

    5175

    文章

    19973

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    智能音箱按鍵ESD防護(hù)方案

    在上一期內(nèi)容中,我們已對(duì)智能音箱的內(nèi)部結(jié)構(gòu)與工作原理進(jìn)行了詳細(xì)解析,明確了靜電放電(ESD)是電子器件失效的最常見(jiàn)誘因。智能音箱的接口、按鍵、傳感器等多個(gè)與外界接觸或信號(hào)傳輸?shù)牟课唬璨渴?ESD 防護(hù)措施。
    的頭像 發(fā)表于 09-08 16:34 ?2202次閱讀
    智能音箱<b class='flag-5'>按鍵</b>的<b class='flag-5'>ESD</b>防護(hù)方案

    ?TI ESD1LIN24/ESD1LIN24-Q1 ESD保護(hù)二極管技術(shù)解析與應(yīng)用指南

    Texas Instruments ESD1LIN24/ESD1LIN24-Q1 ESD保護(hù)二極管是一款用于本地互連網(wǎng)絡(luò) (LIN) 的單通道低電容雙向ESD保護(hù)器件。該器件的額定接觸
    的頭像 發(fā)表于 09-01 14:55 ?361次閱讀
    ?TI <b class='flag-5'>ESD1</b>LIN24/<b class='flag-5'>ESD1LIN24-Q1</b> <b class='flag-5'>ESD</b>保護(hù)二極管技術(shù)解析與應(yīng)用指南

    喜訊丨熱烈祝賀致遠(yuǎn)電子成功入選2025年廣州市首版次軟件產(chǎn)品研發(fā)項(xiàng)目

    導(dǎo)讀ZLG致遠(yuǎn)電子的“基于EsDA嵌入式自動(dòng)化的汽車制造診斷測(cè)試ZWS-IoT低代碼平臺(tái)軟件項(xiàng)目”憑借突出的功能、領(lǐng)先的性能和廣泛的應(yīng)用范圍成功入選2025年廣州市首版次軟件產(chǎn)品研發(fā)項(xiàng)目。為推動(dòng)我市
    的頭像 發(fā)表于 08-26 11:36 ?705次閱讀
    喜訊丨熱烈祝賀致遠(yuǎn)電子成功入選2025年廣州市首版次軟件<b class='flag-5'>產(chǎn)品</b>研發(fā)項(xiàng)目

    Texas Instruments ESD562/ESD562-Q1 ESD保護(hù)二極管數(shù)據(jù)手冊(cè)

    Texas Instruments ESD562/ESD562-Q1雙向ESD保護(hù)二極管用于RS-485和RS-422接口保護(hù)。ESD562/ESD
    的頭像 發(fā)表于 08-03 09:25 ?744次閱讀
    Texas Instruments <b class='flag-5'>ESD</b>562/<b class='flag-5'>ESD562-Q1</b> <b class='flag-5'>ESD</b>保護(hù)二極管數(shù)據(jù)手冊(cè)

    Texas Instruments ESD652/ESD652-Q1 ESD 保護(hù)二極管數(shù)據(jù)手冊(cè)

    電容,可實(shí)現(xiàn)高速接口保護(hù)。ESD652-Q1 保護(hù)二極管的工作溫度范圍為-55°C至150°C。ESD652保護(hù)二極管的工作溫度范圍為-40°C至125°C。ESD652-Q1
    的頭像 發(fā)表于 08-01 14:29 ?632次閱讀
    Texas Instruments <b class='flag-5'>ESD</b>652/<b class='flag-5'>ESD652-Q1</b> <b class='flag-5'>ESD</b> 保護(hù)二極管數(shù)據(jù)手冊(cè)

    新一代PLC控制軟件平臺(tái)EsDA-AWStudio

    在工業(yè)自動(dòng)化和智能制造領(lǐng)域,高效的軟件平臺(tái)是提升開(kāi)發(fā)效率和系統(tǒng)性能的關(guān)鍵。ZLG致遠(yuǎn)電子推出的EsDA-AWStudio平臺(tái),憑借其強(qiáng)大的功能和靈活的設(shè)計(jì),為工業(yè)控制和物聯(lián)網(wǎng)應(yīng)用提供了全新的解決方案
    的頭像 發(fā)表于 07-28 11:33 ?275次閱讀
    新一代PLC控制軟件平臺(tái)<b class='flag-5'>EsDA</b>-AWStudio

    Texas Instruments ESD851/ESD851-Q1 ESD保護(hù)二極管數(shù)據(jù)手冊(cè)

    Texas Instruments ESD851/ESD851-Q1雙向ESD保護(hù)二極管設(shè)計(jì)用于鉗位ESD和浪涌等有害瞬態(tài)。ESD851/
    的頭像 發(fā)表于 07-18 14:48 ?454次閱讀
    Texas Instruments <b class='flag-5'>ESD</b>851/<b class='flag-5'>ESD851-Q1</b> <b class='flag-5'>ESD</b>保護(hù)二極管數(shù)據(jù)手冊(cè)

    Texas Instruments ESD801/ESD801-Q1 ESD保護(hù)二極管數(shù)據(jù)手冊(cè)

    Texas Instruments ESD801/ESD801-Q1雙向ESD保護(hù)二極管采用行業(yè)標(biāo)準(zhǔn)0402(DFN-1006)封裝,具有15kV IEC 61000-4-2保護(hù)等級(jí)。該器件可鉗位
    的頭像 發(fā)表于 07-10 15:15 ?411次閱讀
    Texas Instruments <b class='flag-5'>ESD</b>801/<b class='flag-5'>ESD801-Q1</b> <b class='flag-5'>ESD</b>保護(hù)二極管數(shù)據(jù)手冊(cè)

    湖南銀河電氣有限公司產(chǎn)品應(yīng)用案例

    湖南銀河電氣有限公司產(chǎn)品應(yīng)用案例
    發(fā)表于 04-23 11:21 ?0次下載

    用ADS7830做一個(gè)按鍵檢測(cè),做3KV ESD測(cè)試時(shí),ESD信號(hào)打到外殼的地時(shí),ADS7830會(huì)鎖死,怎么解決?

    我在用ADS7830做一個(gè)按鍵檢測(cè),在做3KV ESD測(cè)試時(shí),ESD信號(hào)打到外殼的地時(shí),ADS7830會(huì)鎖死。當(dāng)ESD信號(hào)撤銷后,改變ADC的輸入信號(hào),輸出都是干擾前的數(shù)據(jù)。以下是我
    發(fā)表于 01-16 07:55

    開(kāi)發(fā)第1個(gè)LVGL程序與實(shí)現(xiàn)按鍵操作

    開(kāi)發(fā)第1個(gè)LVGL程序與實(shí)現(xiàn)按鍵操作
    的頭像 發(fā)表于 01-07 13:49 ?3950次閱讀
    開(kāi)發(fā)第<b class='flag-5'>1</b>個(gè)LVGL程序與<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>按鍵</b>操作

    顯示視頻接口的ESD保護(hù)方案應(yīng)用——VGA接口保護(hù)方案

    1 晶揚(yáng)產(chǎn)品應(yīng)用圖 視頻接口時(shí)常會(huì)受到ESD/EOS靜電的干擾,比如雷電天氣原因等造成靜電浪涌情況發(fā)生或在進(jìn)行熱插拔的過(guò)程中發(fā)生靜電事件,接口沒(méi)有做ESD/EOS防護(hù),將會(huì)造成視頻輸
    的頭像 發(fā)表于 12-24 16:23 ?907次閱讀
    顯示視頻接口的<b class='flag-5'>ESD</b>保護(hù)方案應(yīng)用——VGA接口保護(hù)方案

    將ADC32RF42 EVM與xilinx ZC706開(kāi)發(fā)板直接相連,JESD204B時(shí)鐘無(wú)法建鏈成功,為什么?

    您好,我將ADC32RF42 EVM與xilinx ZC706開(kāi)發(fā)板直接相連,由LMK04828提供時(shí)鐘(ADC32RF42 EVM上的C409,C410被焊下,C431,C432用焊錫連接
    發(fā)表于 11-20 06:23

    基于FPGA實(shí)現(xiàn)按鍵消抖處理

    引言: 按鍵在電子產(chǎn)品中經(jīng)常用到,由于按鍵的機(jī)械特性,按鍵在閉合或松開(kāi)的瞬間伴隨著一連串的抖動(dòng),這樣的抖動(dòng)將直接影響設(shè)計(jì)系統(tǒng)的穩(wěn)定性。因此,必須對(duì)抖動(dòng)進(jìn)行處理。本文介紹如何在FPGA中
    的頭像 發(fā)表于 10-24 14:54 ?1518次閱讀
    基于FPGA<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>按鍵</b>消抖處理

    ST NPI 新上架產(chǎn)品ESDA5WY】Datasheet

    ESDAxxWY系列:汽車應(yīng)用中的ESD保護(hù)。在確保汽車應(yīng)用安全性的同時(shí)縮減PCB尺寸對(duì)于需要穩(wěn)健保護(hù)功能的系統(tǒng),選擇ESDAxxWY可確保實(shí)現(xiàn)高可靠性和高質(zhì)量。這類器件用于防止敏感電
    發(fā)表于 10-21 10:46 ?0次下載