Arduino Basic (3) – Click Click Click

Click Click Click

如果一個單晶片的系統只做 LED 顯示,未免也太單調了些。在這一節中,我們將教你如何讓 Arduino UNO 讀取外部按鍵的狀態,然後變更 LED 的閃爍速度。

事前準備

  • Arduino UNO
  • 麵包板
  • 按鈕 x1
  • LED x5
  • 220歐姆電阻 x5

LED 控制

上一節我們只是讓 LED 在固定的時間內亮起、滅掉,或者是讓一整排的 LED 能夠個別點亮或滅掉,而當你要改變閃爍速度或亮滅順序的時候,你就必須要重新撰寫一次程式碼、編譯然後燒錄到 Arduino 中。

這樣的過程其實一點也不有趣,如果我們能夠靠按下一個或多個按鈕來讓閃爍速度改變或讓 LED 跑馬燈的順序改變,那應該會有去得多對吧?

這一節將告訴你,如何讓 Arduino 能夠讀取按鈕按下的動作,並且讓上述的功能實現!

基本語法

與點亮 LED 時相同,我們必須要在程式中定義腳位資訊,讓 Arduino 知道哪個腳位是做什麼,而因為按鈕是屬於輸入,因此在 setup() 中我們必須加入這行程式碼:

如此一來便能使那個腳位作為輸入來讀取,但這樣還不夠,我們只是使腳位能夠讀取輸入訊號罷了,但在程式中並無法直接讀取,我們必須要用一個變數來接收讀取到的值,如:

如此,當你按下按鈕時,變數 input 便會變成 1(或0,根據電路),有了這個變數,我們便可以在程式中做更多的流程控制。

一鍵開關 LED

是否看過許多用一個按鍵就能開關的電器呢?我們將來實作這一個功能,來幫助你理解這 digitalRead(腳位) 的使用方式。

硬體接線

程式碼

LED 變速閃爍

在這個範例程式中,我們將按鈕的輸入腳位設定在 Arduino UNO 的第 2 隻腳,然後使用板子上的 LED 來顯示我們的結果。

當程式燒錄到 Arduino 後,你會看到 LED 以大約每秒一次的頻率閃爍,這時你可以按下按鈕,應會看到 LED 加速閃爍。

硬體接線

程式碼

改變 LED 跑馬燈方向

還記得上一節的 LED 跑馬燈嗎,現在我們可以靠一個按鈕就讓它改變方向囉!

硬體接線

程式碼

Arduino Basic 相關文章

Arduino Basic (2) – Hello World

Hello World

這部分我們開始進入正式的課程內容,首先從硬體版的 Hello World 開始。

事前準備

  • Arduino UNO
  • 麵包板
  • LED 若干

Arduino UNO

Arduino UNO 是 Arduino 系列中最常被拿來做實驗與開發的板子,它具有便宜、輕便、資源多、模組多等特色,因此非常建議作為 Arduino 的新手入門選擇。

Arduino UNO

核心晶片為 ATmega328p,其細節規格如下表:

項目 規格
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limit) 6-20V
Digital I/O Pins 14 (of which 6 provide PWM output)
PWM Digital I/O Pins 6
Analog Input Pins 6
DC Current per I/O Pin 20 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 32 KB (ATmega328P)of which 0.5 KB used by bootloader
SRAM 2 KB (ATmega328P)
EEPROM 1 KB (ATmega328P)
Clock Speed 16 MHz
Length 68.6 mm
Width 53.4 mm
Weight 25 g

話說我每次看到這規格,都會對那 32KB 的 Flash Memory 大為驚嘆啊!

接下來我們進入這次文章的正題,Hello, World!

點亮 LED

嵌入式系統的 Hello World 通常都是用 LED 來做,這有兩個意義,第一是證明程式能夠執行,第二是測試嵌入式系統的晶片是否正常。看似無聊,涵義卻如此之深的 LED。

程式碼

如果板子上的 LED 不會亮,有可能是你沒燒錄成功,也有可能是板子損毀,但通常都是程式沒燒好或者是燒錄出問題。

