亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

您現在的位置是:蟲蟲下載站 > 資源下載 > 設計相關 > Arduino學習筆記4_Arduino軟件模擬PWM

Arduino學習筆記4_Arduino軟件模擬PWM

  • 資源大小:0 K
  • 上傳時間: 2013-10-23
  • 上傳用戶:sh680
  • 資源積分:2 下載積分
  • 標      簽: Arduino PWM 軟件模擬

資 源 簡 介

注:1.這篇文章斷斷續續寫了很久,畫圖技術也不精,難免錯漏,大家湊合看.有問題可以留言.
     2.論壇排版把我的代碼縮進全弄沒了,大家將代碼粘貼到arduino編譯器,然后按ctrl+T重新格式化代碼格式即可看的舒服.

一、什么是PWM

PWM 即Pulse Wavelength Modulation 脈寬調制波,通過調整輸出信號占空比,從而達到改 變輸出平均電壓的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 個8 位精度PWM 引腳,分別是3, 5, 6, 9, 10, 11 腳。我們可以使用analogWrite()控 制PWM 腳輸出頻率大概在500Hz 的左右的PWM 調制波。分辨率8 位即2 的8 次方等于 256 級精度。但是有時候我們會覺得6 個PWM 引腳不夠用。比如我們做一個10 路燈調光, 就需要有10 個PWM 腳。Arduino Duemilanove 2009 有13 個數字輸出腳,如果它們都可以 PWM 的話,就能滿足條件了。于是本文介紹用軟件模擬PWM。

二、Arduino 軟件模擬PWM
Arduino PWM 調壓原理:PWM 有好幾種方法。而Arduino 因為電源和實現難度限制,一般 使用周期恒定,占空比變化的單極性PWM。
通過調整一個周期里面輸出腳高/低電平的時間比(即是占空比)去獲得給一個用電器不同 的平均功率。
如圖所示,假設PWM 波形周期1ms(即1kHz),分辨率1000 級。那么需要一個信號時間 精度1ms/1000=1us 的信號源,即1MHz。所以說,PWM 的實現難點在于需要使用很高頻的 信號源,才能獲得快速與高精度。下面先由一個簡單的PWM 程序開始:

const int PWMPin = 13;
int bright = 0;
void setup()
{
pinMode(PWMPin, OUTPUT);
}
void loop()
{
if((bright++) == 255) bright = 0;
for(int i = 0; i < 255; i++)
{
if(i < bright)
{
digitalWrite(PWMPin, HIGH);

delayMicroseconds(30);
}
else
{
digitalWrite(PWMPin, LOW);
delayMicroseconds(30);
}
}
}

這是一個軟件PWM 控制Arduino D13 引腳的例子。只需要一塊Arduino 即可測試此代碼。 程序解析:由for 循環可以看出,完成一個PWM 周期,共循環255 次。
假設bright=100 時候,在第0~100 次循環中,i 等于1 到99 均小于bright,于是輸出PWMPin 高電平;
然后第100 到255 次循環里面,i 等于100~255 大于bright,于是輸出PWMPin 低電平。無 論輸出高低電平都保持30us。
那么說,如果bright=100 的話,就有100 次循環是高電平,155 次循環是低電平。 如果忽略指令執行時間的話,這次的PWM 波形占空比為100/255,如果調整bright 的值, 就能改變接在D13 的LED 的亮度。
這里設置了每次for 循環之后,將bright 加一,并且當bright 加到255 時歸0。所以,我們 看到的最終效果就是LED 慢慢變亮,到頂之后然后突然暗回去重新變亮。 這是最基本的PWM 方法,也應該是大家想的比較多的想法。
然后介紹一個簡單一點的。思維風格完全不同。不過對于驅動一個LED 來說,效果與上面 的程序一樣。

const int PWMPin = 13;
int bright = 0;
void setup()
{
pinMode(PWMPin, OUTPUT);
}
void loop()
{
digitalWrite(PWMPin, HIGH);
delayMicroseconds(bright*30);
digitalWrite(PWMPin, LOW);
delayMicroseconds((255 - bright)*30);
if((bright++) == 255) bright = 0;
}

