我的 Stem Project (十一) Arduino Multi-function Shield using Scratch (2)

上 一 課 就 說 了 ,還 有 兩 個 sensor blocks 未 講 ,留 給 今 堂 。Multi-Function Shield 預 留 了 一 個 專 用 的 接 口 給 LM35,LM35 的 data pin 是 接 到 Arduino UNO 的 A4 pin。

LM35 是 一 種 很 常 見 ,使 用 T0-92 封 裝 的 溫 度 感 應 晶 片 。它 特 別 的 地 方 在 於 它 輸 出 的 電 壓 ,和 攝 氏 溫 度 成 正 比 的 關 係 ,0 mV = 0 ℃,1000 mV ( 1V )  = 100 ℃。所 以 它 很 受 喜 歡 顯 示 攝 氏 度 的 用 家 歡 迎 。

而 用 在 Arduino 上 ,因 為 Arduino 的 Analog Input 是 0V – 5V,1024 級 ,所 以 一 般 我 們 都 會 作 如 下 處 理 。

temp = (5.0 * analogRead(tempPin) * 100.0) / 1024;

有 了 HackatronicsMulti-function Shield 的 library,所 有 麻 煩 事 ,當 然 唔 洗 我 地 計 。而 且 ,library 還 做 了 一 重 過 濾 ,令 到 輸 出 的 數 值 更 加 平 穩 。

Arduino + LM35

Multi-function Shield + LM35

LM35 一 定 要 按 上 圖 的 方 法 插 ,不 要 插 反 了 ,而 且 要 移 除 ( 即 斷 開 )  Jumper J1。據 Hackatronics 文 章 說 ,如 果 插 反 了 ,是 有 機 會 弄 壞 Arduino Board 的 ,切 記 切 記 。

LM35

Multi-function Shield + LM35 (2)

接 好 了 sensor,我 們 就 可 以 回 到 mBlock 看 看 可 以 如 何 使 用 它 。如 果 未 安 裝 好 mBlock Multi-function Shield extension 的 朋 友 們 ,可 以 參 考 上 一 課 的 教 學 。

Lesson 10 - Termometer

Lesson 10 – Termometer

有 了 Hackatronics Library 的 加 持 ,使 用 上 當 然 相 當 的 簡 單 。只 要 用 get LM35 temperature block,就 可 以 得 到 LM35 感 測 的 溫 度 ,不 過 Hackatronics library 的 單 位 比 較 奇 特 ,是 0.1 ℃,所 以 ,我 們 要 把 得 出 的 數 值 除 以 10,才 顯 示 出 來 。顯 示 溫 度 的 時 候 ,我 們 設 定 為 顯 示 1 位 小 數 。

第 二 個 sensor 積 木 ,則 要 配 合 超 聲 波 測 距 模 塊 來 使 用 。

現 時 坊 間 的 Ultrasonic sensor,都 是 以 HC-SR04 為 主 。Hackatronics 的 library 就 是 以 這 個 模 塊 來 編 寫 的 。話 雖 如 此 ,但 畢 竟 還 是 有 其 他 超 聲 波 模 塊 ,外 觀 上 也 非 常 之 類 似 ,所 以 大 家 購 買 時 要 留 意 ,唔 好 買 錯 了 。

HC-SR04 有 四 個 接 腳 ,Vcc 是 供 電 ,GND 是 接 地 。另 外 兩 pins 分 別 是 Trigger pin 和 Echo pin。這 兩 個 pins 可 以 接 到 Arduino UNO 上 面 的 任 何 digital 接 腳 ,Trigger pin 要 設 定 為 輸 出 ( output pin ),Echo pin 就 要 設 定 為 輸 入 ( input pin )。

Ultrasonic Sensor Equations

Ultrasonic Sensor Equations

超 聲 波 模 塊 測 量 距 離 的 原 理 ,是 當 你 在 Trigger pin 輸 出 一 個 訊 號 ,Ultrasonic sensor 就 會 發 射 一 個 40 kHz 的 超 聲 波 ( 超 聲 波 一 樣 是 聲 波 ,只 是 超 出 人 耳 聽 到 的 範 圍 )。當 超 聲 波 遇 到 障 礙 物 時 ,便 會 反 彈 ,當 Sensor 收 到 反 彈 的 訊 號 ,就 會 通 過 Echo pin 來 通 知 我 們 。

由 於 聲 音 在 空 氣 中 傳 播 的 速 率 是 很 固 定 的 ( 此 速 度 被 稱 為 音 速 ,大 概 是 每 秒 340 米 ),所 以 我 們 可 以 通 過 計 算 超 聲 波 來 回 的 時 間 ,算 出 物 件 的 距 離 。

Lesson 10 - Rangefinder

Lesson 10 – Rangefinder

因 為 使 用 了 Hackatronics library,上 面 所 有 的 算 式 ,當 然 就 與 我 們 無 緣 了 。要 得 出 距 離 ,我 們 只 要 使 用 get SONAR Distance TrigPin X EchoPin Y block 就 可 以 了 。而 它 會 傳 回 以 cm 為 單 位 的 整 數 距 離 。

Multi-function shield and HC-SR04

Multi-function shield and HC-SR04

