[教學] 認識 Arduino

探討「內嵌」以及「腳本化」這兩個主題的技術-版主XO老師(熟悉的目前是 Tcl,討論內容也會環繞在 Tcl 四周,但是本版還是歡迎其他 Scripting 語言以及任何「內嵌」技術的討論。)

版主: b80203, ghost3401, XO, maa

分享到: Facebook

[教學] 認識 Arduino

文章maa » 週五 12月 24, 2010 12:18 pm

最近終於想認真學 Arduino,我買了一些電子材料,利用下班及週末時間做實驗,
並且撰寫 Arduino 教學教材/學習筆記發表在我個人部落格裏,Arduino 的同好或對 Arduino 有興趣的朋友,
歡迎來 E-office 一起切磋交流。如果你沒聽過 Arduino,可以從底下這一篇看起:


認識 Arduino

PS:

我們這裏是資管系,原本懷疑適不適合在這邊談 Arduino,因為 Arduino 會涉及一些基本電學的知識,
好像跟我資管沒有什麼關係,昨天聽了 XO 轉述的「我們的博士到底是博士還是專士?」一席話後,
便釋除了我的疑慮。要玩 Arduino 並不需要很深厚的電學知識,只要有國中物理的基礎就夠了,
其實大部份時候也是在寫程式啊。

「讀書貴專精,專精才有能見地;讀書亦貴博廣,博廣才能有透視」,資管系旁涉電子或其它科系的知識,只有好處沒有壞處。
我想當初資管創系的由來可能也是如此,目的是為了讓學生兼具資訊以及企管的能力吧?
最後由 maa 於 週二 3月 15, 2011 2:29 pm 編輯,總共編輯了 3 次。
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:Arduino 筆記

文章maa » 週日 1月 09, 2011 10:54 pm

最後由 maa 於 週三 3月 02, 2011 11:30 am 編輯,總共編輯了 12 次。
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:Arduino 筆記

文章maa » 週日 1月 09, 2011 11:08 pm

我們輔大資工的互動媒體概論這門課,學生的反應還挺熱烈的,例如石書華這位學生對這門課的評語很好(註:石書華是我們資管系的學生!從名字看不出是學弟還是學妹,我猜應該是學妹吧 :D ):

1. What is your favorite homework?

我最喜歡的部分是鋼琴,在修這堂課前,我從來沒想過可以用程式寫出鋼琴來
但在學了arduino後,才驚覺這門課的不可思議,要不是因為按鈕不夠,
多買要多花很多錢,還真的挺想製作一個至少有三個八度的鋼琴!

2. What did you learn in this course?

因為修這堂課,才有機會接觸到processing和arduino,
加上念的是資管,所以平常就算有寫程式,也很繁雜.枯燥乏味,
不像互動媒體這樣有趣,可以立即呈現成果
還有比較特別的就是arduino的部分,接觸了平常不會碰到的硬體設備
修了這堂課後,真的覺得上課方式是"在玩樂中學習,在學習中玩樂"

3. What did you change after this course?

至於修完這堂課的改變,應該是學會寫遊戲吧
因為資管系對這方面的涉獵幾乎是零
當初也是聽系上學長推薦才來修這門課
學長們都說,真的可以學到很多東西,上課內容也很有趣
當初網路初選系統一進去,只剩下五個名額,我搶到課的瞬間
餘額也變成0,可見這堂課有多搶手
另外一點改變就是,見識到資工的同學有多厲害
期中期末作業的精緻創新,真的是我們資管的無法想像的
明年一定會繼續推薦系上的人來選這門課
不只能學到新領域的知識,也能見見外面的世界


我很贊同石書華最後這句感想:「不只能學到新領域的知識,也能見見外面的世界」

我們在專業領域深耕的時候,偶爾也要往外擴展,學學其它科系/領域的學問,將來才能把知識整合起來甚而創新。
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:[教學] 認識 Arduino

文章maa » 週二 3月 15, 2011 2:31 pm

實驗目的

練習使用紅外線動作感測器(PIR Motion Sensor),利用紅外線動作感測器來控制 LED 的開關。

紅外線動作感測器

圖檔

紅外線動作感測器(PIR Motion Sensor)或稱人體紅外線感測器,是一種可以偵測物體移動的電子裝置。
生活中很多東西都會發射紅外線,例如燈泡、蠟燭、中央空調等,其實人體也會發射紅外線,紅外線動作
感測器的原理,便是利用人體發射出來的紅外線的變化,來感應物體的移動。

全文請見:

Arduino 筆記 – Lab20 用紅外線動作感測器(PIR Motion Sensor)控制 LED 的開關
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:[教學] 認識 Arduino

