許多Arduino的項目都是基于兩個簡單的程序。
能電腦所不能的單片機,這就是Arduino。

我們每天使用的計算機是強大的,但它們根本不了解身邊發生了什么事。比如說你的筆記本電腦也不能感到光或水。另外,Arduino對外專門設計成鍵控的。它有一個用于簡化傳感器通信的輸入、輸出板子。
Arduino是由Massimo Banzi和他的意大利搭檔Ivrea開發的,并用Ivrea——他最喜歡的酒吧命名。Banzi希望他的設計課程的學生們有一個原型的硬件的廉價,容易的解決方案。自2005年Arduino的發布,它已經從一個教學工具發展成為世界各地制造商的DIY項目,F在有了多模型——更先進的Arduino Due,大功率,微納米。
無論你購買哪個Arduino模型,當你用它來做“互聯網”項目時,單片機的實用性便體現出來了——Arduino可以很容易讓你連接到真實世界,云端,或兩者。本書中,我們將重點介紹兩個超基礎項目以便展示Arduino可以多簡單。
開始使用Arduino在我們能夠完全了解Arduino是什么之前,知道它不是什么是很重要的。Arduino不是電腦(跟卡片電腦Raspberry Pi不一樣)。它不能被獨立編程,需要被插入到計算機中去。它不是特別強大,Arduino Uno只有32 KB的內存 ,而蘋果筆記本卻平均有8G內存。
所以為了使用Arduino,你不能只買這個單片機。對于以下的項目,你需要的是:
硬件- Arduino Uno. “Uno”在意大利語中是一的意思,但這并不是有史以來第一個Arduino,只是最基本的Arduino單片機的最新版本。這些項目可以工作在任何一個型號上,但這里我用的是這個型號。
- B型USB線。我已經很多年沒見過這些舊式的USB端口了,但你可能會在舊的電子設備上用過他們。他們的成本約5-10美元 (譯注:就是能連接題圖的板子上的那個大大的USB口的線)。
- LED燈?梢灾苯诱吃贏rduino上的一個引腳上的小燈;這些往往是相當便宜的。
軟件- Arduino IDE,即“集成開發環境”,是一個免費開源軟件,用于開發“sketches”,也就是Arduino用戶所說的程序。
當你第一次打開Arduino IDE,你需要建立軟件所使用的端口,它用于控制Arduino如何工作,點擊“工具”——>“串口”來建立。
- 在OS X上,Uno串口的設備名叫做“/dev/tty.usbmodem”,但其他類型的Arduino板可能不同。我的是“/dev/tty.usbmodem1421”。
- 在Windows,串口是COM3或更高端口,因為COM1和COM2通常保留給其他硬件。為確定端口號,你可以拔掉Arduino并重新打開IDE菜單。哪個口子不再出現哪個就是你的Arduino。
一般來說,你不用擔心直接拔出你的Arduino電路板會有什么問題。我們知道功能齊全的電腦不應該這樣做,包括Raspberry Pi,因為他們可以在后臺運行一個重要的操作系統任務。但是Arduino只是一個單片機,除非你主動讓它寫內存,否則它肯定是不會的。
Arduino 硬件初步: 閃爍一個LED在這第一個項目中,我們將概述Arduino產生物理輸出的最基本方式,在這個實例中,閃爍一個LED燈。
我們要去寫一個非常簡單的程序使得LED頻閃——或者是當我自豪地向他展現了我的作品時,我的朋友明智的告訴我,“一點小成果”。本程序是基于開源項目Blink sketch,它可以在Arduino的官網找到。
首先,設置硬件,將LED的兩個腳分別插到到Arduino的公共地GND和引腳13上。
注意:如果你準備將一個LED插到一個打開電源的Arduino板子上較長時間(比如超過了這個項目的時間),安全的做法是也接一個220歐姆的電阻。這里有一個你也許需要的接線圖,來自Arduino官網。

一個叉略短于另外一個叉——短的這個是負極頭,因此,這個接“地”,即GND輸入/輸出。

