置頂

我的 VPython 教學文件 (HackMD 版本)

VPython 教學文件目錄 安裝及測試 基本語法 等速度直線運動 自由落下 終端速度 水平抛射 使用For迴圈計算水平抛射資料 斜向抛射 圓周運動 簡諧運動 單擺 木塊彈簧系統分離 重力及簡諧 行星運動 相疊木塊 雙重簡諧運動 一維彈性碰撞 ...

熱門文章

顯示具有 Arduino 標籤的文章。 顯示所有文章
顯示具有 Arduino 標籤的文章。 顯示所有文章

2020年11月25日 星期三

Arduino 教學:線性霍爾磁力感測器

作者:王一哲
日期:2020/11/25



元件基本資料


KY-024 是一種常見的線性霍爾磁力感測器,售價大約90元。測量原理是利用外加磁場使晶片中的載子偏轉,使晶片於電流、磁場同時垂直的方向上產生電壓。但是 KY-024 只能測量磁場強度的相對值,無法精確地測量磁場強度的絕對值,因此在使用上比較適合作為開關,或是利用磁場量值隨時間的變化測量時間間隔。從下方的照片中可以看到由上至下的接腳功能分別為類比訊號、接地、電源、數位訊號,分別將它們接到 Arduino 開發板上的類比輸入、GND、5V、數位輸入。

KY-024 照片

KY-024 電路圖

KY-024 裝置照片

2020年11月21日 星期六

Arduino教學:LED閃爍

作者:王一哲
日期:2018/3/12



前言


如果完全沒有寫過 Arduino 程式,請從頭開始看;如果已經寫過一些 Arduino 的小程式,建議從程式4開始閱讀即可。以下共有 5 個程式,目標分別為
  1. 程式1:使用 delay 控制 LED 的閃爍週期
  2. 程式2:使用 millis 控制 1 個 LED 的閃爍週期
  3. 程式3:使用 millis 使 2 個 LED 有不同的時間閃爍週期
  4. 程式4:使用可變電阻控制 1 個 LED 的閃爍週期
  5. 程式5:使用可變電阻控制 2 個 LED 的閃爍週期

所需器材


  1. Arduino Uno 開發板1塊
  2. 3 mm 或 5 mm 紅光 LED 1個
  3. 3 mm 或 5 mm 綠光 LED 1個
  4. 220 Ω 固定電阻2個(串聯 LED 用)
  5. 10 kΩ 可變電阻2個
  6. 麵包板 1 塊
  7. 麵包板用連接線數條

程式1:使用 delay 控制 LED 的閃爍週期


程式1、2裝置照片(程式1只需用到左側)

程式1、2電路圖(程式1只需用到左側)

2020年11月20日 星期五

Arduino 教學:LM35 溫度感測器

作者:王一哲
日期:2020/11/20



元件基本資料


LM35 是一種相當便宜的溫度感測器,從資料表中可以看到它又細分為幾個不同的型號,基本上測量範圍是 2°C - 120°C,輸出訊號的電壓值是 10 mV/°C,室溫下測量精度為 ±0.25°C。每面對 LM35 有字的那一面,由左至右的接腳功能分別為電源、訊號、接地,分別將三者接到 Arduino 開發板上的 5V、類比輸入、GND。
LM35 電路圖

LM35 裝置照片


2018年3月13日 星期二

利用光敏電阻控制蜂鳴器

作者:王一哲
日期:2016/9/13



所需元件



  1. 光敏電阻 1 個
  2. 10 kΩ 電阻 1 個
  3. 蜂鳴器或喇叭 1 個
  4. 麵包板1塊
  5. Arduino Uno 開發板 1 塊
  6. 麵包板連接線數條

線路圖

實際的裝置照片(連接蜂鳴器)

實際的裝置照片(連接喇叭)

2017年12月4日 星期一

紅外線發射接收器

作者:王一哲
Ver. 1:2016/11/20
Ver. 2:2018/3/29



所需元件



  1. 紅外線發射 LED 2 個
  2. 紅外線接收 LED 2 個
  3. 3 mm 或 5 mm LED 1 個
  4. 220 Ω 電阻 1 個(串聯普通 LED)
  5. 560 Ω 電阻 2 個(串聯紅外線發射 LED)
  6. 1 MΩ 電阻 2 個(串聯紅外線接收 LED)
  7. 麵包板 1 塊
  8. Arduino Uno 開發板 1 塊
  9. 麵包板連接線數條
  10. 自製的 LED 支架 2 組

圖中藍色的是紅外線發射 LED、透明的是紅外線接收 LED。
請注意,各廠牌的發射器及接收器顏色不一定相同,購買前最好先向店家確認。

自製的LED支架


去除按鈕彈跳的應用

作者:王一哲
日期:2017/5/5



所需元件



  1. 可插入麵包板的按鈕4個
  2. 220 Ω 電阻3個
  3. 3 mm 或 5 mm LED 3 個
  4. 麵包板 1 塊
  5. Arduino Uno 開發板 1 塊
  6. 麵包板連接線數條


用按鈕控制數值



本裝置的要求:
  1. 按下「增加按鈕」使數值 +1,按下「減少按鈕」使數值 -1,按下「重設按鈕」使數值回到預設值0。
  2. 使用 Bounce2.h 去除按鈕彈跳的問題,不能持續按著按鈕。
  3. 使用開發板內建的上拉電阻,使接線方式更加簡單。
線路圖

實際的裝置照片

序列埠監控視窗截圖


按鈕及彈跳

作者:王一哲
日期:2016/9/7



