2015年10月14日 星期三

教學文章計劃重啟

幾年沒來看這裡,發現很多人有來留言過,很抱歉真的沒看到,這個網誌已經荒廢一陣子了,許久以來其實不斷有更新教學的內容,但說實在的沒那麼多功夫把內容再次轉成網頁文章,所以很少再更新這裡。

一方面開始自己想整理一下內容,好讓自己可以有個地方有點系統的整理資料,另一方面是除了Arduino,很多新的互動技術部份教材這幾年也默默寫了很多,想再次系統化,所以會開始把這裡增添更多類別的教學文章,這裡會是比較有系統攥寫教學內容,而我自己另外一個blog: http://rainage.blogspot.tw,則會開始記錄一些比較實驗中的技術,或是在做案子時途中嘗試的心得。

2012年3月1日 星期四

MODKIT- 圖型化的Arduio開發介面


適合喜愛圖型化介面,以及不喜歡背語法的人,試用了一下,相當的不錯用,只是要能宣告變數,得花點小錢加入會員。

2010年8月31日 星期二

Super Simple Arduino - Sylvia's Super-Awesome Maker Show: Episode 03



以後上課都不用講了,直接撥這段影片就能混過第一堂的簡介了

2009年10月9日 星期五

[公告] 內容變更預告

因應Arduino Software 0017已大幅修正Example內的範例程式

未來新版的教學內容,將開始修正,採用新版之範例檔案路徑

但原2009交大教學課程之範例路徑將維持不變(即範例程式標有File > Sketchbooks > Example > ... 之類的路徑),程將保持為更新前的範例路徑,未來會於原教學課程標明新版之對應檔案。

2009年5月18日 星期一

邁向互動達人的第五堂課. 大雜匯

Melody

學了那麼多,來讓Arduino發個聲



程式檔:make_sound.pde









#Make a Light Theremin







利用光敏來做個Theremin的小雛形

程式檔:Theremin.pde







那怎麼讓它能夠發出節奏或音階勒?再來個小練習

程式檔:PlayMelody.pde















不小心答應要教的東西:LED Matrix

這個案例請有心理準備,接線有點繁複
我們使用5x7的LED矩陣,這顆LED矩陣是5pin負,7pin正

可以看到,這種市售的LED的pin腳都比較雜亂,不像我們之前用的LED單純就只分兩邊
所以開始我們的接線地獄:



接好後,我們用個小程式來測試測試,看看接的有沒有問題,這個程式會依序一個一個亮燈
程式檔:LEDmatrix_test.pde










那怎麼像我們之前一樣可以顯示圖形勒?

我們回過頭來講一下LED矩陣的概念,我們透過一個正pin接一個負pin可以精準地讓一個點亮燈,然而,若同時用一個正pin五個負pin,會發生什麼是勒?試試看



接下來,讓我們來實作小"紅"人!!
程式檔:LEDmatrix_5x7.pde

2009年5月11日 星期一

邁向互動達人的第四堂課. Motor

Motors


在我們生活的周遭,馬達的應用可說是無所不在:
震動:PS2手把. 手機. 按摩器.
轉動:鐵捲門. 歐拖拜. 電風扇
生電:發電機








#DC motor


DC馬達的接法其實很簡單,就是知道吃多少電,然後把電池接上去就會轉,而反接就反轉



然而,這樣的話我們就不用在這裡教了,當然要用Arduino去控制,還需要多做些什麼...
大家可以先試試看,直接用Arduino的Digital out去控制馬達,看看會發生什麼事?


程式檔:director_motor.pde


當然,我們使用小馬達時,這樣做是沒什麼問題(但有時馬達會把Arduino的電給吃了),但若我們開始要控制更大的馬達,例如9V或12V,甚至更大顆的,就不可能直接用arduino提供電力,因為Arduino最多也只能提供5V的電力,我們該怎麼做勒?










我們需要用電晶體來幫助我們做更多事情...

這裡使用NPN型TIP120這顆電晶體,電晶體的三隻腳分基極(base).集極(collector).射極(emitter),電晶體最常被拿來做電路控制的開關使用,可以看到電路是由集極->射極,平常是斷路的,而經由基極給的訊號來決定開關,LOW就斷路,HIGH就開通,就是這麼簡單。











這樣就可以應用在電路上作為使用
左邊的是小電流電路(即Arduino自我供電用),而右邊的則是大電流電路使用(即需外部供電的馬達所使用的電路)



