2010年12月31日 星期五

Arduino 筆記 – Lab12 使用兩顆 74HC595 和三支腳位控制 16 顆 LED

實驗目的

練習串接 74HC595 移位暫存器 (Shift Register) 以擴充 Arduino 的 I/O 腳位,使用 Arduino 三支接腳搭配兩顆 74HC595 移位暫存器控制 16 顆 LED 燈。

註:本實驗假設你做過「Lab11 使用 74HC595 和三支腳位控制 8 顆 LED」,已經知道單獨一顆 74HC595 的使用辦法。

74HC595 串接簡介

image_thumb10

(圖片來源: SparkFun)

74HC595 是一顆八位元的移位暫存器,同時可以控制八個輸出,我們可以把多顆移位暫存器串接 (Daisy chain) 在一起以擴充腳位,例如: 如果串接兩顆 74HC595 移位暫存器,便可以同時控制 16 個輸出。

Arduino 筆記 – Lab11 使用 74HC595 和三支腳位控制 8 顆 LED

實驗目的

練習以 74HC595 移位暫存器 (Shift Register) 擴充 Arduino 的 I/O 腳位,使用三支接腳搭配 74HC595 移位暫存器控制八顆 LED 燈。

74HC595 簡介

當微控制器腳位不夠用的時候,你就需要移位暫存器 (shift register) 來擴充微控制器的腳位。底下簡介 74HC595 這顆移位暫存器:

image

(圖片來源: SparkFun)

74HC595 移位暫存器 (Shift Register) 是一顆八位元 (8-bit) 序列輸入 (serial-in)、序列或是並列輸出 (serial/parallel-out) 的移位暫存器,使用這顆晶片,你只需要微控制器上的三支接腳,就可以同時控制八個輸出。

2010年12月30日 星期四

Arduino 筆記 – Lab10 使用 SHT15 溫溼度計

實驗目的

練習使用 SHT15 溫溼度計,將讀到的溫溼度讀值輸出到 Serial Port 上。下圖為 SHT15 模組的外觀:

image image
材料
  • 麵包板 x 1
  • Arduino 主板 x 1
  • SHT15 Breakout Board (分接板) x 1
  • 單心線 x N

2010年12月26日 星期日

Arduino 筆記 – Lab9 在 2x16 LCD 上顯示 "Hello World" 訊息

實驗目的

練習使用 HD44780 相容的文字型 LCD(Liquid crystal display),在 2x16 LCD 上顯示 "Hello World” 訊息。

2x16 LCD 簡介

image

(圖片來源: arduino.cc)

HD44780 相容的 2x16 LCD 可以顯示兩行訊息,每行 16 個字元,它可以顯示英文字母、希臘字母、標點符號以及數學符號,除了顯示訊息外,它還有其它功能,包括訊息捲動(往左和往右捲動)、顯示游標和 LED背光等。

Arduino 筆記 – EEPROM Library 使用簡介

EEPROM 簡介

EEPROM(Electrically Erasable Programmable ROM) 是既可讀又可寫的一塊特殊的記憶體,它跟 RAM 不一樣,它的內容是永久保存的,寫入的資料,即使在電源關閉之後還是保存在 EEPROM 裏,下次電源重開的時候仍然可以把它讀出拿來使用。

EEPROM 通常用來保存程式的設定值。舉個例子,如果你設計了一個電子鎖或警報器,讓使用者可以設定與輸入密碼會是個好點子,不過如果每次關閉電源後密碼就不見,那可就不好玩了,理想的解決辦法是使用 EEPROM 把密碼保存起來。

Arduino EEPROM Library

Arduino 板子上的微控制器都內建了 EEPROM,Arduino 提供了 EEPROM Library 讓讀寫 EEPROM 這件事變得很簡單。EEPROM Library 只有兩個函式,簡單說明如下:

2010年12月25日 星期六

Arduino 筆記 – Lab8 使用光敏電阻控制 LED 的開關

實驗目的

利用光敏電阻做一個 LED 的自動開關,在光線不足時,自動打開 LED 燈,反之,光線充足時便關掉 LED 燈。

image

材料
  • 麵包板 x 1
  • Arduino 主板 x 1
  • 光敏電阻(photocell) x 1
  • 220 ohm 電阻 x 1
  • 10k ohm 電阻 x 1
  • 單心線 x N
接線
  • 光敏電阻一支腳接到 5V,另一支腳串接一顆 10k 電阻接到 analog pin 2
  • LED 接到 pin9 和 GND,長腳(陽極)串接一顆 220 ohm 電阻到 pin9,短腳(陰極)直接接到 GND

2010年12月24日 星期五

Arduino 筆記 – Lab7 使用七段顯示器製作倒數功能

實驗目的

控制一顆七段顯示器,在七段顯示器上依序顯示從 9 到 0 的數字,製作數字倒數的效果。

七段顯示器簡介

七段顯示器是用來顯示數字的常用電子元件,在很多地方都可以看到它的身影,例如電子時鐘、溫度顯示器和各種儀表。它外型如下圖,背面一共有10 支接腳:

