乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      STM32-Stduino小白練習(xí)第三彈--制作呼吸燈

       Astilbe001 2020-01-10

      2019/11/29 星期五作者:Astilbe
      問(wèn)題:如何利用Stduino制作一個(gè)呼吸燈。

      我們之前已經(jīng)學(xué)習(xí)過(guò)如何制作閃爍燈了,原理就是讓LED燈電平時(shí)高時(shí)低,就能形成閃爍的效果。
      那么什么是呼吸燈呢?它與閃爍燈的實(shí)現(xiàn)方法有何區(qū)別?

      呼吸燈大家其實(shí)都見(jiàn)過(guò),看看大家的手機(jī),上面是不是有一顆燈由亮到暗的逐漸變化,又由亮到暗,好像人在呼吸一樣,因而被稱為呼吸燈。
      呼吸燈的原理我們可以從閃爍燈的原理類比推理一下:如果給燈加上一個(gè)隨時(shí)間先增后減的電平,不就實(shí)現(xiàn)由亮到暗了么?反之亦然。
      我們之前學(xué)習(xí)的時(shí)候,先用pinMode()初始化13號(hào)接口,再在loop()中寫(xiě)入高電平與低電平的切換,如下:



      void setup() {
        // put your setup code here, to run once:
      pinMode(13,OUTPUT);
      }

      void loop() {
        // put your main code here, to run repeatedly:
          digitalWrite(13,LOW);
          delay(1000);
          digitalWrite(13,HIGH);
          delay(1000);
          

      }


      但是13引腳輸出的電壓只有高低兩種(即1與0,因此被稱為數(shù)字信號(hào)),不能實(shí)現(xiàn)燈的明暗過(guò)渡。這該怎么辦?

      我們先看一看Stduino這塊板上有沒(méi)有其他引腳。

      大家仔細(xì)觀察,可以發(fā)現(xiàn)其中有的孔邊上的編號(hào)后面有波浪線,有的沒(méi)有。這其實(shí)是劃分了兩種引腳:一類就是我們已經(jīng)用過(guò)的數(shù)字引腳,可以輸出數(shù)字信號(hào),而另一類被稱作模擬引腳,可以輸出pwm模擬信號(hào)。模擬引腳正是我們需要的,因?yàn)槟M信號(hào)它隨時(shí)間的變化規(guī)律就是正弦函數(shù)。
      (數(shù)字信號(hào),隨時(shí)間只能輸出有與沒(méi)有兩個(gè)信號(hào))(圖片來(lái)自網(wǎng)絡(luò))
      (模擬信號(hào),隨時(shí)間呈正弦函數(shù)關(guān)系,先增加后降低,周期性變化)(圖片來(lái)自網(wǎng)絡(luò))
      模擬引腳的初始化,首先我們要選擇一個(gè)模擬引腳,其次信號(hào)參數(shù)也變了。

      void setup() {
      // put your setup code here, to run once:
      pinMode(2,OUTPUT_PMW);//13號(hào)引腳只能輸出數(shù)字信號(hào),我們需要選擇一個(gè)帶波浪線的,即2號(hào)引腳

      }


      有同學(xué)發(fā)現(xiàn)OUTPUT參數(shù)后面跟了PWM,這是什么呢?
      PMW是一種脈沖寬度調(diào)制的技術(shù)類型。單片機(jī)不能輸出連續(xù)的正弦變化的信號(hào),只能模擬,那么是如何做到的呢?
      簡(jiǎn)單的說(shuō),比如你要控制手電筒的亮度,簡(jiǎn)單的辦法就是串聯(lián)一個(gè)電阻,改變電阻,燈的亮度就會(huì)改變。
      還有沒(méi)其他辦法呢?
      這種辦法就是PWM調(diào)節(jié)。有一個(gè)非常流行的比喻。
      假設(shè)在1秒內(nèi),有0.5秒的時(shí)間開(kāi)關(guān)是打開(kāi)的,0.5秒關(guān)閉,那么燈就亮0.5秒,滅0.5秒?,F(xiàn)在實(shí)現(xiàn)了燈的閃爍。如果把頻率調(diào)高一點(diǎn),比如是0.010秒,0.005秒開(kāi),0.005秒滅,那么燈的閃爍頻率就很高,而人眼是感覺(jué)不到的。這時(shí)你發(fā)現(xiàn)不了燈在閃爍,當(dāng)時(shí)你會(huì)發(fā)現(xiàn)手電筒的燈光亮度一直保持在原來(lái)的一半亮度。你會(huì)覺(jué)得通電時(shí)間沒(méi)有變化,手電筒的電壓減到了原來(lái)的一半。同理,如果1毫秒內(nèi),0.1毫秒開(kāi),0.9毫秒滅,那么,燈的亮度就只有原來(lái)的10分之一,電壓也會(huì)被認(rèn)為減到了十分之一。
      這就是PWM的基本原理。即通過(guò)改變開(kāi)關(guān)接通時(shí)間等效改變用電器的電壓。
      而二極管的反應(yīng)速度讓它,能夠讓電壓模擬出正弦變化。



      那么我們可以怎么控制模擬引腳輸出信號(hào)的大小呢?
      通過(guò)analogWrite()。
      其中,即0到255代表占空比。
      那么呼吸燈也就很容易實(shí)現(xiàn)了。代碼如下:

      void setup() {
          // put your setup code here, to run once:
          pinMode(2,OUTPUT_PWM);
      }

      void loop() {
          // put your main code here, to run repeatedly:
          for(int i=0; i<256; i++) {//for循環(huán)語(yǔ)句,讓亮度從0到255
              analogWrite(2,i);
              delay(15);//變化太快可能看不清
          }
          for(int i=255;i>-1;i--) {//for循環(huán)語(yǔ)句,讓亮度從255到0
              analogWrite(2,i);
              delay(15);
          }

      }

      代碼部分結(jié)束了,接下來(lái)是動(dòng)手搭接線路。

      首先,我們這里使用的是發(fā)光二極管,因?yàn)榘l(fā)光二極管能夠?qū)焖僮兓碾娏鞣磻?yīng)。發(fā)光二極管的引線長(zhǎng)邊為正,短邊為負(fù)。
      接下來(lái),將發(fā)光二極管長(zhǎng)邊與D2~相接,短邊與3.3V孔相接(Stduino提供3.3V與5V兩種電壓,紅色發(fā)光二極管工作電壓為1.8~2.4V。)
      編譯下載即可~~~

      本文轉(zhuǎn)載自Stduino網(wǎng)http:///forum.php?mod=viewthread&tid=10&extra=

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多