前言
您可能注意到了,盡管互連電子設備采用不同單位,有不同的上限和下限,但在它們的工作范圍內始終是兼容的。例如,在Playstation 4上玩電子游戲時,當您將搖桿一直拉到右邊時,它會轉換為角色向右的最大移動量。我們可以看到,搖桿的移動范圍與角色的移動范圍是匹配的。在不同階段校準范圍的這個過程稱為“映射”。
映射過程通常用于根據期望的驅動來校準來自傳感器的輸入值。例如,現代汽車中采用電子方向盤的情況,當方向盤旋轉720度時,車輪大約會轉動40度。因此,我們可以看到,0-720度的范圍被電子方向盤使用的電子控制系統映射為0-40度。這種電子控制系統會結合使用微控制器或PLC。微控制器上必須有模擬輸入,可以通過PWM或數字引腳來映射所需的驅動。本DIY項目結束時,您將能夠了解:
概述
在這個DIY項目中,我們將開發一個進程,使用Arduino UNO將電位計的電阻變化轉換為所需的LED數量。換句話說,在本例中,電位計被用作“傳感器輸入”,Arduino UNO被用作“映射設備”,10個ROHM LED被用作執行機構。LED通常是精密零件,經常會出現隨機故障。因此,我們選擇了ROHM LED,它們足以耐受電流尖峰,而且性能穩定。十個藍光ROHM LED將根據電位計的旋轉進行映射。將按照以下順序介紹這個項目:
所需元器件有:10 x 藍光ROHM LED、Arduino UNO R3、USB B數據線(通常隨Arduino UNO R3一起提供)、10k 電位計、830 孔無焊面包板 breadboard、20 根公頭轉公頭跳線、1個1kΩ電阻器、基于Windows的計算機,用于編程。
電路原理圖
所有元器件都采購齊全后,第一步是把所有元器件都連接起來。連接要求如下所述:
對于這個項目來說,您需要將10個藍光ROHM LED的正極引腳(較長的一端)分別連接到Arduino的數字引腳。
在本例中,我們使用了數字引腳4-13。
每個LED的負極引腳需要通過1kΩ的電阻器接地。
電位計有三個引腳。第一個連接到Arduino的接地引腳,第二個連接到模擬引腳A5,第三個引腳連接到5V。執行此操作將使第二個引腳的電壓在0-5V之間變化。
連接示意圖如下所示:
實際接線如下所示:
現在,您的系統已經連接好,您已經準備好對Arduino UNO R3進行編程。
設置Arduino IDE
Arduino編程需要設置Arduino IDE。Arduino IDE可在Linux和Windows上使用。對于這個DIY項目,我們將使用Windows桌面應用程序。訪問以下鏈接下載并安裝Arduino IDE:
https://www.arduino.cc/en/Main/Software
選擇以下鏈接:
Windows Installer, 適用于Windows XP及更高版本
成功安裝后,打開Arduino IDE并使用USB B數據線連接Arduino UNO R3:
在Arduino IDE中,從“工具”》“端口”》“COM 3 (Arduino Genuino / UNO)”中選擇適當的COM端口。
這時,您的設置已準備好開始編程。
編程
在Arduino編程中,有兩個基本函數:Void Setup和Void Loop。完整代碼及其解釋如下所示:
void setup() {
//Declare A5 Analog pin as input pin
pinMode(A5, INPUT);
//Declare4-13 Digital Pins as Output Pins (For controlling 10 x ROHM LEDs)
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop() {
//Check Analog value at pin A5 and store it in variable x
int x = analogRead(A5);
//Map analog values ranging from 1-1023 to values 0-10
int y=map(x,0,1023,0,10);
/*Use a loop to turn off LEDs having number greater than y. Here “i+3” corresponds to pin number on arduino. Since 10th LED is connected to Digital Pin number 13. Therefore +3 offset has been used*/
for (int i=10; i>y; i—)
{
digitalWrite(i+3,LOW);
}
//Use a loop to turn on LEDs having number lesser than y
for (int i=0; i;>
{
digitalWrite(i+4,HIGH);
}
delay(5);
}
//As a result number of LEDs lit will corresponding to the position of potentiometer
執行
如果您沒有通過外部插孔為Arduino UNO供電,在執行過程中,請保持它與電腦連接。現在將電位計從一端旋轉到另一端。當電位計在模擬引腳上給出0值時,沒有LED點亮。旋轉電位計時,點亮LED的數量會不斷增加。電位計給出的值達到1023時,點亮LED的數量將達到10??梢钥吹剑覀円呀泴鞲衅髦档姆秶成涞搅薒ED的數量。
電位計的起始位置。(模擬值0)
電位計的中間位置。(模擬值512)
電位計的最終位置。(模擬值1023)
-
映射
+關注
關注
0文章
47瀏覽量
15813 -
Arduino
+關注
關注
188文章
6468瀏覽量
186952
發布評論請先 登錄
相關推薦
評論