找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3470|回復(fù): 0
收起左側(cè)

Easy Arduino: 開(kāi)始你的Arduino之旅

[復(fù)制鏈接]
ID:99556 發(fā)表于 2015-12-19 19:03 | 顯示全部樓層 |閱讀模式
許多Arduino的項(xiàng)目都是基于兩個(gè)簡(jiǎn)單的程序。
能電腦所不能的單片機(jī),這就是Arduino。

我們每天使用的計(jì)算機(jī)是強(qiáng)大的,但它們根本不了解身邊發(fā)生了什么事。比如說(shuō)你的筆記本電腦也不能感到光或水。另外,Arduino對(duì)外專(zhuān)門(mén)設(shè)計(jì)成鍵控的。它有一個(gè)用于簡(jiǎn)化傳感器通信的輸入、輸出板子。
Arduino是由Massimo Banzi和他的意大利搭檔Ivrea開(kāi)發(fā)的,并用Ivrea——他最喜歡的酒吧命名。Banzi希望他的設(shè)計(jì)課程的學(xué)生們有一個(gè)原型的硬件的廉價(jià),容易的解決方案。自2005年Arduino的發(fā)布,它已經(jīng)從一個(gè)教學(xué)工具發(fā)展成為世界各地制造商的DIY項(xiàng)目,F(xiàn)在有了多模型——更先進(jìn)的Arduino Due,大功率,微納米。
無(wú)論你購(gòu)買(mǎi)哪個(gè)Arduino模型,當(dāng)你用它來(lái)做“互聯(lián)網(wǎng)”項(xiàng)目時(shí),單片機(jī)的實(shí)用性便體現(xiàn)出來(lái)了——Arduino可以很容易讓你連接到真實(shí)世界,云端,或兩者。本書(shū)中,我們將重點(diǎn)介紹兩個(gè)超基礎(chǔ)項(xiàng)目以便展示Arduino可以多簡(jiǎn)單。
開(kāi)始使用Arduino在我們能夠完全了解Arduino是什么之前,知道它不是什么是很重要的。Arduino不是電腦(跟卡片電腦Raspberry Pi不一樣)。它不能被獨(dú)立編程,需要被插入到計(jì)算機(jī)中去。它不是特別強(qiáng)大,Arduino Uno只有32 KB的內(nèi)存 ,而蘋(píng)果筆記本卻平均有8G內(nèi)存。
所以為了使用Arduino,你不能只買(mǎi)這個(gè)單片機(jī)。對(duì)于以下的項(xiàng)目,你需要的是:
硬件
  • Arduino Uno. “Uno”在意大利語(yǔ)中是一的意思,但這并不是有史以來(lái)第一個(gè)Arduino,只是最基本的Arduino單片機(jī)的最新版本。這些項(xiàng)目可以工作在任何一個(gè)型號(hào)上,但這里我用的是這個(gè)型號(hào)。
  • B型USB線。我已經(jīng)很多年沒(méi)見(jiàn)過(guò)這些舊式的USB端口了,但你可能會(huì)在舊的電子設(shè)備上用過(guò)他們。他們的成本約5-10美元 (譯注:就是能連接題圖的板子上的那個(gè)大大的USB口的線)。
  • LED燈?梢灾苯诱吃贏rduino上的一個(gè)引腳上的小燈;這些往往是相當(dāng)便宜的。
軟件
  • Arduino IDE,即“集成開(kāi)發(fā)環(huán)境”,是一個(gè)免費(fèi)開(kāi)源軟件,用于開(kāi)發(fā)“sketches”,也就是Arduino用戶所說(shuō)的程序。
    當(dāng)你第一次打開(kāi)Arduino IDE,你需要建立軟件所使用的端口,它用于控制Arduino如何工作,點(diǎn)擊“工具”——>“串口”來(lái)建立。
  • 在OS X上,Uno串口的設(shè)備名叫做“/dev/tty.usbmodem”,但其他類(lèi)型的Arduino板可能不同。我的是“/dev/tty.usbmodem1421”。
  • 在Windows,串口是COM3或更高端口,因?yàn)镃OM1和COM2通常保留給其他硬件。為確定端口號(hào),你可以拔掉Arduino并重新打開(kāi)IDE菜單。哪個(gè)口子不再出現(xiàn)哪個(gè)就是你的Arduino。
    一般來(lái)說(shuō),你不用擔(dān)心直接拔出你的Arduino電路板會(huì)有什么問(wèn)題。我們知道功能齊全的電腦不應(yīng)該這樣做,包括Raspberry Pi,因?yàn)樗麄兛梢栽诤笈_(tái)運(yùn)行一個(gè)重要的操作系統(tǒng)任務(wù)。但是Arduino只是一個(gè)單片機(jī),除非你主動(dòng)讓它寫(xiě)內(nèi)存,否則它肯定是不會(huì)的。

Arduino 硬件初步: 閃爍一個(gè)LED在這第一個(gè)項(xiàng)目中,我們將概述Arduino產(chǎn)生物理輸出的最基本方式,在這個(gè)實(shí)例中,閃爍一個(gè)LED燈。
我們要去寫(xiě)一個(gè)非常簡(jiǎn)單的程序使得LED頻閃——或者是當(dāng)我自豪地向他展現(xiàn)了我的作品時(shí),我的朋友明智的告訴我,“一點(diǎn)小成果”。本程序是基于開(kāi)源項(xiàng)目Blink sketch,它可以在Arduino的官網(wǎng)找到。
首先,設(shè)置硬件,將LED的兩個(gè)腳分別插到到Arduino的公共地GND和引腳13上。
注意:如果你準(zhǔn)備將一個(gè)LED插到一個(gè)打開(kāi)電源的Arduino板子上較長(zhǎng)時(shí)間(比如超過(guò)了這個(gè)項(xiàng)目的時(shí)間),安全的做法是也接一個(gè)220歐姆的電阻。這里有一個(gè)你也許需要的接線圖,來(lái)自Arduino官網(wǎng)。

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

