2015年3月6日 星期五

Arduino 作品參考(寫時間機器人)

★給初學者的Arduino+ArduBlock的ppt簡報檔(來源長榮大學按我)

★柯博文的Arduino介紹書410頁pdf檔(來源教育部按我)

★☆給同學的學校Arduino安裝原廠程式下載350M(按我下載) (備用下載)

★☆★420電腦教室『arduino16』下載按我    密碼 2a8f 

      內裝arduino16(解壓檔在c: 根目錄),板子連上usb 要到C:\arduino16\drivers驅動usb

★☆好用的壓縮(含虛擬掛載)工具WinArchiver (介紹教學) (下載)

★ Arduino 報告樣本 (word2003版) (pdf板) 如何文字變漂亮word2010教學 按我
★ 資三忠用的『專題計劃書2014』 (下載按我)  (備用載點)
★ 你第一次使用麵包板就上手:10個簡易應用(創客) (連結)
★ 模擬麵包板軟體 (連結)
★ 電腦裝修乙級程式練習 (連結)

A. Arduino擦寫時間的機器  原始  資料            

 影片  網購套件160RMB  網購DIY亞克力套件40RMB 天津購物50   搜〔arduino 寫 時間〕  

套件包括:亞克力調整安裝   改造

Arduino UNO R3×1塊

9g舵機×3個 sg90一個約NT35元

3mm厚白色亞克力激光切割組裝材料×1套

白金白板筆×1支
3mm×15mm螺栓螺絲墊片×8套

1.5mm自攻螺絲×4個,自備白板筆


Arduino程式碼到topmaker.com.cn技術論壇下載

B.台幣百元小車D-2 改造計畫(+Arduino智能控制)  參考網址約17RMB 

    
台灣很多的Arduino的智能車都超過一千元,

我們希望利用智能小車再加上不了的控制能


夠在500元完成,就是這個願望所以我們自行


找可用的器材,所以我們找了這個百元小車 






C. Arduino別摸我小黃人亞克力DIY套件30RMB  參考網址  影片 繴障模塊 
    說明 : 小黃人會感應接近的手或物體,如果有物體靠近,它會自動躲避障礙   



3mm透明亞克力雷射切割組裝套件包括:

底座×1

中間連接件×1

上端連接支撐件×1

紅外測距X2  超聲波測距模塊(眼睛) X1

舵機SG90 X2

1.25ML保特瓶 X1

制作小黃人還需要自己准備小黃人的身體外殼1.25L的飲料瓶


 


D.桌上型機器手臂 100  參考網址  安裝教程 文件 (密碼:VsSWrx) 購物


















F.轟動S4A的三個舊光碟機變光雕機 參考網站120rmb  影片 影片  製作過程  王文保文件



1Arduino UNO R3 一塊(配屏蔽數據線)

2、A3967步進電機驅動板 兩塊¥14.0X2


3、200毫瓦紅光激光頭 一個
¥35.0


4、5v光耦隔離繼電器 一個¥14.0


5、激光散熱座一個¥8.50


6、送:杜邦線公對母6根,母對母6根


7、步進電機延專用長線


架子¥35  參考電路 Nano  DIY套件¥128

柝光碟  教學50頁  DIY套件¥128 DIY金冠
國華國中的創客文章

G.Wiimote 窮人的電子白板  影片1 影片2 教學 軟體設定 ipevo

















★其他 Arduino 作品

畢業作品代品 (設計|單片機|arduino傳感器制作)

多種微型馬達,想一下可以做一些會飛的竹蜻蜓


Arduino的四軸飛行器-未來的趨勢



(1)結合KINECT ARDUINO之吹泡泡機 KINECT我們會支援4
可參考以下影片

(2)手機搖搖搖點燈 比誰搖的厲害 (可多組競賽 增加作品趣味)

Arduino 作品參考(寫時間機器人)

★420 arduino 程式(含usb驅動程式) 下載按我    密碼 2a8f 

    內裝arduino16(解壓檔在c: 根目錄),板子連上usb 要到C:\arduino16\drivers驅動usb

★給初學者的Arduino+ArduBlock的ppt簡報檔(來源長榮大學按我)

★柯博文的Arduino介紹書410頁pdf檔(來源教育部按我)

★☆給同學的學校Arduino安裝原廠程式下載350M(按我下載) (備用下載)   

★☆好用的壓縮(含虛擬掛載)工具WinArchiver (介紹教學) (下載)

★ Arduino 報告樣本 (word2003版) (pdf板) 如何文字變漂亮word2010教學 按我
資三忠用的『專題計劃書2014』 (下載按我)  (備用載點)
★ 你第一次使用麵包板就上手:10個簡易應用(創客) (連結)
★ 模擬麵包板軟體 (連結)
★ 電腦裝修乙級程式練習 (連結)

A. Arduino擦寫時間的機器  原始  資料 

2015年3月4日 星期三

使用可變電阻控制伺服馬達

