• 沒有找到結果。

第10章可變電阻位置量測:滑鼠的控制章可變電阻位置量測:滑鼠的控制

N/A
N/A
Protected

Academic year: 2023

Share "第10章可變電阻位置量測:滑鼠的控制章可變電阻位置量測:滑鼠的控制"

Copied!
50
0
0

加載中.... (立即查看全文)

全文

(1)

第 10 章

可變電阻位置量測

:滑鼠的控制

(2)

10-1 功能簡介

Arduino I/O 控制板具有類比訊號處理的能力,因此可以不用 外接 A/D 轉換電路的情況下,讀入電源電壓值、感測器感測值、

電阻分壓後的電壓值;本實驗主要介紹如何使用 Arduino

Leonardo 讀取可變電阻分壓後的電壓值,透過測得的電壓值大 小判斷可變電阻的旋轉角度、移動位置,進而移動電腦上的滑鼠游 標(以下簡稱鼠標),本章實驗的系統方塊圖如圖 10‑1 所示,

其中按鈕開關 D2 腳用來切換啟動 / 關閉滑鼠模擬功能,按鈕開 關 D3 腳用來模擬滑鼠左鍵功能。

(3)

10-1 功能簡介

要讓微控制器板達到可移動電腦上滑鼠游標的目的,通常需要安裝 人機介面裝置( human interface device , HID )及其驅動 程式,不過,目前大部分作業系統已內建 USB 滑鼠驅動程式,所 以跑 HID mouse 不需安裝驅動程式即可使用。

本實驗採用 Arduino Leonardo 或 OZONE 板進行鼠標控制的 仿真能力,若使用 Arduino UNO 板,恐怕只能進行可變電阻分 壓的實驗,無法進行鼠標控制請特別留意。要讓 Arduino UNO 具有 HID 功能不是沒有辦法,但需讓 UNO 板進入 DFU

(Device Firmware Upgrade) 的 USB 協定,並使用 FLIP 更新 Atmega8U2 的韌體後才能達成,可使用 Google 查尋

「 Arduino UNO 進入 DFU mode 」等相關字眼。但無論如 何, Leonardo 板或 OZONE 板的核心只用一顆 MCU 且 MCU 內建 USB ,使用官方專門提供的 Mouse & Keyboard 函式庫

, HID 控制上會比較穩定、方便。

(4)

10-2 電路說明

(5)

10-2 電路說明

2. Arduino 的類比讀值: Arduino 可使用

analogRead(A0) 的指令進行 A0 接腳的類比讀值

其傳回值為 0 ~ 1023 整數資料型態的內容,若要轉換成電壓 值,可使用底下的程式進行計算。

(6)

10-2 電路說明

3. Arduino Leonardo 的模擬鍵盤與滑鼠功能:當

Leonardo 負責串列傳輸與電腦進行通訊並執行程式運作時,

還可以兼任類似電腦的人機介面裝置( HID )功能,可同時與 鍵盤或滑鼠進行通訊和動作;官方提供的滑鼠控制函式庫,包 括有:

1) Mouse.begin() :開始模擬滑鼠連接至電腦,可使用 Mouse.end() 結束模擬。

2) Mouse.move(xVal, yPos, wheel) :移動已建立連線 之電腦的鼠標,移動是採相對值 xVal 、 yPos 的量,數 值介於– 128 ~ +127 間, wheel 是滾輪移動的相對量

,例如 Mouse.move(100, –100, 0) 代表從現在鼠標 的位置,水平往右移 100 點,垂直往上移 100 點,滾輪 位置 0 點。

(7)

10-2 電路說明

3) Mouse.press(button) :模擬滑鼠按鍵的壓下動作,傳入參 數 button 的選項:

③ 無傳入參數的預設情況下為 MOUSE_LEFT (左鍵)。

④ MOUSE_RIGHT (右鍵)。

⑤ MOUSE_MIDDLE (中間按鍵)。