LED 閃爍

在這個範例中我們嘗試讓 LED 閃爍起來,大約每秒鐘會閃爍一次。

程式碼

LED 閃爍之二

慢慢地閃看起來很無聊對吧? 我們來點有趣的。如同警示燈一樣,閃兩下便停一段時間,然後再繼續閃。

程式碼

如果你是初次接觸程式語言,看到 for 迴圈不是很了解是什麼的話,你可以參考這篇文章:程式設計迴圈之章,for。

這星期的內容就到此結束,是否覺得只控制一顆 LED 很無聊呢? 下一回我們將控制更多的 LED,嘗試更多的變化。

Arduino Basic (1) – Wiring Framwork

Wiring Framwork

Arduino 所採用的是一個稱作 Wiring 的架構所設計的程式設計流程,他拿掉 main() 這個制式的主程式進入點,改由 setup() 以及 loop() 來取代。

據說這樣可以更容易理解整個程式的運作,並且提高可閱讀性。現在就讓我們一起來看看這是什麼樣的架構吧~

繼續閱讀 “Arduino Basic (1) – Wiring Framwork”

Beaglebone Black – 開啟 GPIO 上的 UART 接腳

UART Cape

Beaglebone Black 有 4.5 個 UART 接腳可供使用,但預設的情況下為關閉的狀態。也就是說,你無法透過這些腳位來正常的接收資料,就算你透過一些軟體的方式來強制運行,他還是會自動關閉連線狀態,導致連接不穩。為什麼我知道這些呢? 因為我最近在測試的時候發現有這樣的狀況,拜讀過 Google 大神的幾篇資料後才得以解決。這搞了我好幾天啊啊啊!

繼續閱讀 “Beaglebone Black – 開啟 GPIO 上的 UART 接腳”

如何設定 Beaglebone Black 透過 USB 的網路連線?

Beaglebone Black

不久之前我曾經在 FaceBook 的粉絲頁中貼過 Beaglebone Black 這個類似於 Raspberry Pi 單板電腦的電子書,然而,我在 Single.9 中幾乎沒有寫過他的介紹文章,主要更新都在那本電子書比較多。

Beaglebone Black 有一個相當方便的特色,除了他隨機附上的作業系統外,他與電腦之間的聯繫也非常簡單只要透過一條 USB 線就可以連上 Beaglebone Black ,並且開始操作與使用他。

這有點類似於手機的 USB 網路分享功能,只不過在未設定的情況下只限於 Beaglebone Black 與 PC 之間的聯繫,而無法連上其他外部網站。

這篇文章正是要教你如何讓 Beaglebone Black 可以連上其他網站。

繼續閱讀 “如何設定 Beaglebone Black 透過 USB 的網路連線?”

APC 行動電源讓你的行動裝置不斷電!

APC 行動電源

APC 是一間以電腦不斷電系統(UPS)為名的公司,但最近他們也想讓你的智慧型手機、平板電電腦也有不斷電系統能用。是的,就是現在在市面上相當常見的行動電源!

繼續閱讀 “APC 行動電源讓你的行動裝置不斷電!”

mbed 基礎教學實驗 – 藍芽模組

藍芽是目前非常普遍的一種無線通訊技術,在許多資訊設備都能找到他的蹤影,而目前幾乎所有的智慧型裝置以及筆記型電腦都有配備這樣的無線通訊設備,這對於許多無線控制的應用是一個非常友善的環境。

本篇文章將會為各位介紹 mbed LPC1768 如何使用藍芽模組來與電腦通訊。

繼續閱讀 “mbed 基礎教學實驗 – 藍芽模組”

mbed 基礎教學實驗 – UART / RS232

mbed 基礎教學實驗 UART RS232

UART 是一種常見的有線通訊方式,幾乎所有的電腦相關設備都支援這個通訊方式,他透過最少三條訊號線:發射、接收、地線,來進行設備之間的資料交換與通訊。或許你對 UART 這名稱較不熟悉,他還有另一個名稱:RS232 串列通訊。

繼續閱讀 “mbed 基礎教學實驗 – UART / RS232”