實驗目的                 來源按我
練習用可變電阻控制伺服馬達(Servo motor)的旋轉角度。
image
材料
  • 麵包板 x 1
  • Arduino 主板 x 1
  • 伺服馬達(Servo Motor) x 1
  • 10k 可變電阻 x 1
  • 單心線 x N

接線
伺服馬達有三條線,電源(紅線)、接地(黑線),以及訊號線。
image
  • 把伺服馬達紅線接到 +5v,黑線接到 GND,訊號線接到 pin 9
  • 可變電阻中間腳位接到類比輸入(Analog Input) pin 0,剩下的兩支腳位,一支接到 5V,另外一支接到 GND
image
電路圖
image
程式碼
RC 伺服馬達(Radio Controlled Servo Motor) 大部份是透過 PWM (Pulse Width Modulation, 脈波寬度調變)來控制,Arduino 裏內建了 Servo Library 讓事情變得很簡單,就算你對 PWM 不熟,也可以很輕鬆地控制伺服馬達。底下的程式碼示範 Servo Library 的使用方法(Servo.pde):

01  // 引用 Servo Library
02  #include <Servo.h>
03
04  // 建立一個 Servo 物件
05  Servo myservo;
06 // 旋轉角度
07  int value = 0;
08
09  void setup()
10  {
11  myservo.attach(9);    // Servo 接在 pin 9
12  }
13
14  void loop()
15 {
16  if (value == 0)
17  value = 180;
18  else
19  value = 0;
20
21  // 叫 Servo 旋轉角度:
22  // myservo.write(0) 是叫 Servo 旋轉到 0 度的位置
23  // myservo.write(180) 是叫 Servo 旋轉到 180 度的位置
24  myservo.write(value);
25  delay(1500);
26  } 
程式說明:
  • L2: 引用 Servo library
  • L5: 利用 Servo 類別建立 myservo 物件
  • L24: 要控制 Servo 旋轉角度,只要呼叫 Servo 的 write() 並傳入指定的角度就可以了,例如 myservo.write(180) 是控制 Servo 轉到 180 度,myservo.write(120) 是控制 Servo 轉到 120 度。
使用可變電阻控制伺服馬達(PotServo.pde):

01  // 使用可變電阻控制 Servo 的旋轉角度
02  // by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
03
04  // 引用 Servo Library
05  #include <Servo.h>
06
07 // 建立一個 Servo 物件
08  Servo myservo;
09
10  // 可變電阻接在 Analog pin 0
11  int potpin = 0;
12 // 儲存旋轉角度的變數
13  int val;
14
15  void setup()
16 {
17 myservo.attach(9); // Servo 接在 pin 9
18 }
19
20  void loop()
21 {
22  val = analogRead(potpin); // 讀取可變電阻(數值介於 0 到 1023)
23  val = map(val, 0, 1023, 0, 179); // 把 0 - 1023 的數值按比例縮放為 0 - 180 的數值
24  myservo.write(val); // 設定 Servo 旋轉角度
25  delay(15); // 等待 Servo 旋轉指定的位置
26 }

程式說明:
  • L22: 讀取可變電阻並將讀到的數值(介於 0 到 0123)儲存在 val 變數中
  • L23: 0 到 1023 的數值必須經過數值轉換,依比例轉為 0 到 180 的數值,因為我們的伺服馬達只能在 0 到 180 度之間旋轉。範例程式利用 map() 函式將 0 – 1023 的值對應到 0 -179。
  • L24: 根據讀到的可變電阻值控制 Servo 轉到指定的角度
範例照片/影片連結


延伸閱讀

2015年2月25日 星期三

要學習 Arduino 之前,首先得要有一塊板子(無誤),以及到 Arduino 官網下載區下載其 IDE 與 driver,Ubuntu 的話可以直接在軟體中心內下載 package 。

板子介紹

在這邊以 motoduino 這塊板子當範例來介紹(MIT 的),因為他比原生的 Arduino 還多了控制馬達的模組,所以取名為 motoduino 。
motoduino 正面


motoduino 背面
由正面來看,底下有 16 根 pin 腳,分別標示 0~15 ,這部分是數位接腳,可以在背面的圖看到,14 旁邊有個 GND 表示接地(負極),其中 13 號為測試用接腳,有加裝電阻使其輸出電壓為 3V ,可以直接接 LED 燈來測試,其他有 PWD 字樣的輸出為 5V ,要接 LED 燈得要自行加裝電阻以避免 LED 燒掉(可搭配麵包板使用,方便組裝測試)。

正面左邊那幾個綠色的是馬達的接腳,上方左側那排六個的為類比接腳,右上方為電源輸入,右下方為 USB 接孔(若以 USB 連接電腦時可不用接電源)。

IDE 介紹


當打開 IDE 後,有幾個地方要注意的。



Arduino IDE 介面

第一個是在 File→Example 裡面,有一些先寫好的如何操作的範例小程式讓你用。




第二個是在 Tools→Board 裡面,這裡是已知的 Arduino 處理器型號的列表,這邊會根據你所使用的板子而不同。這次所選用的 motoduino 要選擇「Arduino Nano w/ ATmega328」