在 上 面 的 例 子 中 ,每 按 一 次 BTN_1,就 會 測 一 次 距 離 ,而 傳 回 的 數 值 就 會 顯 示 在 4 位 數 碼 管 上 。為 了 讓 使 用 者 知 道 自 己 按 了 鍵 ,所 以 按 鍵 時 亦 會 beep 一 聲 。

Multi-Function Shield

Multi-Function Shield

Multi-function Shield 本 身 就 佔 用 了 很 多 針 腳 ,最 後 有 飛 線 出 來 外 接 其 他 模 塊 的 接 腳 就 只 有 pins 5, 6 和 9 了 。所 以 ,get SONAR Distance block 亦 只 可 以 選 擇 pins 5, 6 和 9 了 。

compare

其 實 mBlock 本 身 亦 內 建 了 read ultrasonic sensor block 的 ,我 們 也 可 以 用 用 看 ,比 較 hackatronics 的 library 和 mBlock 的 library 究 竟 那 一 個 比 較 好 。

Lesson 11 - Scratch 03

Lesson 11 – Compare Library

上 例 我 們 應 用 了 Multi-function Shield 有 多 個 按 鍵 的 特 性 ,按 BTN_1 就 使 用 Hackatronics 的 library,按 BTN_2 則 用 回 mBlock 本 身 的 library。值 得 一 提 的 是 ,hacktronics 是 傳 回 正 整 數 的 ,但 mBlock 卻 是 傳 回 floating number,我 們 正 好 運 用 Display Number block 的 Decimal Point 功 能 ,把 mBlock 傳 回 來 的 floating number 四 捨 五 入 到 一 位 小 數 。

用 了 上 面 的 程 序 ,我 們 可 以 很 方 便 地 在 完 全 相 同 的 位 置 ,分 別 用 兩 套 library 來 進 行 測 距 。按 照 我 個 人 的 情 況 ,在 HC-SR04 Ultrasonic Sensor 這 一 部 分 ,是 mBlock 比 較 好 用 ,而 且 測 出 來 的 距 離 也 比 較 精 準 。

distance

我 的 Ultrasonic Range Finder

只 要 幾 行 程 式 碼 ,就 可 以 將 你 的 Arduino 變 成 電 子 溫 度 計 和 數 碼 測 距 儀 ,係 唔 係 好 滿 足 呢 ?

最 後 又 是 功 課 時 間 。
1. 試 把 電 子 溫 度 計 的 程 序 ,棄 用 wait block 而 改 用 timer block;
2. 在 按 動 BTN_1 時 ,把 溫 度 的 單 位 轉 變 為 華 氏 度 ( ℉  ) ,再 按 一 次 又 轉 變 回 攝 氏 度 ( ℃ )。
3. 試 從 你 的 超 聲 波 模 塊 的 說 明 文 件 ,找 出 該 模 塊 的 可 以 探 測 的 距 離 範 圍 ,和 精 準 度 ;
4. 根 據 問 題 3 的 答 案 ,找 出 3 個 合 適 的 距 離 ,來 測 量 你 自 己 的 測 距 儀 的 誤 差 有 多 少 ;
5. 按 照 問 題 4 測 量 出 來 的 誤 差 ,去 修 正 你 自 己 的 mBlock 程 序 。

參 考 資 料 :
Arduino Playground – LM35 Higher Resolution

Arduino – Ping
Arduino Playground – NewPing Library
HC-SR04: tests on accuracy, precision and resolution of ultrasonic measurement

 

ctleung張 先 生 ,男 性 ,肖 龍 。
職 業 :I.T. Consultant
簡 介 :不 好 好 讀 書 ;七 尺 差 五 寸 ,手 長 過 膝 ,雙 耳 垂 肩 ;性 寬 和 ,寡 言 語 ,喜 怒 不 形 於 色 。據 說 少 時 曾 斬 白 蛇 於 鳳 凰 山 下 ……

我 的 STEM Project 系 列

我 的 Stem Project (一 ) Raspberry Pi 3 vs Arduino UNO
我 的 Stem Project (二 ) 使 用 Scratch 來 控 制 Arduino UNO
我 的 Stem Project (三 ) 使 用 Push Button 來 做 Input
我 的 Stem Project (四 ) Push Button 進 階 一 點 的 用 法
如 何 購 買 Arduino ?( STEM project )
我 的 Stem Project (五 ) 考 反 應 小 遊 戲
我 的 Stem Project (六 ) 用 Arduino 控 制 7 segment display (基 礎 篇 )
我 的 Stem Project (七 ) 用 Arduino 控 制 7 segment display ( 進 階 篇 )
我 的 Stem Project (八 ) 用 Arduino 控 制 7 segment display ( 簡 化 篇 )
我 的 Stem Project (九 ) 用 Arduino 控 制 Buzzer 唱 歌
我 的 Stem Project (十 ) Arduino Multi-function Shield using Scratch (1)
自 己 動 手 做 一 個 Arduino Shield ( STEM project )
我 的 Stem Project (十 一 ) Arduino Multi-function Shield using Scratch (2)
我 的 Stem Project (十 二 ) Arduino Music Light Show
Arduino 的 電 池 ( STEM project )
我 的 Stem Project (十 三 ) Arduino Multi-function Shield using Scratch (3)
This entry was posted in STEM and tagged , , , , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>