4) Mouse.release(button) :模擬滑鼠按鍵的放 開, button 的值同 Mouse.press() 。

5) Mouse.click(button) : 模擬滑鼠按鍵點一下( 即

Mouse.press 加 Mouse.release 的動作), button 的值同 Mouse.press() 。

6) Mouse.isPressed(button) : 檢查滑鼠按鍵的狀態, 是 否按下, 若 button 壓下則傳回 1 ,否則為 0 , button 的值同 Mouse.press() 。

(8)

10-2 電路說明

1. 圖 10-3 為本實驗的電路圖,共使用到一顆 10kΩ 的可變電 阻 VR 或半可變電阻 SVR ,擔任模擬滑鼠 X 軸的左右移動控 制,還有按鈕開關 S1 模擬滑鼠左鍵功能,按鈕開關 S2 擔任 啟動 / 關閉滑鼠模擬功能的切換開關。

(9)

10-2 電路說明

(10)

10-2 電路說明

1. 使用麵包板

1) 圖 10-4 所示為使用麵包板進行實驗的接線圖, 可將 ArduinoLeonardo 板固定在一般的麵包板上方便接線。

2) 10kΩ 可變電阻 VR 的 1 、 3 腳位若接錯,則在實驗調 整 VR 時會有順時針旋轉 VR 時鼠標往左跑,逆時針旋轉 VR 時鼠標往右跑的相反情況發生,若有相反情況,將 VR 的 1 、 3 腳對調即可。

(11)

10-2 電路說明

(12)

10-2 電路說明

2. 使用 Arminno 多功能實驗板

圖 10‑5 所示為使用 Arminno 多功能實驗板的接線情況,

其中開關 S1 、 S2 的位置請記住,實驗時會用到。

(13)

10-3 程式設計

Arduino IDE 中提供了一些類比訊號讀值的程式範例, 可在開 啟的 Arduino IDE 中,按功能表列 File → Examples → 03.Analog 後看到官方提供的範例,如圖 10-6 所示,其中有 二個例子可以練習一下:

範例 1 : AnalogInOutSerial 範例主要提供從 A0 讀入 可變電阻的分壓值,然後經由 map 的映射函式,將 0 ~ 1023 的類比值映射到 0 ~ 255 ,方便對 D9 腳的 LED 進行 PWM 亮度的控制。礙於篇幅,刪除部分註解後的程式條 列如下,請參考檔名 AnalogInOutSerial.ino 。

(14)

10-3 程式設計

(15)

10-3 程式設計

(16)

10-3 程式設計

範例 2 : AnalogInput 範例主要是透過 A0 讀入可變電阻分 壓值, 並決定 D13 腳 LED 閃爍的延遲時間,故順時針旋轉可變 電阻時,分壓值增加, sensorValue 變大 LED 閃爍變慢,反 之,逆時針旋轉 VR 時,分壓值降低, sensorValue 變小 LED 閃爍變快。刪除部分註解後的程式條列如下,請參考檔名

AnalogInput.ino 。

(17)

10-3 程式設計

(18)

10-3 程式設計

另外也可開啟 Arduino IDE 提供的滑鼠函式庫範例,從這些練 習中學習滑鼠函式的用法,請按功能表列 File → Examples → 09.USB → Mouse ,查看

ButtonMouseControl 、 JoystickMouseControl 兩個範例

,前者是由上、下、左、右四個方向按鍵與一個模擬滑鼠左鍵,控 制鼠標移動的範例;後者是接一個由兩個可變電阻組成的搖桿模組

,控制鼠標移動的範例,本章程式主要是由

JoystickMouseControl 這個範例程式改寫而來。

(19)

10-3 程式設計

(20)

10-3 程式設計

(21)

10-3 程式設計

(22)

10-3 程式設計

(23)

10-3 程式設計

(24)

10-3 程式設計

(25)

10-3 程式設計

