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

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

計(jì)算機(jī)三級

  • Arduino學習筆記4_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。就不會閃了。

    標簽: Arduino PWM 軟件模擬

    上傳時間: 2013-10-23

    上傳用戶:mqien

  • 這是一個用三種加密算法

    這是一個用三種加密算法,混合而成的一個加密算法,主要用于通過軟件序列號等,算出加密注冊碼

    標簽: 加密算法

    上傳時間: 2013-12-25

    上傳用戶:xlcky

  • 經典c程序100例==1--10 【程序1】 題目:有1、2、3、4個數字

    經典c程序100例==1--10 【程序1】 題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少? 1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去       掉不滿足條件的排列。 2.程序源代碼: main() { int i,j,k printf("\n") for(i=1 i<5 i++)    /*以下為三重循環*/  for(j=1 j<5 j++)    for (k=1 k<5 k++)    {     if (i!=k&&i!=j&&j!=k)    /*確保i、j、k三位互不相同*/     printf("%d,%d,%d\n",i,j,k)    }

    標簽: 100 程序 10 數字

    上傳時間: 2014-01-07

    上傳用戶:lizhizheng88

  • 調用過程 CM = Confusion_matrix(train_predicts, train_targets) [combining_predicts, errorrate] = combinin

    調用過程 CM = Confusion_matrix(train_predicts, train_targets) [combining_predicts, errorrate] = combining_NB(DP, test_targets, CM) DP,三維數組,(i,j,k)為第k個樣本的DP矩陣 targets 為 0 1 2

    標簽: combining_predicts Confusion_matrix train_predicts train_targets

    上傳時間: 2015-04-04

    上傳用戶:it男一枚

  • 7400 2輸入端四與非門 7401 集電極開路2輸入端四與非門 7402 2輸入端四或非門 7403 集電極開路2輸入端四與非門 7404 六反相器 7405 集電極開路六反相器

    7400 2輸入端四與非門 7401 集電極開路2輸入端四與非門 7402 2輸入端四或非門 7403 集電極開路2輸入端四與非門 7404 六反相器 7405 集電極開路六反相器 7406 集電極開路六反相高壓驅動器 7407 集電極開路六正相高壓驅動器 7408 2輸入端四與門 7409 集電極開路2輸入端四與門 7410 3輸入端3與非門 74107 帶清除主從雙J-K觸發器 74109 帶預置清除正觸發雙J-K觸發器 7411 3輸入端3與門 74112 帶預置清除負觸發雙J-K觸發器 7412 開路輸出3輸入端三與非門 74121 單穩態多諧振蕩器 74122 可再觸發單穩態多諧振蕩器 74123 雙可再觸發單穩態多諧振蕩器 74125 三態輸出高有效四總線緩沖門 74126 三態輸出低有效四總線緩沖門 7413 4輸入端雙與非施密特觸發器 74132 2輸入端四與非施密特觸發器 74133 13輸入端與非門 74136 四異或門 74138 3-8線譯碼器/復工器 74139 雙2-4線譯碼器/復工器 7414 六反相施密特觸發器 74145 BCD—十進制譯碼/驅動器 7415 開路輸出3輸入端三與門 74150 16選1數據選擇/多路開關 74151 8選1數據選擇器 74153 雙4選1數據選擇器 74154 4線—16線譯碼器

    標簽: 輸入端 7400 7401 7402

    上傳時間: 2014-01-10

    上傳用戶:jackgao

  • VB常用算法大全.iso 光盤使用指南 本光盤包括三個子目錄

    VB常用算法大全.iso 光盤使用指南 本光盤包括三個子目錄,內容分別如下: 1、子過程 該子目錄下包含了“VB常用算法大全”書中的全部常用算法子過程。所有的 常用算法子過程按書中的章數分別放在以C開頭的子目錄中。 2、驗證子過程 該子目錄下按章存放驗證上述常用算法子過程的全部驗證子過程。所有這些 為驗證上述子過程而編的過程按書中的章數分別放在以D開頭的子目錄中。 3、工程 該子目錄下包含所有為驗證上述子過程而做的工程,按書中的章數分別放在 以V開頭的子目錄中。 實際上,讀者最方便的是配合書中的說明,在VB系統下直接調用以V開頭的 子目錄中的工程,按運行鍵,即顯示計算結果,從而可迅速,方便地使用該算 法。達到事半功倍的效果。

    標簽: iso 光盤 算法 使用指南

    上傳時間: 2015-07-07

    上傳用戶:CSUSheep

  • % 該Matlab程序基于牛頓-拉夫遜算法

    % 該Matlab程序基于牛頓-拉夫遜算法,用于計算已知導納矩陣、PQ節點、PV節點、平衡節點(UA)的電力網絡潮流 % U - 各節點母線電壓 S - 各節點注入功率 S_net - 電力網絡總損耗 % PQ_P - 實算PQ節點注入有功功率 PQ_Q - 實算PQ節點注入無功功率 % delt_PQ_P - 實算PQ節點有功功率修正值 delt_PQ_Q -實算PQ節點無功功率修正值 % delt_UA_P - 實平衡節點有功功率修正值 delt_U_2 - 實平衡節點電壓平方修正值 % delt_PQV - 實算P Q U^2修正值 J - 雅可比矩陣 % e - 電壓實部 f - 電壓虛部 delt_ef - 電壓實部與虛部修正值

    標簽: Matlab 程序 牛頓 算法

    上傳時間: 2015-07-23

    上傳用戶:王楚楚

  • 經典C語言程序設計100例1-10 如【程序1】 題目:有1、2、3、4個數字

    經典C語言程序設計100例1-10 如【程序1】 題目:有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少? 1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去        掉不滿足條件的排列。 2.程序源代碼: main() { int i,j,k printf("\n") for(i=1 i<5 i++)    /*以下為三重循環*/   for(j=1 j<5 j++)     for (k=1 k<5 k++)     {      if (i!=k&&i!=j&&j!=k)    /*確保i、j、k三位互不相同*/      printf("%d,%d,%d\n",i,j,k)     } }

    標簽: 100 10 C語言 程序設計

    上傳時間: 2013-12-14

    上傳用戶:hfmm633

  • 災色統計聚類的matlab源碼

    災色統計聚類的matlab源碼,可用來進行統計分析,計算白化與灰化的情況

    標簽: matlab

    上傳時間: 2015-10-27

    上傳用戶:1583060504

  • NetTalk是一個適用于局域網和因特網的可視電話軟件 一.開發環境 Windows2000 Server & Visual C++6.0 & SDK +自開發的CWndX類庫(相當于簡化的MF

    NetTalk是一個適用于局域網和因特網的可視電話軟件 一.開發環境 Windows2000 Server & Visual C++6.0 & SDK +自開發的CWndX類庫(相當于簡化的MFC涉及窗口的部分) 二.支持環境 Windows98/ME/2000/XP 三.所涉及協議和標準 網絡傳輸采用UDP協議,音頻壓縮采用G.729標準,視頻壓縮采用H.263標準 四.性能參數 以音頻幀為基準,每幀音頻數據有240個采樣點,時間為240*1000/8000=30ms,8000為音頻的采樣率。 數據接收端隊列緩沖延遲:30*3=90ms 數據發送端錄音延遲:30ms 數據壓縮解壓耗時:<40ms 網絡延遲:<100ms(我想校網情況應該不錯J) 總延遲:<260ms 根據VOIP標準,總延遲<300ms是人可以接受的,以上計算是保守的,實際情況可能會好得多。

    標簽: NetTalk Windows Server Visual

    上傳時間: 2013-12-23

    上傳用戶:yy541071797

主站蜘蛛池模板: 濉溪县| 嘉荫县| 肥西县| 广汉市| 兰西县| 辛集市| 南昌县| 忻城县| 武清区| 仁布县| 阿勒泰市| 桦川县| 托里县| 昭苏县| 乡宁县| 宣威市| 乌兰浩特市| 剑阁县| 阳城县| 尼玛县| 桦川县| 信宜市| 巩义市| 石屏县| 唐河县| 湄潭县| 临猗县| 益阳市| 万州区| 无锡市| 清新县| 兴仁县| 吉木乃县| 齐齐哈尔市| 五大连池市| 什邡市| 桓台县| 自治县| 普洱| 芜湖县| 灵寿县|