然而,之前也講過,馬達是可以被當來做發電使用,將轉動的能量透過磁力轉化成電力,越大的馬達在轉動時,越有可能產生電能,會有電流逆流的問題產生,使得我們的控制電路會有短路的可能,所以我們得加上個二極體,讓有可能產生的電力回去給馬達使用。









# 中場練習

利用可變電阻,用Arduino讀取變動值,來控制馬達轉動



更進一步,可以用Serial port來控制
程式檔:SerialMotorSpeed.pde




來看看用馬達做的小東西:








#Sevor motor




伺服馬達跟DC馬達比較不同,DC馬達是供電就不停地轉動,而伺服馬達是透過PWM訊號供給的時間長短來決定,而伺服馬達有分兩種:
(1) 360度不停轉的,會依照PWM時間長短,決定轉動快慢與轉動方向
(2) 定角度的,會依照PWM時間長短,在0~180度角間,精準地控制要擺到那個角度


這裡我們用定角度的,來簡單說明原理:

可以看見,根據你送的時間就可以決定你要轉到那個地方,而這就是伺服馬達誘人的地方,不需太多額外的機構,可以輕鬆處理你想做的效果。

[接線]
喔,這裡得提一下,坊間買得到的伺服馬達會有兩種顏色配對的接線:
(紅.黑.白)~ 對應 V+. GND . 訊號pin
(紅.棕.橘)~ 對應 V+. GND . 訊號pin

理解了,我們就可以來運用一下,把V+.GND先接上,訊號pin接到Arduino pin 9
程式檔:File > Sketchbooks > Example > Library-Servo > Sweep

這個範例的控制細節,Servo.h這個Library都幫你把麻煩的部份處理好了,只需作事先呼叫Servo類別的變數,例如myservo,再attach(pin)指定用那個pin(注意,這個lib只供給9跟10兩個PWM輸出pin的使用),然後作myservo.write(角度),就可以控制啦。

然而,我們課堂使用的servo馬達,這顆GWServo S35/STD 的360度轉的,會有部分電流逆衝的問題,需要增加一顆二極體於pin9->訊號pin之間,讓電流只能由單向通過,來減少板子因逆衝而暫停的可能。




在學習完基本的馬達控制後,可以到flying-pig的網站裡(首頁右下角有個Mechanisms的連結,或直接點上面圖片link過去),裡面整理了各種機構設計的基本觀念,可以用在你的裝置實作上面。

2009年5月4日 星期一

邁向互動達人的第三堂課. Communication

之前的課程都是僅僅透過Arduino與電路做操作,今天我們要開始嘗試把Arduino跟電腦連起來,把電腦當做Arduino的擴充裝備,可以做更多的應用。

Arduino v.s. Computer


#ex1. Arduino ➝ Computer

程式檔:ardrino2computer.pde

我們可以先用Arduino Software提供的Serial Monitor來先測試Arduino板子端是否運作正確。


語法~ Serial.begin(speed) Serial.println(val)


#How about Processing?


那我們現在試著用Processing來串串看Arduino,先試著下面這個最簡單的processing範例~
程式檔: 「Processing」SimpleRead.pde









p.s. 在Arduino中的print指令送到其他介面時,需要注意一下~
print:
Prints data to the serial port.
單純的你寫什麼就送什麼...

println:
Prints a data to the serial port, followed by a carriage return character(ASCII 13, or '\r') and a newline character (ASCII 10, or '\n'). This command takes the same forms as Serial.print().
就是在你要送出的資料(字串或數字)後,自動再加上ASCII 13(return)與10(換行)。

所以隨之就有該注意的地方產生,若在接收端的處理是必須有個結束字元時,就得注意該用哪種方法。









#ex2. Computer ➝ Arduino
接下來,我們來嘗試由電腦端來控制Arduino做事情

程式檔:computer2arduino.pde
語法~ Serial.available() Serial.read()


先試試由Arduino Software的Serial Monitor中,直接輸入H/L,來控制看看

#How about Processing?


再試著用Processing來串串看Arduino,先試著下面這個最簡單的processing範例~
程式檔: 「Processing」Control_LED.pde










#中場練習
問題來啦!! 試著用電腦來控制三個LED燈,可以做到 全亮.1號燈.2號燈.3號燈.全暗,讓自己學會掌握硬體端的電路跟接收程式,以及軟體端的控制程式

---
參考解答範例
程式檔:
「Arduino 端」Serial_3LED.pde 「Processing 端」Control_3LED.pde
提供的Processing範例是利用滑鼠由左到右,控制「無」.「1」.「2」.「3」.「全亮」

[小提醒] Serial 訊號最好要隔一段時間送,別讓他瘋狂傳送,不然有時會錯亂...