(26)

10-3 程式設計

(27)

10-3 程式設計

(28)

10-3 程式設計

2. map(x, in_min, in_max, out_min, out_max) :數值 映射

1) map 函式可將傳入值 value 從一個值域的範圍 in_min

~ in_max ,對應到另一個值域的範圍 out_min ~ out_max 。

2) 數值映射並沒有限制 out_min ~ out_max 一定是由小到 大,也可由大到小變成反比的數值映射,例如 map(x, 1, 50, 50, 1) ,或是 map(x,1,50,50,–100) 。

3) 映射的函數其實只是數值區間的對應,其函式的完整程式如 下:

(29)

10-4 實驗成果

確定好本實驗的電路以及程式後,即可開始進行編譯程式,以及下 載、燒錄、測試的工作;底下以圖 10‑5 的 Arminno 多功能實 驗板的接線情況進行測試:

1.點選 Tools → Serial Monitor ,開啟 Serial Monitor

2.按下 S2 開關可啟動滑鼠模擬功能, 此時 Serial Monitor 上會顯示 1 , 接著顯示讀取到的 VR 電壓值, 再按一次 S2 可 關閉滑鼠模擬功能, 在 Serial Monitor 上顯示 0 。

3.當滑鼠模擬功能啟動時,使用小支一字起子順時針調整可變電阻 可使鼠標往右移動,且調整角度愈大, VR 輸出電壓愈大,映射後 的移動數值愈大,鼠標移動的愈快;反之,逆時針調整 VR 時,輸 出電壓下降,映射後的數值慢慢變小,甚至變成負值,鼠標往左移 動。

(30)

10-4 實驗成果

(31)

10-5 延伸應用與練習

10-5.1 應用搖桿來控制鼠標

本章的練習只使用到鼠標的 X 軸移動,且可變電阻不會自動移回 中心點(鼠標不移動的中心點),實務拿來操控鼠標不太方便;為 了操作上的方便,可使用市面上賣的雙軸 XY 搖桿模組,內含二個 可變電阻、一個開關,以及具有彈簧拉力的裝置(當手放開時會自 動回到中心點),其外觀及接腳如圖 10‑8 所示。

(32)

10-5 延伸應用與練習

只要配合雙軸 XY 搖桿模組的電路,將 VRx 、 VRy 及開關,接至 Arduino 來進行控制即可,底下介紹電路圖及配線圖。

1.電路圖圖 10-9 為雙軸 XY 搖桿模組電路圖,圖中虛框所示為 搖桿模組的內部電路圖,該模組有 5 個接點,分別為 GND 、 5V

、 VRx 、 VRy 、 SW ,其中 GND 、 5V 接至 Arduino 的電 源, VR1 輸出端為 VRx 接至 Arduino 的 A0 , VR2 輸出端 為 VRy 接至 Arduino 的 A1 ,按鈕開關 S1 模擬滑鼠左鍵接至 Arduino 的 D3 (無提升電阻)。

(33)

10-5 延伸應用與練習

(34)

10-5 延伸應用與練習

(35)

10-5 延伸應用與練習

1. 程式碼與 chap10_5.ino 比較,只是多了一組的類比輸入,

以及開關 S1 無提升電阻需啟用內部提升電阻的差異,完整程 式碼如下所示,紅色字所示為差異處。

2. 行號 56 的 abs() 為取絕對值的函式,此行的主要目的是解 決放開搖桿回到中心點時鼠標仍會往某一方向微動的問題,只 要設定一個門檻值,使可變電阻的映射值( -6 ~ +6 ),其絕 對值小於 2 均視同為不移動。

(36)

10-5 延伸應用與練習

(37)

10-5 延伸應用與練習

(38)

10-5 延伸應用與練習

(39)

10-5 延伸應用與練習

(40)

10-5 延伸應用與練習