image image

Arduino 筆記 – Lab6 控制蜂鳴器發聲

實驗目的
控制蜂鳴器發聲,讓蜂鳴器發出中音 Do(523Hz), Re (587Hz), Mi(659Hz), Fa(698Hz), So(784Hz), La(880Hz), Si(988Hz) 到高音 Do (1047Hz) 這八個不同音階的聲音,每個音階響 0.5 秒鐘。
材料
  • Arduino 主板 x 1
  • 8 歐姆蜂鳴器 x 1
  • 單心線 x n
接線
把蜂鳴器接到 Arduino 板子上,紅線(正極)接到 pin8,黑線(負極)接到 GND,如下圖:

Arduino 筆記 – Lab5 LED Bar Graph

實驗目的

控制 LED 燈排 (LED Bar Graph),製作出類似「霹靂遊俠」影集中「夥計」車頭 LED 燈排的掃瞄效果。LED Bar Graph 適合當作電池電量或音量之類的指示燈,其外觀如下:

image

材料
  • 麵包板 x 1
  • Arduino 主板 x 1
  • LED bar garph x 1 或是 LED x 10
  • 220 ohm 電阻 x 10
  • 單心線 x N

2010年12月23日 星期四

Arduino 筆記 - Lab4 使用可變電阻調光

實驗目的
使用可變電阻 (potentiometer) 控制 LED 的燈光亮度,達到調光的目的。
材料
  • 麵包板 x 1
  • Arduino 主板 x 1
  • LED x 1
  • 220 ohm 電阻 x 1
  • 可變電阻 x 1
  • 單心線 x N
接線
  • LED 接到 pin9 和 GND,長腳(陽極)串接一顆 220 ohm 電阻到 pin9,短腳(陰極)直接接到 GND
  • 可變電阻中間腳位接到類比輸入(Analog Input) pin3,剩下的兩支腳位,一支接到 5V,另外一支接到 GND

2010年12月22日 星期三

Arduino 筆記 - Lab3 控制 LED 燈光亮度

實驗目的

利用 PWM (Pulse Width Modulation, 脈衝寬度調變) 控制 LED 燈光亮度。

材料
  • Arduino 主板 x 1
  • LED x 1
  • 220 ohm 電阻 x 1
  • 單心線 x N
接線
  • LED 接到 pin9 和 GND,長腳(陽極)串接一顆 220 ohm 電阻到 pin9,短腳(陰極)直接接到 GND

2010年12月21日 星期二

Arduino 筆記 - Lab2 使用按鍵控制 LED 燈號

實驗目的
使用按鍵 (PushButton)控制 LED 燈號的開關,當按鍵被按下時打開 LED 燈號,按鍵放開時關閉 LED 燈號。
材料
  • Arduino 主板 x 1
  • LED x 1
  • PushButton 或 Switch 開關 x 1
  • 10K 電阻 x 1
  • 麵包板 x 1
  • 單心線 x N
接線
  1. 把 LED 接到 pin13,長腳(陽極)接到 pin13,短腳(陰極)接到 GND
  2. PushButton 一支腳接到 +5V
  3. pin2 接到 Pushbutton 的另一支腳,同一支腳位接一個 10K 電阻連到 GND

Arduino 筆記 - Lab1 Blinking a LED

實驗目的
讓一顆燈號閃爍,每隔一秒切換一次燈號。
材料
  • Arduino 主板 x 1
  • LED x 1
接線
把 LED 接到 Arduino 板子上,LED 長腳(陽極)接到 pin13,短腳(陰極)接到 GND,如下圖:

2010年12月20日 星期一

Arduino 筆記 - 準備開發環境

取得 Arduino 板子與 USB 傳輸線
首先,你必須先準備一張 Arduino 板子與一條 USB 傳輸線:
image image
要購買 Arduino 板子,可以到國外網站 http://www.sparkfun.com 購買,或是到 Arduino.TW 樂園藝科資訊商城或者是露天拍賣這幾個台灣網站購買。Arduino 的板子有很多種版本,用 Arduino Uno, Arduino Duemilanove 或是 Diecimila 都可以,一張板子大約 30 塊美金左右。

2010年12月19日 星期日

Arduino 筆記 – 認識 Arduino

什麼是 Arduino?它的特色為何?可以拿來做什麼應用?本文將回答這些基本的問題,帶你認識 Arduino。

分享一個 Arduino 教學心得:學習 Arduino 最好的方法,就是買張 Arduino 控制板和一些電子零件,捲起袖子實際動手做,唯有如此,才能夠真正體驗 Arduino。所以,本文不會花太多的篇幅在文字上作描述,將很快速的介紹 Arduino,讓你在最短的時間內認識 Arduino。

什麼是 Arduino

如下圖,Arduino 是一張微控制器板子(microcontroller board),大約一個手掌大。

image

2010年12月16日 星期四

Modkit, 一個 Arduino 的圖形化編程環境

