日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

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

 Astilbe001 2020-01-10

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

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

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



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ù)字信號),不能實(shí)現(xiàn)燈的明暗過渡。這該怎么辦?

我們先看一看Stduino這塊板上有沒有其他引腳。

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

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

}


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



那么我們可以怎么控制模擬引腳輸出信號的大小呢?
通過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)語句,讓亮度從0到255
        analogWrite(2,i);
        delay(15);//變化太快可能看不清
    }
    for(int i=255;i>-1;i--) {//for循環(huán)語句,讓亮度從255到0
        analogWrite(2,i);
        delay(15);
    }

}

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

首先,我們這里使用的是發(fā)光二極管,因?yàn)榘l(fā)光二極管能夠?qū)焖僮兓碾娏鞣磻?yīng)。發(fā)光二極管的引線長邊為正,短邊為負(fù)。
接下來,將發(fā)光二極管長邊與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è)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多