2011年1月31日 星期一

Arduino 筆記 – Lab19 使用 5x7 LED Matrix

實驗目的

練習使用 5x7 LED Matrix (點矩陣 LED)。

LED Matrix 簡介

LED Matrix (點矩陣 LED)在日常生活很常見,在公共場所中,政府的公告或宣導經常使用 LED 字幕來展示,比如小紅人和小綠人的交通號誌、高速公路上用來提醒路況的字幕機、車站裏公告行車資訊的字幕機等;在馬路上,也可以看到很多商店的廣告跑馬燈或動畫展示,大部份也都是使用 LED Matrix 做的。LED Matrix 有很多種型式,有單色,有雙色,也有全彩的。

image

(圖片來源:  Alltronics.com)

2011年1月30日 星期日

Arduino 筆記 – Lab18 讀取 3x4 Keypad 的輸入

實驗目的

練習使用 3x4 Keypad (矩陣鍵盤, Matrix Keypad)。寫一個簡單的程式,讀取 Keypad 的輸入並列印到 Serial Port 上。

Keypad 簡介

image

(圖片來源: Sparkfun)

Keypad 是很常見的輸入介面,生活周遭中就可以看到很多用到 Keypad 的物品,例如計算機、手機、收銀機等。Keypad 有很多種型式,有 12 個按鍵的 3x4 Keypad,有 4x4 的 Keypad 等等。

2011年1月27日 星期四

Arduino 筆記 – Lab17 使用光敏電阻控制 Servo

實驗目的

練習用光敏電阻控制伺服馬達(Servo motor)。以兩顆光敏電阻做一個簡單的光源追蹤系統,當發現左邊比較亮時,就控制伺服馬達旋轉到左邊,當發現右邊比較亮時,就控制伺服馬達旋轉到右邊。

image_thumb1 image_thumb8

讀者必備知識

為了順利進行本項實驗,你必須先知道底下這些基礎知識:

2011年1月23日 星期日

Arduino 筆記 – Lab16 使用可變電阻控制伺服馬達

實驗目的

練習用可變電阻控制伺服馬達(Servo motor)的旋轉角度。

image

材料
  • 麵包板 x 1
  • Arduino 主板 x 1
  • 伺服馬達(Servo Motor) x 1
  • 10k 可變電阻 x 1
  • 單心線 x N

2011年1月22日 星期六

Google Chart API 教學

Google Chart API 簡介

Google Chart API 是 Google 提供的線上製作圖表的工具,它可以讓使用者動態產生圖表。它的使用方法很簡單,請打開瀏覽器,再將底下的網址貼到網址列:

https://chart.googleapis.com/chart?cht=p3&chd=t:60,40&chs=300x120&chl=Google|Microsoft

然後你就會看到這張圖片:

image

 

你可以把 Google Chart API 動態產生的圖表放到網頁中,只要把 URL 寫到 <img> 標籤的 src 屬性裏即可,像這樣:

2011年1月20日 星期四

Arduino 筆記 - 製作一個溫溼度記錄器 (3)

前一篇文章中,我們寫了一支 Log 程式,這支 Log 程式可以把 Arduino 傳來的溫溼度資料保存到檔案中,而且我們也用 Excel 的圖表功能繒製了溫溼度的折線圖。接下來再來做一張圖表,我們要畫「過去 24 小時溫溼度變化圖」,參考底下中央氣象局的過去24小時溫度與溼度變化圖這兩張圖,我們要製作的圖表差不多就是這個樣子。另外,這一次不再使用 Excel,我們將改用 Google Chart API 製作圖表。

image

2011年1月16日 星期日

Arduino 筆記 - 製作一個溫溼度記錄器 (2)

前一篇文章中,我們已經用 Arduino 做出了一個溫溼度計,這個溫溼度計可以在 LCD 上顯示即時的溫度與溼度,而且也會定時把溫度與溼度讀值送到 Serial Port 上,每兩秒鐘一次。接下來我們要寫一支 Log 程式,這支程式會在 PC 端上跑,它的任務是把 Arduino 送過來的溫溼度資料保存到檔案中。

Log 程式

底下就是這支 Log 程式(Log.tcl):

2011年1月15日 星期六

Arduino 筆記 - 製作一個溫溼度記錄器 (1)

介紹

