Hi,大家好!在之前獲取輸入模擬信號的學習中,我們很早就是知道了如何使用旋轉電位計。但在那一次的學習中,我們并沒有進一步來完成控制LED神燈的亮度。今天呢,我們一方面復習之前的學習,另一方面完成用旋轉電位計來控制LED神燈的亮度。
好!還是老規矩,先來看看這次我們需要哪些硬件吧!
硬件方面
arduino-switch-led-parts.jpg (136.94 KB, 下載次數: 190)
下載附件
2016-1-30 18:40 上傳
圖片來源:Arduino電路配件
具體包括如下:
- Arduino UNO電路板(1塊)
- 面包板(1塊)
- 220Ω電阻(1個)
- LED神燈(1盞)
- 面包線(若干)
上面配件中,都是熟悉的面孔,不多說。
軟件方面Arduino官方提供的IDE
連接電路
arduino-switch-led.jpg (116.74 KB, 下載次數: 176)
下載附件
2016-1-30 18:40 上傳
圖片來源:Arduino電路連接
電路的連接也很清晰,不多說。
最后一步!
添加幾行代碼首先,還是新建項目一個窗口。
arduino-ide-new.jpg (70.98 KB, 下載次數: 187)
下載附件
2016-1-30 18:40 上傳
圖片來源:Arduino官方IDE
向其中添加幾行代碼:
- // 定義旋轉電位計模擬信號輸入針腳號
- const int analogInPin = A0;
- // 定義LED神燈數字信號針腳號
- const int analogOutPin = 9;
- // 定義存儲旋轉電位計模擬信號數值
- int sensorValue = 0;
- // 控制LED神燈亮暗的模擬信號數值
- int outputValue = 0;
- // 對Arduino電路板或相關狀態進行初始化方法
- void setup() {
- // 開啟串行通信,并設置其頻率為9600。
- // 如果沒有特別要求,此數值一般都為9600。
- Serial.begin(9600);
- }
- // 系統調用,無限循環方法
- void loop() {
- // 讀取旋轉電位計的數值
- sensorValue = analogRead(analogInPin);
- // 轉換電位計的數值范圍,
- // 將0~1023數值范圍映射到0~255
- outputValue = map(sensorValue, 0, 1023, 0, 255);
- // 將轉換后的數值,應用給LED神燈,
- // 以此控制LED神燈的亮度。
- analogWrite(analogOutPin, outputValue);
- // 向串口調試窗口打印數值
- Serial.print("sensor = ");
- Serial.print(sensorValue);
- Serial.print(" output = ");
- Serial.println(outputValue);
- // 延遲2毫秒,進入下一個loop循環。
- delay(2);
- }
復制代碼
好!代碼輸入完畢!沒有新內容,調用的方法也都是之前見用過的。
arduino-menu.jpg (9.87 KB, 下載次數: 173)
下載附件
2016-1-30 18:40 上傳
圖片來源:Arduino官方IDE的文件編輯菜單選項
點擊上圖中標有向右指向的箭頭圖標,將編寫完成的代碼燒入Arduino電路板。如果一切順利,現在就可以通過控制旋轉電位計來調控LED神燈的亮度啦!
如果想查看串口調試窗口里的輸出信息,可以點擊上圖中最右側的放大鏡圖標,即可查看實時輸出信息。
arduino-switch-led-serial.jpg (122.4 KB, 下載次數: 171)
下載附件
2016-1-30 18:40 上傳
圖片來源:Arduino串口調試窗口
總結這一次的試驗,沒有新內容,總的來說呢,是對之前所學的內容重新做了復習。這里需要特別注意的是map()方法,這個方法還是蠻常用到的。
下期預告下一次,我們將介紹一個新的Arduino家族的成員給大家認識,會是誰呢?Mega2560:http://www.zg4o1577.cn/bbs/dpj-43094-1.html
|