導航:首頁 > 編程語言 > mblockarduino編程教程

mblockarduino編程教程

發布時間:2023-02-09 08:39:28

A. Arino編程用的是什麼方法

arino編程語言入門:

1. 關鍵字

語法符號:

;

;是一條語句結束的標志,供編譯器識別,必須得有。

{}

{}將多條語句合成一個復合語句,能劃分語句的作用域,增強整體整體的可讀性。

//

//行注釋,該行//後的所有語句,文字將不被編譯器所編譯、執行。相似的,還有,在中的所有語句,文字將不被編譯器所編譯、執行。

if(表達式)

{

語句A;

}

if(表達式1)

{

語句1;

}

else if(表達式2)

{

語句2;

}

...

else if(表達式n)

{

語句n;

}

else

{

語句n+1;

}

for(初始表達式;條件表達式;循環變數表達式)

{

循環體語句;

}

switch(表達式)

{

case 表達式常量1:語句序列1;

case 表達式常量2:語句序列2;

...

case 表達式常量i:語句序列i;

case 表達式常量n:語句序列n;

default:語句序列n+1;

}

while(條件表達式)

{

循環語句;

循環變數表達式;

}

do

{

循環體語句;

}while(條件表達式);

break;

continue;

return x;

goto 語句標號;



2. 數據類型:


3. 常量

HIGH | LOW 表示數字IO口的高低電平。HIGH 表示高電(1),LOW 表示低電平(0)。

INPUT | OUTPUT 表示數字IO口的方向,INPUT 表示輸入(高阻態),OUTPUT 表示輸出(AVR單片機能提供5V電壓 40mA電流)。

true | false true 表示真(1),false表示假(0)。

4. 程序結構

聲明變數及介面名稱(例如:int i;int ledPin=13;)。

void setup() 函數在程序開始時使用,初始化變數,管腳模式,調用庫函數等(例如:pinMode(ledPin,OUTUPT);)。

void loop() 在void setup()函數之後,即初始化之後,loop() 讓你的程序循環地被執行。使用它來運轉Arino。

5. 數字 I/O

以下型號為UNO

pinMode(pin, mode);

數字IO口輸入輸出模式定義函數,pin表示為0~13, mode表示INPUT或OUTPUT。

digitalWrite(pin, value) ;

數字IO口輸出電平定義函數,pin表示為0~13,value表示為HIGH或LOW。

必須先定義為輸入或輸出模式digitalWrite才能生效。

int digitalRead(pin);

數字IO口讀輸入電平函數,pin表示為0~13,value表示為HIGH或LOW。比如可以讀數

字感測器。

6. 模擬IO

int analogRead(pin);

模擬IO口讀函數,pin表示為0~5(ArinoDiecimila為0~5,Arino nano為0~7)。比如可以讀模擬感測器(10位AD,0~5V表示為0~1023)。

analogWrite(pin, value) - PWM

數字IO口PWM輸出函數,Arino數字IO口標注了PWM的IO口可使用該函數通常在引腳的旁邊標注~,pin表示3, 5, 6, 9,10, 11,value表示為0~255。比如可用於電機PWM調速或音樂播放。

7. 擴展 I/O

shiftOut(dataPin, clockPin, bitOrder,value);

SPI外部IO擴展函數,通常使用帶SPI介面的74HC595做8個IO擴展,dataPin為數據口,clockPin為時鍾口,bitOrder為數據傳輸方向(MSBFIRST高位在前,LSBFIRST低位在前),value表示所要傳送的數據(0~255),另外還需要一個IO口做74HC595的使能控制。

unsigned long pulseIn(pin, value);脈沖長度記錄函數,返回時間參數(us),pin表示為0~13,value為HIGH或LOW。比如value為HIGH,那麼當pin輸入為高電平時,開始計時,當pin輸入為低電平時,停止計時,然後返回該時間。

8. 時間函數

unsigned long millis();返回時間函數(單位ms),該函數是指,當程序運行就開始計時並返回記錄的參數,該參數溢出大概需要50天時間。

delay(ms);延時函數(單位ms)。

delayMicroseconds(us);延時函數(單位us)。

9. 數學函數

