Lecture 11/14 - 可變電阻
Adjustable Resistance/ Potentiometer (VR)
FC Tien, YP Liu
Dept. of IE&M, Taipei Tech
What is 可變電阻
可變電阻(Variable Resistance)是 一個標準的類比元件,它可以依照我 們旋轉旋鈕的變化產生不同的電阻值
名稱:可變電阻 類型:類比元件
控制:改變電壓之輸出(壓降)
極性:無正負之分,但有接腳之別(in/out)
可變電阻
當將可變電阻接上電源並使用三用電表去量測電壓時,轉動可變電阻的旋鈕的 同時也可以觀察到電壓的變化,如下圖所示
注意:於實際操作需避免使用左方圖示的方式將電阻值轉變為0,如此情況
會造成短路
可變電阻之接法
可量測到輸出的電壓 輸入電壓5V
接地
How to use potentiometer?
Analog to Digital Converter -- AD Converter
Arduino 本身就具有類比轉數位的轉換器,下面則是該轉換器 的介紹。
Arduino (ATmega8) has 有6個ADC 輸入
(ADC = Analog to Digital Converter)
讀取介於0到5伏特的電壓
解析度為10 bits(1024個狀態)
換句話說, 能測量到5/1024 = 4.8 mV 最小電壓的改變
A0~A5類比輸入的腳位
Arduino – AnalogRead Command
See the website for details -- reference
Int sensorValue = analogRead(sensorPin);
analogRead() 讀進來的是一個 10 位元的數值,值域為 0 到 1023
analogWrite(ledPin, Value);
由於 analogWrite()的參數只能接受 0 到 255 的數值
使用可變電阻調LED光
目標: 以可變電阻之輸出來控制 LED 亮度
需求:
由A3讀入輸出的電壓
再由變動可變電阻所得 之電壓經由 P9 的digital output 來控制LED之亮 度
Note: 所讀入之analog 訊號為10 bit,輸出之訊 號為 8 bit
Arduino Program – 由可變電阻所量得知電壓控制LED亮度
//vr
int potPin = A3; //宣告可變電阻所用的類比輸入腳位 int ledPin = 9; //宣告 LED 燈號腳位
void setup() {
Serial.begin(9600); //設定 SerialPort 的傳輸速率,鮑率為 9600 pinMode(potPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
int sensorValue = analogRead(potPin); //讀取可變電阻讀值並且放到 sensorValue 變數裏 Serial.print("From:");
Serial.print(sensorValue, DEC); //把電阻值顯示在電腦。DEC 代表以十進位顯示數字
sensorValue = sensorValue / 4; // 也可以用 Map 指令 map(value, fromLow, fromHigh, toLow, toHigh) Serial.print(" To:");
Serial.println(sensorValue, DEC); //把電阻值顯示在電腦。DEC 代表以十進位顯示數字 //sensorValue = map(sensorValue, 0, 1023, 0, 255);
/*
analogRead() 讀進來的是一個 10 位元的數值,值域為 0 到 1023,
由於 analogWrite()的參數只能接受 0 到 255 的數值,
所以得將 sensorValue 除以 4,
讓 sensorValue 的數值從 0-1023 等比例縮小到 0-255 的範圍。
*/
analogWrite(ledPin, sensorValue);
delay(150);
}