文章maa » 週三 3月 16, 2011 5:56 pm

給初學者的建議:

想玩 Arduino,當然得先買張 Arduino 板子。
目前 Arduino 最新版是 2010 年出的 Ardunio UNO(如下圖一)。
其實 UNO 跟 Duemilanova 兩者沒多大差別,用 2009 年的 Arduino Duemilanove (如下圖二)也是可以的,
價格會比較便宜,不必非 Arduino UNO 不可。

在露天拍賣,Arduino UNO 一張大約是台幣 1000 元左右,而 Arduino Duemilanove 大約只要 700 多塊而已。


圖檔

圖檔
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:[教學] 認識 Arduino

文章maa » 週五 3月 18, 2011 3:22 pm

可讀寫任何資料的 EEPROM 函式

底下是一個 Arduino EEPROM Library 的使用範例,程式的邏輯是在 EEPROM 位址 5 的
地方寫入數值 99,接著再從 EEPROM 讀出剛剛寫進去的內容:

代碼: 選擇全部
#include <EEPROM.h>

int address = 5;
int value;

void setup() {
  Serial.begin(9600);

  // 在 address 5 上寫入數值 99
  EEPROM.write(address, 99);

  // 讀取 address 5 上的內容
  value = EEPROM.read(address);

  //  將 value 輸出到 Serial port
  Serial.print(value,DEC);  //  會印出 99
  Serial.print("\n");
}

void loop() {
}



EEPROM Library 只支援一個位元組(Byte)的讀寫,一次只能讀寫一個位元組。
如果要儲存的資料只有一個位元組,這是足夠的。不過,假如是一個 int (2 bytes),
long (4 bytes) 甚至是更複雜的資料結構,你就得呼叫 EEPROM Library 的函式
很多次才能把資料儲存起來,這樣很不方便。

用底下提供的函式,你就可以讀寫 EEPROM 中的任何資料,而且函式只要呼叫一次就搞定。

全文請見:

可讀寫任何資料的 EEPROM 函式
最後由 maa 於 週五 3月 18, 2011 3:37 pm 編輯,總共編輯了 1 次。
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:[教學] 認識 Arduino

文章maa » 週五 3月 18, 2011 3:26 pm

eeprom_anything 是一支 C++ 的程式,內容如下:

代碼: 選擇全部
#include "eeprom_anything.h"
#include <EEPROM.h>

template <class T> int EEPROM_writeAnything(int ee, const T& value)
{
  const byte* p = (const byte*)(const void*)&value;
  int i;
  for (i = 0; i < sizeof(value); i++)
    EEPROM.write(ee++, *p++);
  return i;
}

template <class T> int EEPROM_readAnything(int ee, T& value)
{
  byte* p = (byte*)(void*)&value;
  int i;
  for (i = 0; i < sizeof(value); i++)
    *p++ = EEPROM.read(ee++);
  return i;
}


如果你有在學 C++,這會是學習 function template 的一個很好的範例喔! :D
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:[教學] 認識 Arduino

文章maa » 週二 3月 22, 2011 5:50 pm

實驗目的

紅外線接收器簡易測試,在按下電視或其它遙控器按扭時讓 Arduino 做個反應,
讓紅外線指示燈閃爍幾下。

圖檔

材料

* 麵包板 x 1
* Arduino 主板 x 1
* 38 kHz 紅外線接收器(如 TSOP2438,TSOP4438, PNA4602, FM-8038TM2-5DN) x 1
* 單心線 x N

全文請見:

紅外線接收器簡易測試
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:[教學] 認識 Arduino

文章maa » 週三 3月 23, 2011 12:08 pm

實驗目的

練習用紅外線接收器與發射器來實作紅外線物體偵測(Infrared Object Detection)。

紅外線物體偵測

我們在「用紅外線動作感測器(PIR Motion Sensor)控制 LED 的開關」一文中提到,
紅外線感測器有分主動式和被動式兩種。紅外線動作感測器(PIR Motion Sensor)是屬於
被動式的紅外線裝置,感應器本身不會發射紅外線光束,而另一種則是會發射紅外線光束的
主動式紅外線感測器。主動式紅外線感測器常用於物體的偵測,例如自動沖水小便斗或感應
式水龍頭,還有避障自走車等。

主動式紅外線感測器大概可分為「反射型」和「遮光型」兩種。如下圖所示,所謂反射型紅外線
感測器,是把接收器與發射器並排,讓發射器不斷發出紅外線光束,當接收器收到反射過來的
光線時,表示前方有物體或障礙物:

圖檔

全文請見:

紅外線物體偵測 (1)
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:[教學] 認識 Arduino

文章maa » 週一 3月 28, 2011 9:37 pm

在上一篇的實驗中,我們完成了反射型紅外線物體偵測,接下來第二個實驗要製作遮光型的紅外線物體偵測。

先來複習一下遮光型紅外線物體偵測的原理,它的原理是把紅外線接收器與發射器安置在兩端,兩者相對,
發射器一樣不斷發出紅外線光束,當光線被遮擋時,就表示中間有物體或障礙物。底下這張是遮光型紅外線
物體偵測的示意圖:

圖檔

實驗二:遮光型紅外線物體偵測

利用紅外線遮光偵測物體,材料與接線與上一篇完全相同。唯一不一樣的地方,如前面所說的,必須把紅外線
接收器與發射器安置在兩端,讓接收器跟發射器兩者相對,如此而已。

全文請見:

紅外線物體偵測 (2)
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源

Re:[教學] 認識 Arduino

文章b80203 » 週一 3月 28, 2011 11:49 pm

最近用了空閒時間玩了一下Arduino,圓了自己想看看嵌入式的夢想~~

簡單說說一些心得~

一千大洋的板子對學生而言算不少,所以就看了學長分享的內容與程式
大約知道它的易用性,當然有學長的文章輔助,就更敢衝一衝了~~我買
的是Duemilanova這塊板子,與UNO的最大差別就是UNO不用灌USB的
driver,而且據說可以寫一些設定給UNO上的USB晶片,讓它認識板子目
前被設定為什麼功用,當然才玩一星期= =哪可能玩到這些...

以我目前學到的觀念而言,簡單的說嵌入式系統分成兩個部份,一為電路、
一為程式邏輯,電路方面說真的我還是得看圖照做,頂多基礎電路可以知
道該如何佈置...這方面我額外看了些書...一星期...依然不夠...而另一方面
就真的在寫程式了,而且還是用我最愛的c語法進行,實在超快速是入門,
目前我已經把新手教學的範本初步都玩完了...接下來...學長的blog還在等我。
當然花在零件上面的預算還是得自己控制,畢竟它不像軟體,open source
多到學不完~~

說實在的,資管系學生利用空閒時間玩玩這個其實也不錯,多點知識也多很
多的新鮮感~~教學文章就不發了...小馬學長的blog太專業...有其它心得再
上來和大家分享~~
b80203
資管系課程助教
 
文章: 189
註冊時間: 週日 10月 01, 2006 7:33 pm
來自: fju im & pe

Re:[教學] 認識 Arduino

文章maa » 週二 3月 29, 2011 9:52 am

b80203 寫:最近用了空閒時間玩了一下Arduino,圓了自己想看看嵌入式的夢想~~

簡單說說一些心得~

一千大洋的板子對學生而言算不少,所以就看了學長分享的內容與程式
大約知道它的易用性,當然有學長的文章輔助,就更敢衝一衝了~~我買
的是Duemilanova這塊板子,與UNO的最大差別就是UNO不用灌USB的
driver,而且據說可以寫一些設定給UNO上的USB晶片,讓它認識板子目
前被設定為什麼功用,當然才玩一星期= =哪可能玩到這些...

以我目前學到的觀念而言,簡單的說嵌入式系統分成兩個部份,一為電路、
一為程式邏輯,電路方面說真的我還是得看圖照做,頂多基礎電路可以知
道該如何佈置...這方面我額外看了些書...一星期...依然不夠...而另一方面
就真的在寫程式了,而且還是用我最愛的c語法進行,實在超快速是入門,
目前我已經把新手教學的範本初步都玩完了...接下來...學長的blog還在等我。
當然花在零件上面的預算還是得自己控制,畢竟它不像軟體,open source
多到學不完~~

說實在的,資管系學生利用空閒時間玩玩這個其實也不錯,多點知識也多很
多的新鮮感~~教學文章就不發了...小馬學長的blog太專業...有其它心得再
上來和大家分享~~


玩 Arduino 是需要一些硬體知識,也需要一些軟體的知識。不過,據我的觀察,
很多藝術設計系跟建築系的學生都在玩 Arduino 耶!想想看,這兩個科系的學生
既不是學硬體也不是學軟體的,他們都可以了,我們會不行嗎?

Arduino 這東西有多麼簡單,只是聽說是無法體會的,做了就知道,而且馬上會有成就感!對吧?
maa
版面管理員
 
文章: 631
註冊時間: 週一 9月 13, 2004 10:16 am
來自: 縱橫資通能源


回到 內嵌與腳本化(Embedding & Scripting)

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 0 位訪客

cron