可以看出,這段代碼少了一個For 循環。它先輸出一個高電平,然后維持(bright*30)us。然 后輸出一個低電平,維持時間((255-bright)*30)us。這樣兩次高低就能完成一個PWM 周期。 分辨率也是255。

三、多引腳PWM
Arduino 本身已有PWM 引腳并且運行起來不占CPU 時間,所以軟件模擬一個引腳的PWM 完全沒有實用意義。我們軟件模擬的價值在于:他能將任意的數字IO 口變成PWM 引腳。
當一片Arduino 要同時控制多個PWM,并且沒有其他重任務的時候,就要用軟件PWM 了。
多引腳PWM 有一種下面的方式:
int brights[14] = {0}; //定義14個引腳的初始亮度,可以隨意設置
int StartPWMPin = 0, EndPWMPin = 13; //設置D0~D13為PWM 引腳
int PWMResolution = 255; //設置PWM 占空比分辨率
void setup()
{
//定義所有IO 端輸出
for(int i = StartPWMPin; i <= EndPWMPin; i++)
{
pinMode(i, OUTPUT);
//隨便定義個初始亮度,便于觀察
brights[ i ] = random(0, 255);
}
}
void loop()
{
//這for 循環是為14盞燈做漸亮的。每次Arduino loop()循環,
//brights 自增一次。直到brights=255時候,將brights 置零重新計數。
for(int i = StartPWMPin; i <= EndPWMPin; i++)
{
if((brights[i]++) == PWMResolution) brights[i] = 0;
}
for(int i = 0; i <= PWMResolution; i++) //i 是計數一個PWM 周期
{
for(int j = StartPWMPin; j <= EndPWMPin; j++) //每個PWM 周期均遍歷所有引腳
{
if(i < brights[j])\


 

所以我們要更改PWM 周期的話,我們將精度(代碼里面的變量:PWMResolution)降低就行,比如一般調整LED 亮度的話,我們用64 級精度就行。這樣速度就是2x32x64=4ms。就不會閃了。

相 關 資 源

亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级观看| 亚洲国产成人在线视频| 久久高清免费观看| 久久www成人_看片免费不卡| 久久久免费av| 欧美国产日韩一区| 国产精品私房写真福利视频 | 久久狠狠一本精品综合网| 欧美成人免费全部| 国产精品jvid在线观看蜜臀 | 免费一级欧美在线大片| 欧美激情在线播放| 国内伊人久久久久久网站视频| 亚洲毛片在线观看.| 久久久精品久久久久| 国产精品三上| 亚洲免费在线电影| 欧美调教视频| 99视频超级精品| 欧美—级高清免费播放| 亚洲国产一二三| 久久综合婷婷| 国产综合自拍| 欧美亚洲日本国产| 国产欧美91| 欧美影院成人| 国产欧美精品一区二区三区介绍| 亚洲图片自拍偷拍| 国产精品夫妻自拍| 亚洲一区二区在线免费观看视频| 欧美色大人视频| 亚洲最新色图| 国产精品区一区二区三| 亚洲欧美日韩一区二区三区在线| 国产精品久久久久久久浪潮网站 | 亚洲电影自拍| 久久久久久9999| 黄色精品一二区| 久久99在线观看| 欧美wwwwww| 一区在线播放视频| 欧美成人综合网站| 亚洲国产精品久久久久久女王| 欧美一区精品| 国产精品成人aaaaa网站| 日韩一级不卡| 国产精品理论片在线观看| 亚洲欧美精品一区| 欧美日韩国产大片| 日韩视频精品在线| 欧美色播在线播放| 亚洲一区二区高清| 国产一区二区三区免费在线观看| 久久国产乱子精品免费女| 国产午夜亚洲精品羞羞网站| 久久精品国产2020观看福利| 在线欧美三区| 国产精品久久波多野结衣| 欧美一区二区久久久| 黄色国产精品| 国产精品久久久久久户外露出| 欧美一进一出视频| 国产精品久久久久久影院8一贰佰| 久久久7777| 中文av一区二区| 好吊色欧美一区二区三区视频| 欧美激情综合五月色丁香| 午夜久久tv| 亚洲美女在线一区| 激情久久综合| 国产精品久久久久久久久借妻| 久久成人精品| 亚洲视频免费观看| 在线免费观看视频一区| 欧美日韩精品福利| 久久精品成人一区二区三区| 亚洲最新在线视频| 国产伦精品一区二区三区四区免费 | 国产偷自视频区视频一区二区| 欧美一级视频| 亚洲视频电影在线| 亚洲精品黄色| 国内精品免费午夜毛片| 欧美另类视频| 久久久久综合| 久久激情久久| 亚洲在线不卡| 一区二区成人精品| 亚洲精品视频在线观看网站 | 99视频一区| 好看的日韩视频| 国产精品男人爽免费视频1| 欧美日本中文字幕| 欧美国产在线电影| 女同性一区二区三区人了人一 | 欧美日本在线看| 久久久人成影片一区二区三区| 午夜激情久久久| 亚洲一区中文| 亚洲深夜影院| 亚洲欧美韩国| 久久国产夜色精品鲁鲁99| 欧美一区二区大片| 先锋影音一区二区三区| 欧美一级艳片视频免费观看| 午夜欧美不卡精品aaaaa| 亚洲欧美一区二区三区极速播放 | 国产精品网站在线| 国产精品久久网站| 国产日韩欧美中文| 黑人一区二区三区四区五区| 好吊妞这里只有精品| 在线视频国产日韩| 最新日韩在线视频| 亚洲乱码视频| 亚洲永久精品大片| 欧美一级欧美一级在线播放| 久久婷婷激情| 欧美—级高清免费播放| 欧美国产视频日韩| 欧美性猛交xxxx乱大交退制版| 国产精品久久久久久一区二区三区| 国产精品久久久久久模特 | 久久婷婷人人澡人人喊人人爽| 午夜在线视频观看日韩17c| 亚洲电影在线| 99re热这里只有精品视频| 99国产精品久久久久久久久久| 欧美激情一区在线观看| 一本色道综合亚洲| 欧美日韩中文精品| 欧美一区二区三区视频在线观看| 国产亚洲精品v| 欧美日韩专区| 欧美jjzz| 欧美视频一区二区三区| 亚洲一区国产视频| 亚洲国产成人久久| 最新中文字幕亚洲| 在线观看欧美日韩国产| 国产一区二区三区电影在线观看| 欧美日韩另类综合| 国产欧美一区二区视频| 精品成人国产| 欧美日韩国产在线播放网站| 久久久久9999亚洲精品| 久久另类ts人妖一区二区| 欧美国产在线观看| 国产日韩亚洲欧美| 亚洲精品欧美专区| 久久久久久亚洲综合影院红桃| 欧美精品在线观看一区二区| 国产欧美日韩精品丝袜高跟鞋 | 欧美成人午夜激情| 国产精品免费视频观看| 国产综合在线视频| 亚洲影视中文字幕| 老司机免费视频一区二区三区| 欧美一区日本一区韩国一区| 欧美综合第一页| 欧美日韩直播| 亚洲美女中出| 久久久久久九九九九| 欧美性大战xxxxx久久久| 亚洲日本成人在线观看| 欧美在线视频在线播放完整版免费观看| 免费视频一区| 毛片一区二区| 尤妮丝一区二区裸体视频| 亚洲欧美综合v| 国产精品高潮在线| 99国产精品久久久久久久成人热 | 国产精品亚洲一区二区三区在线| 尤物网精品视频| 亚洲欧美日韩国产综合在线 | 亚洲一区久久| 欧美伦理一区二区| 亚洲激情网站| 欧美 日韩 国产精品免费观看| 国产日韩欧美中文| 欧美一区在线视频| 国产一区二区三区成人欧美日韩在线观看 | 欧美日韩在线不卡| 亚洲日本成人网| 欧美激情小视频| 亚洲美女中文字幕| 欧美四级剧情无删版影片| 99视频在线精品国自产拍免费观看| 欧美喷潮久久久xxxxx| 亚洲精品视频免费观看| 欧美三级日韩三级国产三级| 99国产精品久久久久老师 | 一区二区高清在线观看| 欧美日韩国产影院| 亚洲午夜久久久久久久久电影院| 国产精品毛片一区二区三区| 亚洲欧美成人| 亚洲第一黄网| 欧美日韩在线精品| 欧美一区二区视频在线|