所需元件



  1. 可插入麵包板的按鈕1個
  2. 220 Ω 電阻1個
  3. 10 kΩ 電阻1個
  4. 3 mm 或 5 mm LED 1個
  5. 麵包板1塊
  6. Arduino Uno 開發板1塊
  7. 麵包板連接線數條

使用外接電阻



將 5 V 接到按鈕,按鈕的另一端串聯1個 10 kΩ 電阻再接地,這樣的接法被稱為下拉電阻(pull-down resistor)。若測量電阻及按鈕間的電壓,當按鈕未按下時電路未接通,測量到低電位;當按鈕按下時測量到高電位。當按鈕被按下時,點亮LED;反之則熄滅。
線路圖

實際的裝置照片


程式碼如下:
/* 實驗5-1:用按鈕控制LED                              *
 *          使用外接10kOhm電阻                         *
 * 參考資料:葉難(2014)。Arduino輕鬆入門              *
 * 日期:Sep. 17, 2016                                 *
 * 作者:王一哲                                        */
#define LEDPIN 7     //定義LED接腳
#define BUTTONPIN 4  //定義按鈕接腳
#define BAUDRATE 9600
int state;

void setup() {
    pinMode(LEDPIN, OUTPUT); //定義LED接腳為輸出
    pinMode(BUTTONPIN, INPUT); //定義按鈕接腳為輸入
    Serial.begin(BAUDRATE);
}

void loop() {
    state = digitalRead(BUTTONPIN); //讀取按鈕狀態,按下為HIGH
    if (state == HIGH) {               //若按下按鈕則點亮LED
        digitalWrite(LEDPIN, HIGH);
    } else {                        //若沒有按下按鈕則熄滅LED
        digitalWrite(LEDPIN, LOW);
    }
}

超音波測距模組

作者:王一哲
日期:2016/5/10



超音波測距模組運作原理



模組先發射超音波,超音波撞到物體反射回模組,測量發射、反射、接收所需要的時間,再由時間計算物體與模組間的距離。由於物體必須反射超音波,物體最好有一個不算太小、平滑的反射面。在網路上找到的範例程式通常會用以下的程式碼計算距離
cm = pulseIn(echoPin, HIGH) / 29.41 / 2.00
上式當中 pulseIn(echoPin, HIGH) 會讀取指定的接腳 echoPin 的電壓值為高電位的時間(單位為微秒,microsecond, μs),也就超音波測距模組發出訊號到訊號反射回來被接收到所經過的時間,但我們只需要發出訊號到撞到物體所經過的時間 t ,因此需要將回傳的數值除以 2。29.41 則是超音波在空氣中前進 1cm 所花的時間(單位為μs),將 t 除以 29.41 即為物體與模組間的距離(單位為 cm)。 29.41 的來源如下 $$ t_0 = \frac{0.01}{340} \approx 2.941 \times 10^{-5} ~\mathrm{s} = 29.41 ~\mathrm{\mu s} $$ 如果需要更精準的數據,可以由氣溫計算空氣中的聲速 $$ v = 331 + 0.6 T ~\mathrm{m/s} $$ 再將較準確的聲速代入上式中。另外也可用改用帶有溫度補償的模組 US-100,但是需要的程式碼就會有點不同。
超音波測距模組 HC-SR04,售價約80元。

超音波測距模組帶溫度補償 US-100,售價約150元。


利用可變電阻控制LED

作者:王一哲
日期:2016/9/6



分壓電路



分壓電路是我們在Arduino裡最常用的技巧之一,我們可以利用可變電阻或是光敏電阻與固定電阻串聯,讀取中間接腳的電壓值,並利用這個值來控制其它元件。最簡單的接法如下
分壓電路示意圖


圖中電池和R1、R2電阻串聯,利用歐姆定律可得到電流值 $$ I = \frac{\varepsilon}{R_1 + R_2} $$ 因此R1、R2電阻的端電壓分別為 $$ V_1 = IR_1 = \frac{R_1}{R_1 + R_2} \varepsilon $$ $$ V_2 = IR_2 = \frac{R_2}{R_1 + R_2} \varepsilon $$ 如果我們使用最簡單的可變電阻,將左邊的接腳接到+5V上,右邊的接腳接0V,轉動旋鈕時會改變中間接腳到右邊接腳之間的電阻值,因此電壓值會跟著變化,我們就可以藉此控制其它元件。
單圈碳膜式可變電阻


分壓電路的簡單練習



我們可以用 Arduino 上的 +5 V 接腳供電,將兩個固定電阻串聯,使用三用電表測量電阻的端電壓。為了避免通過電阻器的電流過大,建議使用 10 kΩ 或 100 kΩ 的電阻器。請同學計算一下測量到的電壓值應該是多少?再用三用電表測量看看。
簡單的分壓電路


安裝 Arduino IDE

安裝 Arduino IDE
日期:May 6, 2016


  1. 於 Google 搜尋 Arduino ,通常第1個搜尋結果就會是 https://www.arduino.cc/
  2. 按上方的 Download ,進入下載頁面。
Arduino.cc_home.png


Arduino簡介

Arduino簡介
version 1:May 9, 2016
version 2:Sep. 16, 2016

  1. 什麼是Arduino

  Arduino是一種開放原始碼的單晶片控制器,使用的程式語言與C語言非常相似,但又不像C語言那麼複雜,即使沒有程式語言的基礎也能很快上手。Arduino的開發板有許多版本,例如mega、yun、nano……等等,最適合初學者使用的應該是uno,也是我們在這學期的課程中採用的開發板。

Arduino_Mega.jpg
Arduino mega 開發板