電路配接、程式燒錄完成後,即可來試試搖桿的操控性,以下為開 啟「小畫家」在畫布上畫畫的情況,可在電路上按 S2 按鍵啟動鼠 標功能後練習一下;從練習中應可發現,鼠標移動太快,要點選小 畫家左上方的工具有點困難,因此可修改一下程式的行號 5 ,讓 range=3 縮小鼠標移動的速度,請重新下載燒錄程式,看情況是 否有好轉,當然行號 56 的門檻值設定也是影響無法細部移動的主 要原因。

(41)

10-5 延伸應用與練習

(42)

10-5 延伸應用與練習

10-5.2 控制鼠標在小畫家上作畫的小練習

為瞭解 Arduino Leonardo 滑鼠函式庫中的指令作用,底下以 一個在小畫家中畫圖的練習作為示範。

Arduino Leonardo 滑鼠函式庫可以模擬滑鼠移動、左鍵按下

、左鍵點一下等功能,這些動作就像人的動作一般,若利用這些模 擬功能,就可以在小畫家、 PhotoImpact 等繪圖軟體中作畫,

達到人比較無法完成的精準定位,以下介紹如何在小畫家畫出 n 邊形的方法。

(43)

10-5 延伸應用與練習

(44)

10-5 延伸應用與練習

(45)

10-5 延伸應用與練習

(46)

10-5 延伸應用與練習

(47)

10-5 延伸應用與練習

(48)

10-5 延伸應用與練習

1. 首先請將程式 chap10_5_2.ino 下載燒錄至 Arduino Leonardo I/O 板。

2. 點選 Arduino IDE 中 Tools → Serial Monitor , 開 啟 Serial Monitor 監看可變電阻 VR 的調整值,其值域 範圍為 3 ~ 12 ,代表多邊形的邊數,假設調整 VR 為 5

(五邊形),如圖 10-13(a) 所示。

3. 開啟小畫家,點選鉛筆工具,選好顏色,並將鼠標停留在畫布 的適當位置,如圖 10-13(b) 所示。

4. 接著按一下 S2 開關,即可在小畫家上自動畫出如圖 10- 14(a) 所示的五邊形。

5. 在小畫家改點選粉刷功能,點選藍色,並調整可變電阻為三邊 形後,移動鼠標停留在畫布適當位置,按一下 S2 開關即可畫 出如圖 10-14 (b) 的三邊形。

6. 同樣的操作步驟,同學可練習其它的多邊形及筆刷顏色,可得 到許多不同效果喔!

(49)

10-5 延伸應用與練習

(50)

10-5 延伸應用與練習

參考文獻

相關文件

在直流馬達控制系統中,為了減少流經馬達繞線電流及降低功率消耗等 目的,常常使用脈波寬度調變信號 (PWM)

阿吉老師將簡介 micro:bit 開發程式環境,並分享 micro:bit 內建感測器程式編寫、數位/類比信號讀取及寫入,並了解 如何用 micro:bit 連接電子模組編寫程式進行機電整合。.

軟體至 NI ELVIS 環境。現在,您在紙上或黑板上的設計可在 Multisim 內進 行模擬,並模擬為 NI ELVIS 或 NI ELVIS II 電路板配置上的傳統電路圖。設 計趨於成熟後,使用者即可在 NI

數位計算機可用作回授控制系統中的補償器或控制

Table 進入 Edit Mode 利用右鍵+S 控制大小 利用右鍵+R 控制旋轉度 利用右鍵+G 控制軌道位子 利用右鍵+E 新增軌道.. 步驟 十一

Visual Basic提供了許多控制項介面來處理由鍵盤輸入

由圖可以知道,在低電阻時 OP 的 voltage noise 比電阻的 thermal noise 大,而且很接近電阻的 current noise,所以在電阻小於 1K 歐姆時不適合量測,在當電阻在 10K

 可利用 HTML 控制項 中的 Table 控制項進 行排版動作.  (最好將 Table