min(x, y) ;求最小值。

max(x, y) ;求最大值。

abs(x) ; 計算絕對值。

constrain(x, a, b) ; 約束函數,下限a,上限b,x必須在ab之間才能返回。

map(value, fromLow, fromHigh, toLow,toHigh);約束函數,value必須在fromLow與toLow之間和fromHigh與toHigh之間。

pow(base, exponent);開方函數,base的exponent次方。

sq(x); 平方。

sqrt(x);開根號。

三角函數:

sin(rad);

cos(rad);

tan(rad);

10. 隨機數函數

randomSeed(seed);隨機數埠定義函數,seed表示讀模擬口analogRead(pin)函數 。

long random(max);隨機數函數,返回數據大於等於0,小於max。

long random(min, max);隨機數函數,返回數據大於等於min,小於max。

11. 外部中斷函數

attachInterrupt(interrupt, , mode;外部中斷只能用到數字IO口2和3,interrupt表示中斷口初始0或1,表示一個功能函數,mode:LOW低電平中斷,CHANGE有變化就中斷,RISING上升沿中斷,FALLING 下降沿中斷。

detachInterrupt(interrupt);中斷開關,interrupt=1 開,interrupt=0 關。

interrupts();中斷使能函數,用於使能中斷。

noInterrupts();中斷禁止函數,禁止中斷。

12. 串口收發函數

Serial.begin(speed);串口定義波特率函數,speed表示波特率(串列每秒傳輸數據位數的速率),如9600,19200等。

int Serial.available() 判斷緩沖器狀態。

int Serial.read();讀串口並返回收到參數。

Serial.flush();清空緩沖器。

Serial.print(data);串口輸出數據。Serial.print(數據,數據的進制) 默認為十進制(DEC)

Serial.println(data);串口輸出數據並帶回車符。

13. 重要

以上列舉了一些較常用的函數,事實上,在Arino的安裝目錄下的libraries還有眾多函數可以根據需要進行調用和學習。

也可以自己編寫函數然後按照libraries目錄下其他函數的格式打包好。放置在libraries目錄下,然後自己就可以在IDE環境下調用自己編寫的函數了。

通過以上介紹,其實大家可以看到arino編程語言入門並不難,以上內容分享出來給大家作為參考,想要了解更多更專業的arino編程語言教程可以去DF創客社區Arino教程專欄學習。

B. mBlock & Arino(6)使用蜂鳴器來打節拍

在〈mBlock & Arino(5)可變電阻、ADC 與節拍器〉中,我們利用 mBlock 中的「彈奏鼓聲…」方塊來發聲,這樣的話,你的 Arino 就得一直連接著電腦,這個節拍器才能使用,如果要能夠不連接電腦(之後會介紹),那麼 Arino 上就得有自己的發聲器,像是蜂鳴器。

聲音基本上來自振動,蜂鳴器基本上可分為壓電式與電磁式。

壓電式蜂鳴器使用壓電材料,這類具有 壓電效應 ,簡單來說,就是被施以壓力時會產生電荷,將機械能轉換為電能,這稱之為「正壓電效應」,如果對壓電材料施以電場,材料會產生形變,將電能轉換為機械能,這稱之為「逆壓電效應」,壓電式蜂鳴器透過對壓電材料外加電壓的大小、頻率等控制,來達到震動的效果,因而能產生聲音。電磁式蜂鳴器則是利用電磁方式,透過通電與否將金屬膜吸下或放開來達到振動的效果。

知道蜂鳴器的基本原理,就可以自己寫個小程式來發聲了,接腳有正負之分,你可以如下銜接電路(其實就只要連接正負極就可以了,夠簡單吧!):

如上圖連接的話,透過簡單地讓腳位 D7 在高低電位間切換,就可以聽到蜂鳴器發出聲音了:

「播放腳位…」方塊

當然,因為受到「等待」方塊的限制,這樣實際上能發出的頻率有限,在 mBlock 的機器人模塊中,其實有個「播放腳位…」方塊:

這個方塊可以指定哪個數位腳位以指定頻率、節拍數驅動蜂鳴器,相當於使用 Arino 官方語言時,可呼叫的tone函式,只不過,在這邊頻率的設定,直接使用音階名稱 C2 到 D8 的下拉選單,省去你查詢音階對應的頻率,如果你只要是播放幾個音階的話,使用這個是還蠻簡單的,只不過,如果你想自行輸入頻率的話,就沒辦法了,想做個簡單的電子琴或歌曲播放,也會麻煩許多,就像 mBlock 內建的「音樂演奏」範例就落落長:

你可以直接開啟範例執行看看,聽聽看蜂鳴器的效果。真的要做比較有彈性的歌曲播放,或者是電子琴也不是不行,就是要對「播放腳位…」方塊做點封裝,有興趣可以自己試試 … XD

(mBlock 2.1 之後,「播放腳位…」方塊就可以使用下拉選單或自行指定數值了,這樣就有彈性的多了。)

使用「播放腳位…」方塊來為〈mBlock & Arino(5)可變電阻、ADC 與節拍器〉中的節拍器打節拍,程式上撰寫倒是還蠻簡單的,你可以先如下連接電路:

修改一下〈mBlock & Arino(5)可變電阻、ADC 與節拍器〉的節拍器程式,如果將來打算可以讓 Arino 可以不連接電腦執行程式,與桌面環境中資源控制的方塊要移除,像是控制貓咪的相關方塊:

接著試著執行看看程式吧!看看效果如何!

感謝CodeData用戶: caterpillar 的貢獻 著作權歸作者所有

整理:寧波家電物聯網雲平台,中科極動雲

C. arino uno怎麼編程

你好
只要將Uno的USB線插入電腦,並且下載Arino IDE 軟體。創建一個新的編寫程序。
之後在裡面寫入你的程序就可以了。基本上所有的Arino都是用它自己的軟體編寫的。
這個軟體在官網就能下載到。你如果是問具體怎麼編程,這個涉及的東西太多了,由簡單到復雜。但是相比於一般的直接給處理器寫硬體編程的東西而已,Arino的軟體已經給你創造了一個舒適的環境能夠試用很多簡單的編程,比如你可以直接控制連接的埠的電壓輸出等。
如果你一點沒有接觸編程,你可以載入Arino軟體里的編程例子去看。裡面比如有blink等,簡單又能理解,而且官網還給你配了圖片,告訴你怎麼進行連接。我覺得Arino是一種C和C++的混編,所以如果有的代碼你不明白可以具體的復制到網上搜索。
你可以追問或者留言告訴我你更多的困難,或者你需要我出示一個例子的話,你可以給我講。

D. mBlock & Arino(19)通過網路調節 LED 亮度

小小雲提示:教程作者 caterpillar是來自台灣的programmer,所以在一些專有名詞的使用上會和我們這邊使用的不太一樣啦,不過作者也有標注出英文名稱,大家自行轉換喲(⁎⁍̴̛ᴗ⁍̴̛⁎)

Arino Uno 板子沒有銜接網路模組,是無法進行網路連線的,不過 mBlock 具有網路連接功能,兩台電腦分別開啟 mBlock,就可以進行網路通信,也就是說,你可以通過網路控制另一頭連接的 Arino,反之亦然。

要使用 mBlock 建立網路連線,兩台電腦都必須開啟 mBlock,接著在其中一台執行「網路連接/自定義連接」後,輸入另一台電腦的 IP:

按下「連接」按鈕,如果連線成功的話,兩台電腦上的 mBlock 都會呈現「網路連接 已連接」的字樣:

記得!一定要按下「連接」按鈕,直接按下 Enter 鍵是不會有反應 … XD

接下來就可以寫個簡單的通訊啦!例如,在其中一台不斷地發送計時器的信息:

而另一台不斷接收信息並顯示:

按下兩個 mBlock 的綠旗,你就會看到另一個 mBlock 接到信息並顯示出來:

接下來示範一下,如果通過網路調節 LED 亮度,在兩台電腦上分別連接上 Arino,並記得在 mBlock 上分別指定好「串口連接」,當然,也得記得如上通過網路連線兩個 mBlock。

接著,其中一台 Arino 如下連接一個可變電阻:

另一台 Arino 如下連接電阻與 LED:

因為要通過 Arino 調節 LED 亮度,別忘了要接在有 PWM 功能的腳位上,因此在上頭我是接在 D11 腳位。

接著,連接著可變電阻的電腦上,在 mBlock 上撰寫如下的程式:

這會不斷地讀取類比腳位的電壓值並通過網路送出,而在另一台連接著 LED 的電腦上,在 mBlock 中撰寫如下的程式:

別忘了,Arino 類比腳位的輸入值是 0 ~ 1023,而通過有 PWM 功能的腳位模擬類比電壓時,可指定的值是 0 ~ 255,因此,必須通過計算作轉換,「讀取一行數據」並不會阻斷程式流程,因此我們必須檢查值是否為 0 到 1023。

在上頭的程式中,「當收到數據時」方塊會在「讀取一行數據」方塊完成後觸發執行,你也可以將「如果」方塊的部份,直接放在「不停重復」之中,兩種寫法都可以!

接下來分別執行程式,並試著轉動可變電阻,你會發現另一台 Arino 上的 LED 會隨著可變電阻的轉動而有不同的明亮。

感謝CodeData用戶: caterpillar 的貢獻 著作權歸作者所有

整理:寧波家電物聯網雲平台,中科極動雲

CONTACT US: http://www.iot-jd.com/

E. 如何搭建mblock開發環境

Arino的作用是能通過各種各樣的感測器來感知環境,通過控制燈光、馬達和其他的裝置來反饋、影響環境。板子上的微控制器可以通過Arino的編程語言來編寫程序,編譯成二進制文件,燒錄進微控制器。
下面對Arino的特色與功能介紹:
特色。可開放源代碼的電路圖設計,程序開發介面免費下載,也可依個人需求自己修改。是使用低價格的微處理控制器(AVR系列控制器),可以採用USB介面供電,不需外接電源,也可以使用外部9VDC輸入。Arino支持ISP在線燒,可以將新的「bootloader」固件燒入AVR晶元。有了bootloader之後,可以通過串口或者USB to RS232線更新固件。可依據官方提供的Eagle格式PCB和SCH電路圖簡化Arino模組,完成獨立運作的微處理控制;可簡單地與感測器,各式各樣的電子元件連接(例如:紅外線,超音波,熱敏電阻,光敏電阻,伺服馬達,…等)。支持多種互動程序,如:Flash、Max/Msp、vvvv、PD、C、Processing等。應用方面,利用Arino,突破以往只能使用滑鼠、鍵盤、CCD等輸入的裝置的互動內容,可以更簡單地達成單人或多人游戲互動。
功能。可以快速使用Arino與Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider等軟體結合,作出互動作品。 Arino可以使用現有的電子元件例如開關或者感測器或者其他控制器件、LED、步進馬達或其他輸出裝置。 Arino也可以獨立運行,並與軟體進行交互,例如: Macromedia Flash, Processing, Max/MSP, Pure Data, VVVV或其他互動軟體…。 Arino的IDE界面基於開放源代碼,可以免費下載使用,開發出更多令人驚艷的互動作品。

F. mBlock編程如何做小熊碰撞

1、寫一個碰撞處理函數。2、在游戲循環GameLoop尾部中加入檢測邊界函數。
1、碰撞的定義。2、碰撞偵測。3、編程實踐。
碰撞偵測在scratch編程中應用十分廣泛,大部分游戲編程都會用到,值得深入學習和探究。

G. mBlock & Arino(16)控制步進電機

小小雲提示:教程作者 caterpillar是來自台灣的programmer(kinda),所以在一些專有名詞的使用上會和我們這邊使用的不太一樣啦,不過作者也有標注出英文名稱,大家自行轉換喲(⁎⁍̴̛ᴗ⁍̴̛⁎)

步進電機這東西的學問真不少,就結論而言,控制步進電機最好的方式,就是找到與手邊步進電機可以配合的程式庫來使用。Arino IDE 不是有 Stepper 程式庫可以使用嗎?嗯!它是可以用一些步進電機上,不過,不見得能完全發揮步進電機應有的控制能力,控制某些電機則會有些問題,正巧,我手上這顆 28BYJ-48 5V DC 就是!… XD

在 Arino 官方網站的 Arino – Stepper 文件中,談到了步進電機的兩個基本分類:單極步進電機(Unipolar Stepper)與雙極步進電機(Bipolar Stepper)。那麼就從這兩個分類開始認識!

單極步進電機是提供單一方向的電流來驅動電機,例如:

在上圖中,可以看到線圈各有一個共同接點,通常接電源,只要改變其他接點的電壓訊號,就可以產生電流,而電流都是固定的方向,而由於有四個線圈,這樣的電機被稱為四相(Phase)電機。

雙極步進電機的電流則是雙向的,例如:

這類電機在驅動時,需要改變電流的方向來達到不同激磁的效果,而由於有兩個線圈,這樣的電機被稱為二相電機。

電機的相數除了二向、四相之外,還有單相、三相、五相等,這是為了達到不同程度的控制,電機的控制是運用電流通過線圈會產生磁場,並與另一永久磁鐵產生作用,來達到轉動的效果,以四相步進電機為例:

如果做為定子的線圈激磁後,面對轉子一面是 S 極,就會吸引轉子的 N 極,只要依順序對各相線圈激磁,就會產生轉動效果,像上面這種一次激磁一個線圈的方式,稱為一相激磁,因為每次只激磁一個線圈,電力消耗小,不過缺點是振動大、轉距小。

常見的激磁方式是二相激磁,顧名思義,一次激磁兩相,由於有兩相用以吸引住轉子,因此振動小、轉距大:

也有一相、二相輪流激磁,稱為一/二相激磁,順序其實就是上面兩張圖的結合:

可以看出這種激磁方式,每次轉動的角度為一相或二相激磁的一半,可以得到更精確的控制。

步進電機需要比較高的電壓或電流驅動,在 Arino 官方網站的 Arino – Stepper 文件中,有 Unipolar Steppers 及 Bipolar Steppers 兩個頁面,介紹了如何連接出能驅動步進電機的電路,分別有可以接成兩個控制腳位與四個控制腳位的方式。

其中會用到的 IC 是達靈頓陣列(Darlington Array),如先前〈mBlock & Arino(15)認識晶體管與繼電器〉談到的,若想運用晶體管提供更大的電流來驅動電機,可以使用兩個或多個晶體管的組合,達靈頓陣列中有多組達靈頓電路,以 ULN2003APG 來說,里頭有七組達靈頓電路。

如果不想那麼麻煩地自己接電路,那麼可以依使用的步進電機來搭配現成的步進電機驅動模組:

這個步進電機驅動模組,左上四個腳位可以接到 Arino 的數位輸出腳位,下方有 +、- 兩個腳位,分別接 Vcc 與 GND,右上白色插槽用來連接我手邊這顆五線四相的 28BYJ-48 5V DC,上圖步進電機驅動模組中的 ULN2003APG,可搭配 28BYJ-48 5V DC 這個步進電機:

28BYJ-48 5V DC 這個步進電機,其中紅線是接 5V 電源,各線的連接是:

如果搭配 ULN2003,要對 28BYJ-48 5V DC 步進電機做激磁,那麼 ULN2003 的輸入腳位 4、3、2、1,提供電位以進行激磁的順序為…

一相激磁:1000-0100-0010-0001

二相激磁:1100-0110-0011-1001

一/二相激磁:1000-1100-0100-0110-0010-0011-0001-1001

如果想要體驗一下步進電機轉動,那麼可以簡單地如下實作,腳位 D8 到 D11 分別對應至澄、黃、粉、藍,例如一相激磁:

執行程式之後,你可以見到步進電機緩慢的轉動,將順序改為 S4 到 S1,就會看到電機緩慢的逆轉,這邊沒有設任何的工作時間延遲,這是因為 mBlock 執行速度的關系,直接使用 Arino 積木方塊,只能是這個速度了。

類似地,以下是二相激磁:

以下是一/二相激磁:

如果想更進一步試試步進電機控制,可以使用 Arino IDE 中的 Stepper 範例,它們使用到 Arino 的 Stepper 程式庫,不過,如果你手邊是 28BYJ-48 5V DC 步進電機,就要注意一下了,以 stepper_oneRevolution 範例為例:

直接執行的話,你的電機只會有一個方向的轉動,無法逆轉,這是因為 28BYJ-48 5V DC 的接線順序,與 Stepper 程式庫預期的不同,如果你的 28BYJ-48 5V DC 的接線順序由澄、黃、粉、藍分別是接至 D8 到 D11,那麼有兩個方式可以解決,一個方式是在 Arino 上將 D9 與 D10 接線對調,另一個方式是在建立Stepper時,9與10對調:

再來是stepsPerRevolution必須設定為你的電機實際上一圈會有多少步,如果是 28BYJ-48 5V DC 的話,查詢到的規格上寫著,步進角為5.625 / 64,因此這電機轉一圈需要的步數是360 / (5.625 / 64),也就是4096步,不過,這是一/二相激磁才會有的步數,如果你查看Stepper 程式庫原始碼,會發現,它是采二相激磁的實作方式,因此,使用這個 Stepper 程式庫,你實際上要設的stepsPerRevolution必須是2048步。

不過,如果你改了腳位也將stepsPerRevolution設為2048,步進電機還是不會動,這是因為 Stepper 程式庫中setSpeed函式的關系:

這是以毫秒為單位來設置step_delay,如果你設為2048步,那number_of_steps就是2048,那麼step_delay就會是29.296875 / whatSpeed,如果whatSpeed設為60,那結果就會是0.48828125,然而step_delay是unsigned long,也就是實際上結果只會儲存0,那麼step函式中millis() - this->last_step_time >= this->step_delay該行,就會一直是成立的,也就是完全沒給工作時間,這么一來電機就不會動了。

因此,如果你直接使用 Stepper 程式庫,設為 2048 步之後,那麼速度就不能設太高,例如以下就可以正常正反轉了:

如果你會使用 Arino 官方語言的話,改寫 Stepper 應該不是難事,可以試著實作一/二相激磁,並令其能支援 28BYJ-48 5V DC 的4096步與高轉速,懶的話,網路上是也有人已經實作或改寫好的版本,不過,想要精確控制的話,重點還是在於,認識你的步進電機與程式庫!

感謝CodeData用戶: caterpillar 的貢獻 著作權歸作者所有

整理:寧波家電物聯網雲平台,中科極動雲

H. Mbloc K程序怎麼上傳

軟體中上傳。
1、首先,打開Mblock軟體程序。
2、然後,在編輯菜單中選擇arino模式。
3、然後,選擇主控板和串口。
4、最後,點擊完成,即可進行上傳。

I. mBlock & Arino(26)Me 動作、光線感應器實作小夜燈

小小雲提示:教程作者 caterpillar是來自台灣的programmer,所以在一些專有名詞的使用上會和我們這邊使用的不太一樣啦,不過作者也有標注出英文名稱,大家自行轉換喲(⁎⁍̴̛ᴗ⁍̴̛⁎)

在〈mBlock & Arino(14)使用人體動作感應器〉中談過 PIR 動作感應器,Makeblock 提供有 PIR 動作感應器模組,以及光線感應器模組,結合這兩個,你就可以輕易地作出一個小夜燈。

Me PIR 動作感應器可以偵測到周圍六公尺左右的人體移動,范圍可以藉由 PIR 上方的可變電阻器來調整,這個動作感應器在 D3 有個 LED,當偵測到人體紅外線時,LED 會亮起:

這個動作感應器也可以設定是否可重復觸發,仔細看看感應器上可外接的腳位,或者是 RJ25 埠旁的腳位標示,可以發現有個 Mode 腳位,當你給這個 Mode 腳位高電位時,就是可重復觸發模式,也就是當感測到紅外線變化,在延遲時間內若持續感測到紅外線變化,那麼「人體紅外線感應器方塊」就會持續傳回 1,直到不再感測到紅外線變化後一段延遲時間,才會傳回 0,這通常用於判斷,人體是否有持續動作(或太久沒動靜)的場合。

不可重復觸發,是當感測到紅外線變化而「人體紅外感應器方塊」傳回 1,無論延遲時間內有無感測到紅外線變化,時間一到就會先傳回 0。

因此,根據你將 RJ25 連接至哪個埠,查出 Mode 腳位是對應至哪個數位腳位,給予高或低電壓,就可以設定為可重復觸發或不可重復觸發模式。

Me 光線感應器可以偵測光線強弱,由於是藉由類比腳位得到數值,因此光線強弱變化值由 0 到 1023:

從上面的照片中可以看到,這個感應器還可以偵測灰階變化,這其實是利用反射光的強弱來達成,為了要能偵測灰階變化,你必須點亮照片中標示為 D3 的 LED,然後讓光線感應器很接近被偵測的平面,但不是接觸該平面,由於黑色會吸收光線,因此,越黑的平面,反射光進入光線感應器就會越少,偵側得到數值就會越低。

偵測灰階變化的應用,常見於循跡車,在平面上畫條黑線,車子上的光線感應器靠近黑線的一側:

如果黑線是在感應器的右方,當車子越往左偏離黑線,反射光會越大,在大於某個值時可使其偏右接近黑線,如果車子越偏右進入黑線,為避免它整個往右超出黑線,可在反射光小至某個值時,讓車子偏左,像這樣始終讓感應的反射光維持在某個范圍內,保持黑線在感應器的右方,就可讓車子延著劃下的軌道前進。

當然,這樣的方式只適合不交叉的黑線,如果軌道有交叉,就要使用兩個感應器夾住黑線,如此在兩個感應器反射光都小於某個值時,就表示目前處於交叉點。

那麼,該怎麼點亮標示為 D3 的 LED 呢?這個 LED 是藉由標示為 DI 的腳位控制,當高電位時就會點亮 LED,不過光線感應器只能使用於連接埠 6、7、8,查看這些連接埠對應的腳位,都是類比輸入腳位,怎麼輸出高電壓?

其實類比腳位也可以用來作為擴充的數位腳位,以 Arino Uno 為例,A0 到 A5,也可以當作 D14 到 D19 數位腳位來使用,因此,查看你的連接埠,就可以知道要令哪個號碼的數位腳位為高電位了,例如,若連接在連接埠 6,其腳位為 A2,那麼就是設置數位腳位 15 為高電位,就可以點亮 LED。

如果有興趣,你也可以使用光線感應器實作個掃瞄器喔!可以參考〈 EV3 Tutorial(7)使用顏色感應器實作掃描器 〉,道理是相同的!

接下來就實作個小夜燈吧!需求是,這個小夜燈只在夠暗的時候,才會感應是否有人接近而啟用,小夜燈的部份,我們就直接使用光線感應器上的 LED,為了方便調節什麼樣的光線明亮程度才會感應是否有人接近,我們使用 Me 可變電阻器,並將調整好的數值顯示於七段顯示器上。

我將 PIR 動作感應器連至埠 3,七段顯示器連至埠 4,光線感應器連至埠 6,而可變電阻器連至埠 7。

首先處理偵測人體移動的部份,當偵測到人體靠近時,LED 會點亮:

由於光線感應器連至埠 6,為了控制 LED 明亮,必須使用腳位 A2 充當數位腳位 D16,你可以調整 PIR 動作感應器上的可變電阻,設定好你想要感應的距離范圍。

接下來,利用程式設定 PIR 動作感應器為可重復觸發模式且先關閉光線應器上的 LED:

程式會每一秒鍾將可變電阻器的輸入值,設定給七段顯示器顯示,並作為判斷光線門檻值的依據,你可以測試看看小夜燈是否如預期運作。

當然,我們不能老是開著電腦,使用 mBlock 來控制小夜燈,以上測試沒有問題的話,可以在「Arino mode」中,將程式上傳至板子上:

記得,上傳前要改用「Arino 主程式」方塊,並將自訂方塊的名稱部份改成英文,上傳完畢之後,你就可以將小夜燈裝在想要的地方,將板子連接上外部電源,板子上的電源開關,就是你要不要啟用小夜燈的開關了!

感謝CodeData用戶: caterpillar 的貢獻 著作權歸作者所有

整理:寧波家電物聯網雲平台,中科極動雲

CONTACT US: http://www.iot-jd.com/

J. mBlock & Arino(13)使用搖桿控制

搖桿這東西,經常可見到它的應用,電玩設備就不用說了,我前陣子剛掛掉的行車記錄器,上頭也有個小搖桿,主要用來上下左右操控選單,以及按下搖桿確認選項 … XD

不同廠商製作的類比搖桿,腳位與標示上可能會有所不同,不過基本上會有五個腳位,分別為電源、GND、X 軸、Y 軸、開關,以我手中的 Keyes_Sjoys 來說:

從左至右的接腳順序與標示分別是 GND、+5V、VRx、VRy、SW,SW 就是開關輸出的意思,在接好 +5V 與 GND,而搖桿不按下的情況下,Keyes_Sjoys 的 SW 會有電壓輸出,按下搖桿的話,SW 會是 0V。

至於 VRx 與 VRy 輸出,是以類別電壓輸出來表示目前搖桿的方向狀態,在未操作搖桿的情況下,VRx 與 VRy 大致是在 2.5V,如果在 X 方向移動,VRx 會有 0 到 5V 變化,如果在 Y 方向移動,VRy 也是有 0 到 5V 變化。

因此,可以將 VRx 與 VRy 接到 Arino 的類別腳位,依搖桿操作的方向,我實際量得 Arino 的類比輸入值變化為:

在 Fritzing 中有個通用的搖桿元件,接腳順序與標示則分別是 VCC、VERT、HORZ、SEL、GND,SEL 就是選擇,其實也就是開關的意思:

因此,如果要使用搖桿控制貓咪,可以如下銜接電路,VCC、VERT、HORZ、SEL、GND,SEL 等腳位,就對應至你實際使用的搖桿模組腳位即可:

我要使用搖桿來控制貓咪的上、下、左、右移動,而按下搖桿,貓咪會發出「喵」一聲,為了符合操作習慣,以向右為 X 正方向,而向上為 Y 正方向,因此,我用 488 減去 Arino 從 Keyes_Sjoys 的 VRy 量得的值:

你也可以挑戰使用搖桿來控制 3D 立方體旋轉喔!

這是自己用「畫筆」繪制的,一點點電腦圖學的應用,最主要的是,知道 x-y-z 三維座標中某個點,如何繞軸旋轉,這部份可參考〈 三維直角座標之繞軸旋轉 〉。

然後,正立方體以 (0, 0, 0) 為中心,訂出八個頂點,這部份可參考〈 頂點索引陣列 〉,只要看第一張圖就可以了,我沒有用頂點索引陣列,因為在 Scratch(mBlock) 中沒辦法,因為它的程式元素太少,難以實作頂點索引陣列,因此,我簡化了繪圖,用最簡單(但重復)的方法,直接跑一維清單而已 … 就只是程式碼重復了四次,理論上是要跑六個面,不過,跑四個面,每個邊就都至少畫過一次了 … XD

有興趣研究一下電腦圖學的,可以參考一下我的〈 電腦圖學入門 〉文件。

感謝CodeData用戶: caterpillar 的貢獻 著作權歸作者所有

整理:寧波家電物聯網雲平台,中科極動雲

閱讀全文

與mblockarduino編程教程相關的資料

熱點內容
目前安卓平板什麼處理器最好 瀏覽:527
中考幫pdf 瀏覽:677
愛搞影視網站 瀏覽:566
我要片子的網站 瀏覽:501
androidx軸y軸 瀏覽:556
簡愛演員表英國1970 瀏覽:698
我在電影院給他了會不會被拍到 瀏覽:480
校園兩個女生同性戀電影 瀏覽:17
三菱應用基礎與編程入門 瀏覽:68
java路徑創建文件夾 瀏覽:656
captureone預設文件夾 瀏覽:684
exe類型的解壓到哪裡去了 瀏覽:188
拆下來的硬碟怎麼加密 瀏覽:167
好看的小說百度雲網盤 瀏覽:704
法國電影love 瀏覽:40
泰國電影女拳 瀏覽:386
風月by狸貓免費閱讀 瀏覽:697
msp430編程教程 瀏覽:856
神鼠全集 瀏覽:50
破案電影全部 瀏覽:934