如何使用Arduino實現映射功能

前言

您可能注意到了,儘管互連電子裝置採用不同單位,有不同的上限和下限,但在它們的工作範圍內始終是相容的。例如,在Playstation 4上玩電子遊戲時,當您將搖杆一直拉到右邊時,它會轉換為角色向右的最大行動量。我們可以看到,搖杆的行動範圍與角色的行動範圍是匹配的。在不同階段校準範圍的這個過程稱為“映射”。

映射過程通常用於根據期望的驅動來校準來自感測器的輸入值。例如,現代汽車中採用電子方向盤的情況,當方向盤旋轉720度時,車輪大約會轉動40度。因此,我們可以看到,0-720度的範圍被電子方向盤使用的電子控制系統映射為0-40度。這種電子控制系統會結合使用微控制器或PLC。微控制器上必須有類比輸入,可以透過PWM或數位引腳來映射所需的驅動。本DIY專案結束時,您將能夠瞭解:

  • 什麼是映射?
  • 如何讀取感測器輸入
  • 如何將感測器輸入映射到所需的值範圍
  • 映射的範圍如何用於所需的驅動
  • Arduino中映射功能的語法
  • 使用Arduino UNO實現的映射功能的應用

概述

在這個DIY專案中,我們將研發一個進程,使用Arduino UNO將電位計的電阻變化轉換為所需的LED數量。換句話說,在本例中,電位計被用作“感測器輸入”,Arduino UNO被用作“映射裝置”,10個ROHM LED被用作致動器。LED通常是精密零件,經常會出現隨機故障。因此,我們選擇了ROHM LED,它們足以耐受電流尖峰,而且性能穩定。十個藍光ROHM LED將根據電位計的旋轉進行映射。將按照以下順序介紹這個專案:

  • 所需元件
  • 電路原理圖
  • 設定Arduino IDE
  • 程式設計
  • 執行

所需元件

元件 連結/圖片
10個藍光ROHM LED https://www.rohm.com/products/led/led-lamps-mono-color-type/sla560bct-product

Arduino UNO R3 https://www.aliexpress.com/item/32981776049.html

USB B資料線

(通常隨Arduino UNO R3一起提供)

10k電位計 https://www.aliexpress.com/item/32859477972.html

830孔無焊麵包板breadboard https://www.aliexpress.com/item/32701019904.html

20根公頭轉公頭跳線 https://www.aliexpress.com/item/32951945552.html

1個1kΩ電阻 任何電子商店

基於Windows的電腦,用於程式設計

 

電路原理圖

所有元件都採購齊全後,第一步是把所有元件都連接起來。連接要求如下所述:

  • 對於這個專案來說,您需要將10個藍光ROHM LED的正極引腳(較長的一端)分別連接到Arduino的數位引腳。
  • 在本例中,我們使用了數位引腳4-13。
  • 每個LED的負極引腳需要透過1kΩ的電阻接地。
  • 電位計有三個引腳。第一個連接到Arduino的接地引腳,第二個連接到類比引腳A5,第三個引腳連接到5V。執行此操作將使第二個引腳的電壓在0-5V之間變化。

連接示意圖如下所示:

connection schematics

實際接線如下所示:

wiring to breadboard

  • 現在,您的系統已經連接好,您已經準備好對Arduino UNO R3進行程式設計。

設定Arduino IDE

Arduino程式設計需要設定Arduino IDE。Arduino IDE可在Linux和Windows上使用。對於這個DIY專案,我們將使用Windows桌面應用程式。訪問以下連結下載並安裝Arduino IDE:

成功安裝後,打開Arduino IDE並使用USB B資料線連接Arduino UNO R3:

Arduino Map Function

  • 在Arduino IDE中,從“工具”>“埠”>“COM 3 (Arduino Genuino / UNO)”中選擇適當的COM埠。
  • 這時,您的設定已準備好開始程式設計。

程式設計

在Arduino程式設計中,有兩個基本函數:Void Setup和Void Loop。完整代碼及其解釋如下所示:

 

執行

如果您沒有透過外部插孔為Arduino UNO供電,在執行過程中,請保持它與電腦連接。現在將電位計從一端旋轉到另一端。當電位計在類比引腳上給出0值時,沒有LED點亮。旋轉電位計時,點亮LED的數量會不斷增加。電位計給出的值達到1023時,點亮LED的數量將達到10。可以看到,我們已經將感測器值的範圍映射到了LED的數量。

  • 電位計的起始位置。(類比值0)

  • 電位計的中間位置。(類比值512)

  • 電位計的最終位置。(類比值1023)