如果你已經認識 Arduino,寫過一些簡單的 Arduino 程式,比如讓 LED 發光閃爍讓蜂鳴器發出聲音,你知道怎麼在 2x16 字元 LCD 上顯示資料,而且也知道怎麼使用 SHT15 溫溼計,那麼接下來的這個實驗你可能會有興趣,我們將用 Arduino 製作一個溫溼度記錄器。

這個溫溼度記錄器會有底下這些功能:

  1. 可以感測環境的溫溼度
  2. 可以在 2x16 字元 LCD 上顯示目前的溫度與溼度
  3. 可以把溫溼度資料存檔記錄起來

有件事得說明,在這個溫溼度記錄器中,第 3 項的功能得靠 PC 的幫忙,Arduino 其實只是負責收集溫溼度資料,我們得寫一支在 PC 端跑的程式把 Arduino 送過來的溫溼度資料保存到檔案中。

材料

我們需要這些材料:

2011年1月12日 星期三

使用 9V 電池對 Arduino 供電

Arduino 有兩種供電方式,一種是使用 USB Cable 連接 PC 透過 USB 供電,另一種是使用外部電源,像下圖這樣,直接使用電源變壓器對 Arduino 供電:

image 

(註:變壓器要符合規格,必須是:輸出 9~12V 直流電源,可供應 250mA 或更高的電流,電源接頭尺寸為 2.1mm)

使用外部電源,除了用電源變壓器外,也可以用 9V 電池供電,在找不到電源插座或者是需要可攜式 (portable) 帶著走的場合中,使用 9V 電池供電會更方便:

2011年1月11日 星期二

VirtualBreadBoard 簡介– Arduino 與 PICMicro 的模擬器

我想 VirtualBreadBoard(VBB, 虛擬麵包板) 可能是目前最好的 Arduino 模擬器。VBB 已經準備了一些 Arduino 範例,可以立即拿來模擬。在 VBB 裏,你可以撰寫 Arduino 的程式,畫電路,並且進行模擬。另外,VBB 也支援一堆周邊的元件,比如 LCD, Servo, 邏輯電路, Timer, EEPROM, Buzzer 等。

底下是一個結合 Arduino 與 LCD 的範例,這兩張圖分別是 VBB 的設計畫面以及其模擬的執行結果:

image

2011年1月10日 星期一

為你的麵包板原型套用紙本模板 (paper templates)

底下要介紹的這個方法,如果用在 Arduino 的教學或許會有幫助。

通常我們都是在實體麵包板上做出原型後再利用 Fritzing 以虛擬麵包板畫出電子版的原型,其實也可以反過來做。

只要載入 Fritzing 的 sketch,把它印出來,你就會得到一張紙本的模板 (paper template),你唯一要做的事,就是將把這張模板固定到實體麵包板上,然後接上實際的電子材料 (part)。

方法如下:

  • 打開隨便一張 Fritzing sketch
  • 點 File > Print (記得要關掉印表機自動縮放尺寸的功能),同時準備好電子材料

image

  • 剪下紙張的一個角落,以便對齊麵包板紙本模板與實體的麵包板

2011年1月9日 星期日

Fritzing – PCB 印刷電路板的設計工具

Fritzing 簡介

Fritzing 是一套設計 PCB (Printed Circuit Board) 印刷電路板的軟體,是特別給設計師、藝術家、研究者以及業餘玩家使用的工具。跟 ProcessingArduino 一樣,Fritzing 的開發者秉持開放、簡單與共享的精神而設計這套軟體,Fritzing 簡單好用的軟體操作介面,讓使用者即使沒有電子電機的背景也可以輕而易舉地製作出 PCB 印刷電路板的設計圖。

image
▲ 圖片來源: fritzing.org

Fritzing 是開放源碼的軟體(Open-source Software),我們可以在它的官網免費下載軟體。Fritzing 是跨平台的,有 Windows, Macintosh OSX 和 Linux 的版本。

2011年1月7日 星期五

Arduino 筆記 – Lab15 使用四位數七段顯示器製作計數器

實驗目的

使用四位數七段顯示器製作計數器,數字可以從 0000 計數到 9999。

四位數七段顯示器腳位圖

image

(圖片來源: 聯宇電子)

使用一個位數的七段顯示器的時候,如果是共陽極的,我們將共陽腳位接到電壓源 (Vdd),如果是共陰極的,我們將共陰腳位接到 GND。在使用多位數的七段顯示器時 (兩位數或四位數甚至更多位數),共陽或共陰的腳位是用來控制要顯示哪個位數。

