2018年6月18日 星期一

Arduino控制指令


一、程式大架構
接下來來認識arduino程式的基本架構。Arduino的程式架構,分為void setup()以及{}void loop(){}這兩個區塊,這些區塊的專有名詞叫做”函數”,當你要撰寫arduino的程式時,這兩個東西是不可或缺的東西,也就是當你在撰寫arduino程式時,一定要出現void setup()以及{}void loop(){}這一些東西,而且也只能出現一次!

void setup(){}void loop(){}就是一種函數,void代表函數執行完後不回傳數值(聽不懂沒關係)void後面的setuploop代表該函數的名字(聽不懂沒關係),但一定要在函數名字後面加一組小括弧和一組大括弧,並把程式寫到大括弧內

setup函數的大括號裡面要放置什麼呢? set up就是建立的意思,顧名思義,裡面就是要放一些有關剛開始建立程式所需的東西,像是設定參數、接腳設定、函數初始化等等,或者你只想要他做一次的程式都可以放在setup函數裡。
Loop就是循環的意思,就是要在裡面就是要放需要arduino一直做的程式,例如說一直偵測溫度、讓LED不停地閃爍等等……


二、基本指令
        1.digitalWrite
        語法:digitalWrite(腳位編號,輸出準位);
腳位:範圍從0~13A0~A7都可以(不過盡量不要用到0,1,A6,A7)因為0,1Arduino專用來通訊的腳位,若真的需要使用,要先拔除插在0,1腳上的接腳,等Arduino程式上傳完畢後再插上去;而不用A6,A7是因為Arduino開發版並沒有將這兩個腳位拉接口出來
輸出準位:”HIGH””LOW”兩種選擇,HIGH代表輸出5V;而LOW代表輸出0V,但可以用10代替HIGHLOW
        例如:
(1)要使第13腳輸出5VdigitalWrite(13,1); digitalWrite(13,HIGH);
(2)要使第A2腳輸出0VdigitalWrite(A2,0); digitalWrite(A2,LOW);
                                           digitalWrite(14,0); digitalWrite(14,LOW);
                                           A0也是第14腳,A1是第15……

到後面編譯時,會利用#defineA0換置為14,所以要寫A014都沒關係


        2.pinMode
        語法:pinMode(腳位編號,工作模式);
        腳位:範圍從0~13A0~A7都可以(不過盡量不要用到0,1,A6,A7)
工作模式:”OUTPUT””INPUT”,若設為” INPUT”代表此接腳將用來偵測電壓;反之設為” OUTPUT”,則此接腳將用來輸出電壓
        例如:
(1)A5設定為偵測輸入電壓:pinMode(A5,INPUT);
                                 (2)9設為輸出電壓:pinMode(9,OUTPUT);


若沒有設定pinModeDDRX暫存器會把三態閘控制在高阻抗狀態,即使PORTX暫存器(digitalWrite)有輸出,也會因為三態閘內部阻抗串聯電路造成輸出電流變小,因此沒宣告pinMode,該接腳照常動作但輸出電流不足





        3.delay
        Arduino將會保持現態,發呆且什麼都不做,直到計時時間到
        語法:delay(毫秒數);
        毫秒數:若需要延遲一秒,一秒=1000毫秒
        例如:需要延遲3秒                                         delay(3000);
                 需要延遲1.8秒                                                     delay(1800);



但撰寫龐大程式時,儘量利用millis()代替delay(),這樣方便模擬多工且能達到計時效果


4.//註解
在程式中,難免複雜難以理解,在程式的最後面加入兩撇斜線或者以/*     */這兩個符號夾著註解內容,如:
        (1)digitalWrite(13,1);                                                  //13腳輸出5V
        (2)pinMode(13,OUTPUT);                                 /*13腳設為輸出腳*/







注意
1.Arduino程式指令會區分大小寫所以pinmode不等於pinModeinput不等於INPUT


2.除了{}之外以及少數例外,幾乎每一行指令敘述都要加
反正除了void setup(){}void loop(){}的結尾不用加以外,給他加下去就對了 例如:pinMode(13,OUTPUT);


3. Arduino有保持性,也就是說若使Arduino輸出5V電壓讓LED亮,若沒有用程式使該接腳輸出0Varduion會一直輸出5V電壓,所以LED會一直亮著,直到下一次指定該腳位輸出0VLED方才熄滅