注意短的接GND.
現(xiàn)在讓我們開(kāi)始寫(xiě)程序。首先,讓我們給個(gè)程序的名字。Arduino會(huì)忽略行內(nèi)雙斜杠后邊的內(nèi)容,所以這是為自己寫(xiě)注釋的好方法:
  • // 程序 1: 使一個(gè)LED閃爍開(kāi)和關(guān)
當(dāng)硬件工作時(shí),我們需要告訴Arduino在它的14根不同的輸入/輸出引腳中哪兒會(huì)有信號(hào)。在這種情況下,我們固定13引腳的LED。這是我們的如何命名固定在引腳13的LED,其中“LED”只是我給的變量名:
  • int LED = 13;
每一個(gè)Arduino程序由兩部分組成:void setup() 和 void loop()。這是能夠運(yùn)行的最小的Arduino程序。
void setup()中, 我們告訴Arduino初始化引腳為輸出:
  • void setup() {
  •   pinMode(LED, OUTPUT);
  • }
void loop()中,我們告訴Arduino“寫(xiě)”一個(gè)值到引腳13中。因?yàn)槲蚁胱屗W爍,在每個(gè)循環(huán)中我們要使它寫(xiě)一個(gè)序列的四個(gè)不同命令。如“l(fā)oop”一詞的意思,直到把Arduino關(guān)掉前,我們希望它不斷執(zhí)行。
在下面的代碼中,LED代表了我們之前分配的那個(gè)變量。”HIGH”告訴Arduino給LED提供五伏的電源,而“LOW”提供零伏。在閃爍時(shí),使得它延遲“1000”毫秒每一整秒:
  • void loop() {
  •   digitalWrite(LED, HIGH);
  •   delay(1000);
  •   digitalWrite(LED, LOW);
  •   delay(1000);
  • }
當(dāng)把它們放在一起時(shí),整個(gè)程序如下(再次聲明,Arduino忽略行內(nèi)雙斜杠后邊的內(nèi)容,所以那只是你自己的注釋?zhuān)?br />
  • // 程序 1: 使一個(gè)LED閃爍開(kāi)和關(guān)
  • 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
  • }
點(diǎn)擊checkmark來(lái)驗(yàn)證你的代碼是沒(méi)有錯(cuò)誤的,然后按play鍵。如果你的Arduino已經(jīng)連接,它應(yīng)該開(kāi)始運(yùn)行你的閃爍程序了。
Arduino 軟件程序: 打印到電腦上現(xiàn)在讓我們來(lái)做一個(gè)控制開(kāi)關(guān)并試著演示Arduino是如何產(chǎn)生數(shù)字輸出的最基本項(xiàng)目。
我們將要設(shè)置Arduino “打印”,或是在您的計(jì)算機(jī)屏幕上顯示信息。這個(gè)程序基于Paul Bianchi的Arduino printing tutorial。
在這個(gè)實(shí)例中沒(méi)有硬件,這樣我們就可以直接跳到程序部分。再說(shuō)一次,程序分為兩個(gè)部分: void setup()void loop()
void setup()中,我們要打開(kāi)一個(gè)Arduino和計(jì)算機(jī)之間通信的線路,指定速率是9600b/s。如果你使用另一個(gè)速率,你可能會(huì)在計(jì)算機(jī)上得到亂碼而不是文字。
  • void setup() {
  •   Serial.begin(9600);
  • }
void loop() 中,這部分很像我們的一個(gè)LED程序。我們要給它兩條獨(dú)立的指令,告訴它在他們之間每一整秒中斷。Println是Arduino輸出到你的電腦顯示的命令。注意"Println"中的"l"的是小寫(xiě)的"L",而不是大寫(xiě)的"i"!
  • void loop() {
  •   Serial.println(“hello”);
  •   delay(1000);
  •   Serial.println(“world.”);
  •   delay(1000);
  • }
將標(biāo)題和注釋等放到一起,如下:
  • // 程序 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
  • }
驗(yàn)證你的代碼并運(yùn)行。什么都不會(huì)顯示,直到你點(diǎn)擊Arduino IDE窗口右上角的“Serial Monitor”。你應(yīng)該看到一個(gè)不停輸出的“Hello World”,一遍又一遍,直到你拔掉Arduino。你會(huì)看到它并不完美:我總是得到一些亂碼,但很快它自己就好了。

這兩個(gè)Arduino項(xiàng)目都非;,但是通過(guò)執(zhí)行他們你已經(jīng)開(kāi)始看到,可以與傳感器通信并寫(xiě)結(jié)果到您的計(jì)算機(jī)的Arduino的潛力所在。如果你把這兩個(gè)項(xiàng)目整合——例如,你可以連接一個(gè)溫度計(jì)到你的Arduino,并告訴它將溫度寫(xiě)到你的筆記本電腦,你會(huì)很快實(shí)現(xiàn)Arduino的可能性幾乎是無(wú)止境的。

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表