放假多日了,沒再到學(xué)校去;每個(gè)學(xué)期都有累屁了的感覺,天天腦袋上戴個(gè)帽子。所有的小傳感器們都放在了學(xué)校,手邊只有一個(gè)還沒有組裝的51小車上面的HC-SR04超聲波傳感器,而MicroBlocks恰好自帶了HC-SR04的傳感器Libraries庫(kù),正好試試。調(diào)入HC-SR04之后會(huì)發(fā)現(xiàn),就一個(gè)Block,按照Block上標(biāo)記的trigger和echo引腳接上指定的引腳就行了。默認(rèn)的是2和4,這兩個(gè)數(shù)字本質(zhì)上相當(dāng)于自定義函數(shù)參數(shù)的默認(rèn)值,一會(huì)兒能看到原理。 圖1 MicroBlocks內(nèi)置的HC-SR04庫(kù) 我們把2和4改一下,接Wemos D1 R32的IO14和IO27。實(shí)際Wemos D1 R32的引腳為了與Arduino UNO長(zhǎng)的一樣,它們被安排在原來UNO板的Digital數(shù)字引腳的區(qū)域那里,但是使用的時(shí)候,我們不能用D7、D6來引用它,也不能7、6或其它數(shù)字來引用,只能老老實(shí)實(shí)用IO上的標(biāo)記。 圖2 Wemos D1 R32管腳分布 之后把HC-SR04的VCC接到5V,GND對(duì)著GND。拖拽幾個(gè)Blocks。Wait 50個(gè)milliseconds的目的,是為了減少一些毛毛刺刺的數(shù)據(jù)噪聲。 圖3 MicroBlocks編寫的ESP32下超聲測(cè)距程序 打開數(shù)據(jù)表格,運(yùn)行,到HC-SR04的兩只大眼睛前面擺幾下手,記錄下來曲線一條。 圖4 MicroBlocks記錄的超聲測(cè)距數(shù)據(jù)曲線 現(xiàn)在回頭看一下圖3里MicroBlocks得到的HC-SR04程序,它沒有傳統(tǒng)Arduino里面的pinMode指定引腳狀態(tài)的語(yǔ)句。再與Mixly的HC-SR04程序比較一下,則要顯得復(fù)雜一些。 圖5 Mixly創(chuàng)建的HC-SR04測(cè)距程序 如果在Mixly窗口里展開代碼窗口,就可以看到Mixly雖然只給擺放了一行Block,但它在背后已經(jīng)默默做了很多Arduino下的代碼工作,代碼窗口里面我們不但看到了熟悉的pinMode,還看到了puseIn函數(shù)。 圖6 Mixly的Arduino代碼窗口 那么MicroBlocks為我們默默做了什么呢?我們到HC-SR04提供的Block上面去右鍵,看到show blocks definition…,點(diǎn)開它,窗口砰的一聲展開來一大堆Block,HC-SR04的驅(qū)動(dòng)原理一下子展示出來了。(仿照MicroBlocks內(nèi)置的驅(qū)動(dòng)庫(kù),是不是就可以模仿著寫自己的驅(qū)動(dòng)庫(kù)了呢?) 圖7 MicroBlocks內(nèi)置的HC-SR04驅(qū)動(dòng)庫(kù) define提示我們前面用過的驅(qū)動(dòng)庫(kù)的Block塊,就是這兒的一個(gè)函數(shù),如果有第二個(gè)define,那就有第2個(gè)Block了。然后是默認(rèn)參數(shù),注釋。這個(gè)define里面包含的set read pin顯然就是Mixly和Arduino的pinMode的動(dòng)作了。它們不是沒做。做了,使用者感覺不到。再向后面,就會(huì)看到Arduino的pulseIn函數(shù)重新實(shí)現(xiàn)的過程,是通過兩個(gè)時(shí)間戳計(jì)算的,所以它當(dāng)然會(huì)在適用于各種各樣的板子時(shí),還能適用于ESP32板子的開發(fā),因?yàn)樗男K塊兒們都是用最底層的函數(shù)實(shí)現(xiàn)的。而這些最底層的函數(shù)由誰(shuí)來支持呢?大概就是那個(gè)支持各種各樣板子的“固件”——虛擬機(jī)。我們?cè)?/span>update firewire的時(shí)候,ESP32的固件被MicroBlocks重新燒寫,這個(gè)新固件支持的函數(shù)就是最底層的,用它們拓展出來的庫(kù),作用于新的板子,就滿足一次編寫,到處運(yùn)行了。再挖下去,寫到ESP32里面的固件在哪里?應(yīng)該是在MicroBlock自身的執(zhí)行程序里面,這很容易測(cè)試:①斷網(wǎng),更新固件,仍然能夠更新成功;②MicroBlocks除了一個(gè)exe可執(zhí)行程序再什么也沒有了。 圖8 HC-SR04驅(qū)動(dòng)庫(kù)內(nèi)幕 被MicroBlocks更新過固件后的ESP32一下子到了夏天,它們仿佛再不承認(rèn)自己是蝙蝠蛾的后代,它們的腦門上因?yàn)殚L(zhǎng)著小草而無(wú)所不能。 后面的事情,是有閑的時(shí)候,學(xué)習(xí)一下內(nèi)置庫(kù)們(畢竟硬著頭皮去改寫ADS1115和INA219驅(qū)動(dòng)庫(kù)我還沒那個(gè)能力哈 |
|