arduino調節LED

我們通過一個例子來說明arduino的用法,我們希望通過電位器來調節led的亮度

通過電位器調節led

如圖所示從arduino上從1到13的埠被稱作數字埠,這些埠可以輸出和輸入高電平或低電平,我們看到led的正極與 ~9 埠相連,負極與 GND 相連,之所以選擇帶有 ~ 的數字埠是因為帶有 ~ 的數字埠可以進行脈衝寬度調製來 產生高電平到低電平之間的電壓,由於數字埠只能產生高電平和低電平,所以通過單位時間內的高電平和低電平的比例的變化來控制輸出的電壓,例如: 單位時間內有n個低電平m個高電平那麼單位時間內的平均電平值可以看做:

平均電平=高電平*m/(m+n)

當m與n足夠大時,這個平均電平可以視作單位時間內的電平值,而arduino中帶有~的數字埠就可以產生這樣的效果。

Advertisements

m/(m+n)實際上就是我們所說的占空比,即高電平在一個周期之內所佔的時間比率。

下面我們來看看如何讀取電位器的值來控制LED的亮度:如圖所示A0到A5是arduino的模擬埠,這些模擬埠可以讀取電位器的值,電位器一共有三個埠,兩邊的埠分別接arduino上的5v和GND埠,電位器中間的埠接A0到A5之間的模擬口(本例中連接的是A0)。

為了讓大家更好的理解代碼的含義我們先講一下arduino的語言的一些基本的語法:

1.arduino的編程語言中,是將 等號左邊的值賦給右邊,例如a=b是將a的值賦給b。

2.analogRead(模擬端的名稱)的意思是將模擬引腳的電壓值讀出,然後表示為一個模擬值,這個模擬的值默認為從0到1023,也就是說將0v到5v分成了1024份,每個電壓值對應一個模擬值,從0到1023。(arduino中高電平是5v低電平是0v,所以可以讀出電位器信號引腳(一般是中間那個引腳)的電壓值在(0v到5v之間)。)

Advertisements

3.analogWrite(埠1, 埠2)的意思是將埠2的模擬值賦給埠1

4. map(模擬量名, 0, 1023, 0, 整數n)將sensorValue的值由0到1023份轉換成0到 整數n 份,這樣做是為了改變電位器的靈敏度。

下面附上實現arduino調節LED亮度調節的代碼供參考

int analogInPin = A0; //定義一個模擬埠 analogInPin

int analogOutPin = 9; //定義一個數字埠analogOutPin

int sensorValue = 0; // 設定一個舵機值變數命名為 sensorValue,初值為0

int outputValue = 0; //

void setup() {

}

void loop() {

sensorValue = analogRead(analogInPin); // 將讀取到的模擬值賦值給 sensorValue

outputValue = map(sensorValue, 0, 1023, 0, 255); // 將sensorValue的值由0到1023份轉換成0到255份

analogWrite(analogOutPin, outputValue); //當 analogOutPin被賦模擬值outputValue后,9號埠經過脈衝寬度調製輸出電壓的模擬值。

delay(2);//延遲2ms

}

Advertisements

你可能會喜歡