日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ardino基础教程 11_PWM调控灯光亮度

發布時間:2025/4/5 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ardino基础教程 11_PWM调控灯光亮度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗十一:PWM調控燈光亮度

Pulse Width Modulation 就是通常所說的PWM,譯為脈沖寬度調制,簡稱脈寬調制。脈沖寬度調制(PWM)是一種對模擬信號電平進行數字編碼的方法,由于計算機不能輸出模擬電壓,只能輸出0 或5V 的的數字電壓值,我們就通過使用高分辨率計數器,利用方波的占空比被調制的方法來對一個具體模擬信號的電平進行編碼。PWM 信號仍然是數字的,因為在給定的任何時刻,滿幅值的直流供電要么是5V(ON),要么是0V(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復脈沖序列被加到模擬負載上去的。通的時候即是直流供電被加到負載上的時候,斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用PWM 進行編碼。輸出的電壓值是通過通和斷的時間進行計算的。輸出電壓=(接通時間/脈沖時間)*最大電壓值

PWM 被用在許多地方,調光燈具、電機調速、聲音的制作等等。
下面介紹一下PWM 的三個基本參數:

1、脈沖寬度變化幅度(最小值/最大值)
2、脈沖周期(1 秒內脈沖頻率個數的倒數)
3、電壓高度(例如:0V-5V)
Arduino 控制器有6 個PWM 接口分別是數字接口3、5、6、9、10、11,前面我們已經做了按鍵控制小燈的實驗,那是數字信號控制數字接口的實驗,我們也做過電位計的實驗,這次我們就來完成一個用電位計控制小燈的實驗。

實驗器材清單

  • 電位器模塊 1個
  • 紅色M5直插LED 1個
  • 220歐姆電阻 1個
  • 面包板 1個
  • 面包板跳線 1扎
  • 電位計即為模擬值輸入我們接到模擬口,小燈我們接到PWM 接口上,這樣通過產生不同的PWM 信號就可以讓小燈有亮度不同的變化。

    實驗原理圖

    我們也可以把11腳和13腳用跳線連起來,我們就不用接LED的線了,更方便。效果一樣。


    在編寫程序的過程中,我們會用到模擬寫入analogWrite(PWM 接口,模擬值)函數,對于模擬寫入analogWrite()函數,此函數用法也很簡單,我們在本實驗中讀取電位計的模擬值信號并將其賦給PWM 接口使小燈產生相應的亮度變化,再在屏幕上顯示出讀取的模擬值,大家可以理解為此程序是在模擬值讀取的實驗程序中多加了將模擬值賦給PWM 接口這一部分,下面給大家提供一段參考源程序。


    參考源程序:
    int potpin=0;//定義模擬接口0
    int ledpin=11;//定義數字接口11(PWM 輸出)
    int val=0;// 暫存來自傳感器的變量數值
    void setup()
    {
    pinMode(ledpin,OUTPUT);//定義數字接口11 為輸出
    Serial.begin(9600);//設置波特率為9600
    //注意:模擬接口自動設置為輸入
    }
    void loop()
    {
    val=analogRead(potpin);// 讀取傳感器的模擬值并賦值給val
    Serial.println(val);//顯示val 變量
    analogWrite(ledpin,val/4);// 打開LED 并設置亮度(PWM 輸
    __________出最大值255)
    delay(10);//延時0.01 秒
    }


    實驗截圖

    實驗現象

    下載完程序,我們旋轉電位計的旋鈕不但可以看到屏幕上數值的變化還也可以清楚的看到我們面包板上的LED 小燈的亮度也在隨之變化。

    程序代碼

    int potpin=0;//定義模擬接口0 int ledpin=11;//定義數字接口11(PWM 輸出) int val=0;// 暫存來自傳感器的變量數值 void setup() { pinMode(ledpin,OUTPUT);//定義數字接口11 為輸出 Serial.begin(9600);//設置波特率為9600 //注意:模擬接口自動設置為輸入 } void loop() { val=analogRead(potpin);// 讀取傳感器的模擬值并賦值給val Serial.println(val);//顯示val 變量 analogWrite(ledpin,val/4);// 打開LED 并設置亮度(PWM 輸__________出最大值255) delay(10);//延時0.01 秒 }

    總結

    以上是生活随笔為你收集整理的Ardino基础教程 11_PWM调控灯光亮度的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。