受到 Scratch 的啟發,Ed Baafi and Collin Reisdorf 建立了 Modkit 計劃。Modkit 是一個 Arduino 專用的 Web-based 的圖形化編程環境(A graphical programming environment for Arduino),所謂圖形化編程,指的是幾乎不用敲鍵盤打字,只要用滑鼠拖拉就可以完成一支程式。

底下是 Modkit 的介紹影片,教你怎麼撰寫 Hello World 等級的入門程式 "A Blinking LED”,這支程式有 for 迴圈,也用到了 digitalWrite(), delay() 函式。仔細看!這支程式真的只用滑鼠就搞定了。

2010年12月5日 星期日

Proteus 電路模擬軟體簡介

Proteus 是一套混合電路模擬軟體(mixed mode SPICE circuit simulation),Proteus 它可以模擬 Microcontroller、電路以及 LCD, Potentiometer, Ethernet Chip 等各種周邊元件,開發者可以直接把 Micronctroller 的程式載入到 Proteus 環境裏執行,並且跟畫面上的周邊元件互動。Proteus 可以模擬 PIC, 8051, MSP430, AVR, HC11, ARM7/LPC2000 和 Basic Stamp 等多款 Microcontrollers。

下圖是 Microchip PICDEM2 Evaluation Board 的模擬電路,這張電路包含了 PIC18F452, Alpha LCD, TC74 Temp Sensor, 24LC256 I2C EEPROM, RS232 Terminal 與 button, ports, LEDs 等各種元件:

clip_image002

Proteus 模擬環境不只可以跑程式,還可以做到 Source Level Debug:

clip_image001

個人看法,Proteus 很適合 Product Prototyping 與當作學習各種 Microcontroller 平台的教學工具。

MPLAB 與 Proteus 聯姻

MPLAB IDE 裏有一個叫作 MPLAB SIM 的軟體模擬器,許多人利用它來協助程式除錯。MPLAB SIM可以做到單步執行(Single stepping)、設定 breakpoint、利用 __DEBUG variable 與 fprintf 在視窗列印除錯訊息,還有一個最重要的特色是,MPLAB SIM 可以利用 Stopwatch 視窗測量程式執行的時間。底下是 MPLAB SIM 的一個執行畫面:

image
(圖片來源:Microchip Taiwan –MPLAB IDE Workshop)

2010年6月26日 星期六

認識 Linux 與 Contiki 的鏈結串列

我做了一份介紹 Linux Kernel 與 Contiki 的鏈結串列的簡報,下載連結在此:Linux 與 Contiki 的鏈結串列

2010年2月3日 星期三

紅外線遙控電視機 (NEC IR)

Introduction

本文示範紅外線遙控電視機。我電視機用的是 NEC IR Protocol。看完本文後,你將學會用紅外線遙控講 NEC IR Protocol 的各種家電設備,比如 VCR, DVD Player, 投影機、音響等。

Highlights

  • 材料 (Parts List)
  • 接線 (Wiring)
  • 範例程式

材料 (Parts List)

Name Photo
Arduino Duemilanove x 1 
image
OSE-8L Infrared Emitter LED x 1 image
36Ω 電阻 x 1  
電晶體 x 1 (2n7002 mosfet)  

接線 (Wiring)

2010年1月28日 星期四

紅外線遙控原理與 NEC IR Protocol

Introduction

本文介紹紅外線遙控原理與 NEC IR Protocol。

Highlights

本文討論下列項目:

  • 紅外線遙控原理
  • NEC IR Protocol

紅外線遙控原理

紅外線是目前最常見的一種無線通訊,普遍使用在家電以及玩具產品,如電視、音響、錄放影機、冷氣機、DVD、MP3 Player、遙控車等。紅外線遙控之所以被大量採使用,主要是因為紅外線裝置體積小、成本低、耗電少及硬體設計容易。下圖是紅外線發射器 (Transmitter 或稱 IR LED) 和接收器 (Receiver) 常見外觀,一般來說,紅外線遙控系統由發射器和接收器這兩部份組成。

2010年1月23日 星期六

Microsoft Project 時幅顯示的日期快了一年

問題說明

我在安排工作計劃,使用 Microsoft Project 這支工具。我用的版本是 Microsoft Project 2003。在畫甘特圖的時候,Microsoft Project 時幅顯示的日期總是快了一年,現在是 2010 年 1 月 23 日 ,它卻顯示 2011 年:

image

我想這可能與會計年度有關,Microsoft Project 時幅上顯示的大概是會計年度的結束日期,因此快了一年。

解決辦法

  • 點【工具>選項(Q)…】打開選項視窗
  • 切到行事曆 Tab,把「會計年度開始於(F):」改為一月以外的月份,例如二月:

image

設定完成之後,時幅顯示的日期立即變成當下的日期:

image

參考資料

2010年1月14日 星期四

ZigBee Overview

我做了一份 ZigBee 的簡報,可以在這個鏈結中取得:ZigBee Overview。請注意!資料未必盡然正確,請保持懷疑的精神。