4.請不要將中文的標點符號和英文的標點符號搞混,因為中文的標點符號Arduino看不懂阿





學會上的指令,使用arduino來讓LED閃爍吧!
由於arduino執行一行程式的速度非常快,如果用arduino來讓LED
而沒有延遲的話,LED會閃一下就滅了,而且速度快到不要不要的。因此要使arduino點亮LED後暫停一下,才看的到LED閃爍
       
       



       
因為要重複→使LED亮→延遲一秒→使LED暗→延遲一秒的動作,所以這些程式要放在loop裡面;至於 設定(或者是宣告)接腳模式 是屬於設定的一種,而且也只需要做一次,因此要放在setup裡。


所以將arduino ide打開,並鍵入以下程式:
void setup()
{
pinMode(13,OUTPUT);
}
void loop()
{
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}

                        將程式上傳後應該就可以看到LED在閃爍了



Arduino構造


一、Arduino的外部構造
要精通arduino前,要先好好認識arduino的基本資料,才能完全駕馭arduino,下圖是arduino的外部構造圖


1.     USB插孔:透過此接口,可以將程式上傳到arduino(最大供給500mA電流)
2.     電源插孔:沒有USB供給Arduino電時,可以透過此接口供給Arduion電力,而輸入電壓範圍介於7V~12V(不過我都沒用過這接口)
       
看不懂沒關係這很正常
3.     RESET:按下這個按鈕,Arduino會重新開機,回到最原始的狀態
4.     數位 輸入/輸出 :可透過這些口輸出數位訊號(1)
5.     類比入輸入口:可以當作一個簡易的電表,精確的讀取0V~5V之間的電壓
6.     電源排:可以從這裡拉出電源,方便實驗
7.     通訊腳:盡量不要使用到他




二、Arduino的功能
Arduino除了可以輸出數位訊號外,還可以輸出模擬類比信號,但不是每一個腳都可以輸出模擬類比訊號,仔細看,有些腳位編號前,有一個波浪的符號,那就是可以用來輸出模擬類比訊號的接腳。



        1:數位訊號
                假設今天要控制燈光
                如果用數位信號:燈只會有而已
如果用類比信號:燈光會從完全不亮漸漸的變亮到完全變亮

數位信號只有兩種狀態沒有,在電路中,就代表Vcc、代表1沒有就代表GND、代表0
而類比就是從00.10.20.50.70.80.91慢慢地變化
所以在Arduino中,數位信號就是5V0V,而類比信號就是0V5V中的任意電壓
        2:模擬類比訊號
但是在高速運算的IC中,產生類比訊號需要非常久的時間而且耗費運算資源,於是就用模擬的方式模擬出類比電壓,使用PWM技術模擬出類比電壓


PWM就是透過控制脈波寬度,進而控制工作週期而達到模擬類比電壓




2018年6月17日 星期日

線上模擬器 tinkercad



tinkercad可以讓你不用實體的電子零件就可以做實驗,可以線上模擬Arduino以及一些簡單的電路,就來研究這東西怎麼使用吧



首先到www.tinkercad.com的網站





經過註冊後,應該會看到下面的畫面
點左邊的"circuit"




點"Create new Circuit"打開一個新電路






接下來,單點擊你要的原件,接著拖曳滑鼠游標
將元件安置在適當位置後,再單點一次滑鼠固定元件



可以點擊電子元件,更改元件的類型
(像LED可以更改顏色,電阻可以更改電阻值等等......)






單點麵包板上的洞洞或者電子元件的接腳,可以拉出導線



拉出導線後,單點空白處可以將導線轉彎
如果導線接錯,可以按鍵盤上的"delete"或"backspace"調整



完成接線後還可以透過小圓圈調整接線




單點電阻,可以調整電阻的電阻值






硬體接線接好後,按下"code"編寫Arduino程式



按下"Block"




選擇"Text"(這是將積木式編輯程式換成文字式編輯程式)



按下"continue"



應該就會看到程式編輯區變成文字模式了





程式編寫好後,按下"start simulation"開始模擬電路







如果過程中要更改程式、接線、元件或增新元件
要先停止模擬,所以按下"stop simulation"停止模擬




就能更改程式或其他東西了