另外還有兩個非常重要的功能要介紹的,在 IDE 最左側有兩個小按鈕,左邊打勾樣式的是驗證/編譯,右邊的是上傳至板子。

Verify/Compile 驗證/編譯
Upload 上傳
底下是他們在選單中的位置。

Verify/Compile 驗證/編譯


Upload上傳

程式部分


Blink 範例


相較於其他程式語言都會有所謂的「Hello World!」來當初心者的第一支程式,Arduino 則是使用 Example→Analog→Blink 做為第一支程式,範例程式碼
/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */   // Pin 13 has an LED connected on most Arduino boards: int led = 13;   void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); }   void loop() { digitalWrite(led, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(led, LOW); // set the LED off delay(1000); // wait for a second }



底下將針對這個範例程式做說明。
  • 第 1~6 行的 /* */ ,稱為多行註解,放置在此區段內的內容均會被視為註釋,在編譯時會略過。
  • 第 8 行的 // ,稱為單行註解,該行放置於此記號之後的視為註釋,編譯時略過。
  • 第 9 行的 int led = 13; ,這行包括兩部分:第一個是 int led ,這部分稱為宣告(declare),目的是告訴程式說,我現在定義了一個叫 led 的變數,而他的型別為整數 int ,任何變數均需先宣告後才能使用;第二個是 led = 13 ,這部分稱為賦值(assign),目的是將 13 這個值放入剛剛所宣告的 led 容器中。
  • 第 11~14 行,這一個區塊稱為一個函式(function),他由四個部分所組成:
    • 回傳值(return value):此處為 void ,意思為不需要回傳任何值 。
    • 函式名(function name):此處為 setup ,定義一個函式的名字。
    • 參數(arguments):為 ( ) 所夾住的部分,此處為空表示這個函式不需要參數。
    • 函式內容(content):為 { } 所夾住的部分,在裡面均為此函式的內容,也就是呼叫此函式時會執行的命令。
  • 第 13 行的 pinMode(led, OUTPUT); ,對 led 這個數位 pin 腳做初始,並決定他是要接收/發送(INPUT/OUTPUT)訊號。
  • 第 17 、 19 行的 digitalWrite(led, HIGH/LOW); ,由於第 13 行的設定為 INPUT ,所以這邊所使用的函式為digitalWrite,而 HIGH/LOW 則代表為高/低電位。
  • 第 18 、 20 行的 delay(1000); ,表示休息一段時間,其單位為毫秒(milliseconds),故此兩行代表休息 1 秒。
而每個 Arduino 程式都會有兩個函式,setup 與 loop ,這兩個函式均為無回傳值與無參數型態,而 Arduino 在啟動的時候,會先去呼叫 setup 一次,接著持續的呼叫 loop 到結束。

程式雜談

  • 命名規則:
    • 變數或函式的名稱只能由數字(0-9)、大小寫英文(a-z 與 A-Z)與下底線(_)組成,且第一個字不可為數字
    • 看此範例其命名與寫作規則與 Java 的規範頗相似,變數名稱採用駝峰式命名法
    • ,而 class 名稱則使用帕斯卡命名法
  • 括號位置及縮排格式:這部分其實是各說各話,我個人認為是整個專案統一即可,如果說是自己開發的話,選一個你喜歡的就好,不過要記得的是,程式語言是人在看的,所以不要找自己麻煩。

本日實作項目

  • 在 10 號 pin 腳接上電阻及另一個 LED 燈,讓他與 13 號 pin 腳的 LED 燈可以交替的閃爍,結果程式
/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */   // Pin 13 has an LED connected on most Arduino boards: int led1 = 13; // Pin 10 has an LED connected on most Arduino boards: int led2 = 10;   void setup() { // initialize the digital pin as an output. pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); }   void loop() { digitalWrite(led1, HIGH); // set the LED1 on digitalWrite(led2, LOW); // set the LED2 off delay(1000); // wait for a second digitalWrite(led1, LOW); // set the LED1 off digitalWrite(led2, HIGH); // set the LED2 on delay(1000); // wait for a second }
底下為這次的主角。

可以看到這個繼電器的型號是 LUZ-5 ,可搜尋「LUZ-5 data sheet」,找到他的基本資料。翻到第二頁可以看到 LUZ-serial 的圖以及內部線路,將底下的部分分別接上 Arduino 的 10 、 14 號 pin 腳,如此可利用 Arduino 是否供電來控制上方連接的方向,而為了達到一開始不要接通電源的想法,所以電源的部分一開始接在內側,而另一端接在右下角側。 

如此一來當執行到 digitalWrite(led2, HIGH); 時,形成通路讓家電啟動,而執行到 digitalWrite(led2, LOW);時,形成斷路讓家電停止。
  • 請勿拿來控制需要時間開關機的家電,以免造成機械損壞。
  • 此範例用的是機械式繼電器,delay 的時間不要太短,以免使繼電器受損。