跟電影攝影機的運作原理一樣,基於視覺暫留(Persistence of Vision)的原理,同一個時間只有一個數字是作用中的,因為電子掃瞄速度很快,肉眼便察覺不出來,人們就會以為七段顯示器上的所有數字都是同時顯示的。這個方法稱為多工(Multiplexing)。

2011年1月5日 星期三

整合 MPLAB 與 Swordfish Basic Compiler

本文簡單說明如何整合 MPLAB 與 Swordfish,讓習慣使用 MPLAB IDE 的人可以在 MPAB 環境裏開發 Swordfish 的程式。

整合 MPLAB 與 Swordfish

首先,必須確定 Swordfish 執行檔的路徑,例如:

Swordfish 版本 範例路徑
特別版本 (Special Edition C:\Program Files\Mecanique\SwordfishSE\SESwordfish.exe
商業版本 C:\Program Files\Mecanique\Swordfish\Swordfish.exe

接著,你得找出 SFBasic.mtc 和 TLSBasic.ini 這兩個檔並複製一份,這兩個檔位於 MPLAB 子資料夾下,例如:

Swordfish – A Basic Compiler for PIC18

Swordfish 簡介

Swordfish 是一個專門給 PIC18 family 使用的 Basic Compiler,它可以產生經過最佳化而且可以直接燒錄到微控制器的韌體檔。對於習慣使用 Basic 語言的人來說,Swordfish 提供了另一個進入 PIC18 微控制器世界的途徑。

Swordfish 有一個功能強大且彈性的整合開發環境(IDE, Integrated Development Environment ),只要在 Swordfish IDE 上點一下滑鼠或是按個快速鍵,Swordfish 就會自動編譯程式並將你的專案燒錄到目標微控制器上(target microcontroller)。下圖是 Swordfish IDE 的介面:

dokuwiki 的編輯工具列(toolbar)在 chrome 上顯示不出來

我用的 Chrome 瀏覽器版本是 5.0.375.127,最近在編輯 Dokuwiki 的頁面時,才發現 Dokuwiki 編輯工具列( toolbar) 在 chrome 上顯示不出來:

image

而在 IE 上編輯工具列的顯示是正常的:

image

網路上有人論及這個問題,有位叫 guss77 的網友知道原因,他說 Dokuwiki 的 code 使用 media 當作變數名稱,media 這個變數跟 Chrome 內部的物件產生衝突,因而導致 Dokuwiki 的 toolbar 在 chrome 上顯示不出來。好心的 guss77 提供了一個解法:

編輯 Dokuwiki 的 lib/scripts/media.js,把程式碼中所有的 media 改成 mediam (或者是其它適當的變數名稱)。然後請使用者做一件事,在編輯 Dokuwiki 頁面時,按一下 Ctrl+F5 鍵或 Shift + F5 鍵讓 Chrome 瀏覽器重新整理頁面,此後即可正常使用。

照著這個方法做,確實解決了問題。

參考資料:

2011年1月4日 星期二

Arduino 筆記 – Lab14 使用 74HC595 控制 HD44780 相容 LCD

實驗目的

練習以 74HC595 移位暫存器控制 HD44780 相容的文字型 LCD(Liquid Crystal Display),在 2x16 LCD 上顯示 "Hello World” 訊息。

本實驗假設你已做過「Lab9 在 2x16 LCD 上顯示 "Hello World" 訊息」以及「Lab11 使用 74HC595 和三支腳位控制 8 顆 LED」兩個實驗。

74HC595 腳位圖表

74HC595 移位暫存器可用來擴充微控制器的腳位,它可以同時控制八個輸出。74HC595 的介紹不在本文範圍內,請自行參考「Lab11 使用 74HC595 和三支腳位控制 8 顆 LED」。

74HC595 的腳位圖表如下:

2011年1月1日 星期六

Arduino 筆記 – Lab13 使用 74HC595 與七段顯示器製作倒數功能

實驗目的

重新改寫「Lab7 使用七段顯示器製作倒數功能」,以 74HC595 移位暫存器控制一顆七段顯示器,在七段顯示器上依序顯示從 9 到 0 的數字,製作數字倒數的效果。

註:本實驗假設你做過「Lab7 使用七段顯示器製作倒數功能」和「Lab11 使用 74HC595 和三支腳位控制 8 顆 LED」,已經知道七段顯示器的原理與單獨一顆 74HC595 的使用辦法。

七段顯示器與 74HC595 腳位圖表

七段顯示器腳位圖表如下(下圖為共陰極七段顯示器):