1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        和12歲小同志搞創(chuàng)客開發(fā):手撕代碼,做一款聲控?zé)?/h1>

        共 2079字,需瀏覽 5分鐘

         ·

        2021-11-17 18:00

        點擊上方藍(lán)色字體,關(guān)注我們


        之前兩篇博文主要是數(shù)字量輸入、輸出類型傳感器的驅(qū)動。


        和12歲小同志搞創(chuàng)客開發(fā):手撕代碼,點亮LED燈


        和12歲小同志搞創(chuàng)客開發(fā):手撕代碼,做一款人體感應(yīng)燈


        本篇博文講講模擬量傳感器的驅(qū)動。


        小時候有沒有對走廊的聲控?zé)艉芨信d趣呢?會不會拼命的跺腳只為讓那盞燈點亮。本篇博文我們使用聲音傳感器做個這樣的聲控?zé)?。只要你輕輕拍下手,燈就自動亮起來了,沒了聲音,燈就又自動關(guān)了。


        MIC聲音傳感器是一款基于麥克風(fēng)為聲音檢測的傳感器,可用來對周圍環(huán)境中的聲音強(qiáng)度進(jìn)行檢測,具有300倍的放大器,輸出模擬信號能使用3.3V和5V為基準(zhǔn)AD采集,可以用來實現(xiàn)根據(jù)聲音大小進(jìn)行互動的效果、制作聲控機(jī)器人、聲控開關(guān)、聲控報警等。



        傳感器連線效果如下所示:



        實現(xiàn)代碼如下所示:?


        int soundPin = 0;       //聲音傳感器接到模擬0int ledPin =  13;       //LED接到數(shù)字13
        void setup() { pinMode(ledPin, OUTPUT); // Serial.begin(9600); //用于調(diào)試}
        void loop(){ int soundState = analogRead(soundPin); //讀取傳感器的值 // Serial.println(soundState); //串口打印聲音傳感器的值
        //如果聲音值大于10,亮燈,并持續(xù)10s,否則關(guān)燈 if (soundState > 10) { digitalWrite(ledPin, HIGH); delay(10000); }else{ digitalWrite(ledPin, LOW); }}


        在setup()中只設(shè)置了LED為輸出,由于聲音傳感器模擬口都是輸入設(shè)置,所以不需要設(shè)置了。


        聲音傳感器是輸入設(shè)備,所以需要讀取對應(yīng)模擬口IO的值。與讀取數(shù)字口函數(shù)digitalRead(pin)類似,模擬口讀取函數(shù)如下所示:


        analogRead(pin)


        這個函數(shù)用于從模擬引腳讀值,pin是指連接的模擬引腳。Arduino的模擬引腳連接到一個了10位AD轉(zhuǎn)換,輸入0~5V的電壓對應(yīng)讀到0~1023的數(shù)值,每個讀到的數(shù)值對應(yīng)的都是一個電壓值。比如:ADC數(shù)值512代表電壓2.5V。


        為了方便調(diào)測,程序中添加了串口監(jiān)視器功能,需要修改預(yù)設(shè)值的話,可以打開串口監(jiān)視器,看看你需要的聲音強(qiáng)度的值在什么范圍,然后做相應(yīng)調(diào)整就可以了。?

        begin()函數(shù)實現(xiàn)打開串口,設(shè)置通信波特率,原型如下所示:


        void HardwareSerial::begin  (long speed)
        speed:波特率數(shù)值


        常用串口波特率包括:4800、9600、19200、38400、115200等。


        print()函數(shù)和println()函數(shù)實現(xiàn)往串口發(fā)數(shù)據(jù),只是print()函數(shù)沒有換行功能而println()函數(shù)有換行。它們以ASCII碼形式向串口發(fā)送數(shù)據(jù)。整數(shù)的每一數(shù)位將以ASCII碼形式發(fā)送;浮點數(shù)同樣以ASCII碼形式發(fā)送,默認(rèn)保留小數(shù)點后兩位;字節(jié)型數(shù)據(jù)將以單個字符形式發(fā)送;字符和字符串會以其相應(yīng)的形式發(fā)送。例如以下示例:

        Serial.print(78) 發(fā)送 "78"Serial.print(1.23456) 發(fā)送 "1.23"Serial.print('N') 發(fā)送 "N"Serial.print("Hello world.") 發(fā)送 "Hello world."


        print()函數(shù)和println()函數(shù)還有可選的第二個參數(shù)用于指定數(shù)據(jù)的格式。允許的值為:BIN (binary二進(jìn)制), OCT(octal八進(jìn)制),DEC(decimal十進(jìn)制),HEX(hexadecimal十六進(jìn)制)。對于浮點數(shù),該參數(shù)指定小數(shù)點的位數(shù)。例如以下示例:


        Serial.print(78, BIN) gives "1001110"Serial.print(78, OCT) gives "116"Serial.print(78, DEC) gives "78"Serial.print(78, HEX) gives "4E"Serial.println(1.23456, 0) gives "1"Serial.println(1.23456, 2) gives "1.23"Serial.println(1.23456,?4)?gives?"1.2346"

        往期推薦



        點擊閱讀原文,更精彩~

        瀏覽 17
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報

        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧美精品中文字幕在线观看 | 日本干b视频 | 婷婷久久婷婷色五月 | 日韩电影一二三区 | 蜜桃在线无码 | www.逼逼 | 黄色短篇小说在线阅读 | chinese中国少妇的hd | 免费日批视频在线观看 | 亚洲美女操B免费视频 |