注意短的接GND.
現在讓我們開始寫程序。首先,讓我們給個程序的名字。Arduino會忽略行內雙斜杠后邊的內容,所以這是為自己寫注釋的好方法:
當硬件工作時,我們需要告訴Arduino在它的14根不同的輸入/輸出引腳中哪兒會有信號。在這種情況下,我們固定13引腳的LED。這是我們的如何命名固定在引腳13的LED,其中“LED”只是我給的變量名:
每一個Arduino程序由兩部分組成:void setup() 和 void loop()。這是能夠運行的最小的Arduino程序。
在 void setup()中, 我們告訴Arduino初始化引腳為輸出:
- void setup() {
- pinMode(LED, OUTPUT);
- }
在void loop()中,我們告訴Arduino“寫”一個值到引腳13中。因為我想讓它閃爍,在每個循環中我們要使它寫一個序列的四個不同命令。如“loop”一詞的意思,直到把Arduino關掉前,我們希望它不斷執行。
在下面的代碼中,LED代表了我們之前分配的那個變量!盚IGH”告訴Arduino給LED提供五伏的電源,而“LOW”提供零伏。在閃爍時,使得它延遲“1000”毫秒每一整秒:
- void loop() {
- digitalWrite(LED, HIGH);
- delay(1000);
- digitalWrite(LED, LOW);
- delay(1000);
- }
當把它們放在一起時,整個程序如下(再次聲明,Arduino忽略行內雙斜杠后邊的內容,所以那只是你自己的注釋):
- // 程序 1: 使一個LED閃爍開和關
- int led = 13; // name the LED in pin 13
- void setup() {
- pinMode(LED, OUTPUT); // tell Arduino the pin in question is an output
- }
- void loop() {
- digitalWrite(LED, HIGH); // deliver 5V to LED
- delay(1000); // wait a second
- digitalWrite(LED, LOW); // deliver 0V to LED
- delay(1000); // wait a second
- }
點擊checkmark來驗證你的代碼是沒有錯誤的,然后按play鍵。如果你的Arduino已經連接,它應該開始運行你的閃爍程序了。
Arduino 軟件程序: 打印到電腦上現在讓我們來做一個控制開關并試著演示Arduino是如何產生數字輸出的最基本項目。
我們將要設置Arduino “打印”,或是在您的計算機屏幕上顯示信息。這個程序基于Paul Bianchi的Arduino printing tutorial。
在這個實例中沒有硬件,這樣我們就可以直接跳到程序部分。再說一次,程序分為兩個部分: void setup() 和 void loop()。
在void setup()中,我們要打開一個Arduino和計算機之間通信的線路,指定速率是9600b/s。如果你使用另一個速率,你可能會在計算機上得到亂碼而不是文字。
- void setup() {
- Serial.begin(9600);
- }
在void loop() 中,這部分很像我們的一個LED程序。我們要給它兩條獨立的指令,告訴它在他們之間每一整秒中斷。Println是Arduino輸出到你的電腦顯示的命令。注意"Println"中的"l"的是小寫的"L",而不是大寫的"i"!
- void loop() {
- Serial.println(“hello”);
- delay(1000);
- Serial.println(“world.”);
- delay(1000);
- }
將標題和注釋等放到一起,如下:
- // 程序 2: 使Arduino打印 “Hello World”到電腦上
- void setup() {
- Serial.begin(9600); // open a 9600 baud communication line to computer
- }
- void loop() {
- Serial.println(“Hello”); // write the word “Hello”
- delay(1000); // wait a second
- Serial.println(“World”); // write the word “World”
- delay(1000); // wait a second
- }
驗證你的代碼并運行。什么都不會顯示,直到你點擊Arduino IDE窗口右上角的“Serial Monitor”。你應該看到一個不停輸出的“Hello World”,一遍又一遍,直到你拔掉Arduino。你會看到它并不完美:我總是得到一些亂碼,但很快它自己就好了。

這兩個Arduino項目都非;,但是通過執行他們你已經開始看到,可以與傳感器通信并寫結果到您的計算機的Arduino的潛力所在。如果你把這兩個項目整合——例如,你可以連接一個溫度計到你的Arduino,并告訴它將溫度寫到你的筆記本電腦,你會很快實現Arduino的可能性幾乎是無止境的。
|