日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

和12岁小同志搞创客开发:手撕代码,做一款声控灯

發(fā)布時(shí)間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 和12岁小同志搞创客开发:手撕代码,做一款声控灯 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

機(jī)緣巧合在網(wǎng)上認(rèn)識(shí)一位12歲小同志,從零開(kāi)始系統(tǒng)輔導(dǎo)其創(chuàng)客開(kāi)發(fā)思維和技巧。

項(xiàng)目專(zhuān)欄:https://blog.csdn.net/m0_38106923/category_11097422.html?


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

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

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

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

小時(shí)候有沒(méi)有對(duì)走廊的聲控?zé)艉芨信d趣呢?會(huì)不會(huì)拼命的跺腳只為讓那盞燈點(diǎn)亮。本篇博文我們使用聲音傳感器做個(gè)這樣的聲控?zé)簟V灰爿p輕拍下手,燈就自動(dòng)亮起來(lái)了,沒(méi)了聲音,燈就又自動(dòng)關(guān)了。

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

傳感器連線(xiàn)效果如下所示:

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

int soundPin = 0;       //聲音傳感器接到模擬0
int ledPin =  13;       //LED接到數(shù)字13void 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è)備,所以需要讀取對(duì)應(yīng)模擬口IO的值。與讀取數(shù)字口函數(shù)digitalRead(pin)類(lèi)似,模擬口讀取函數(shù)如下所示:

analogRead(pin)

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

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

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

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

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

print()函數(shù)和println()函數(shù)實(shí)現(xiàn)往串口發(fā)數(shù)據(jù),只是print()函數(shù)沒(méi)有換行功能而println()函數(shù)有換行。它們以ASCII碼形式向串口發(fā)送數(shù)據(jù)。整數(shù)的每一數(shù)位將以ASCII碼形式發(fā)送;浮點(diǎn)數(shù)同樣以ASCII碼形式發(fā)送,默認(rèn)保留小數(shù)點(diǎn)后兩位;字節(jié)型數(shù)據(jù)將以單個(gè)字符形式發(fā)送;字符和字符串會(huì)以其相應(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ù)還有可選的第二個(gè)參數(shù)用于指定數(shù)據(jù)的格式。允許的值為:BIN (binary二進(jìn)制), OCT(octal八進(jìn)制),DEC(decimal十進(jìn)制),HEX(hexadecimal十六進(jìn)制)。對(duì)于浮點(diǎn)數(shù),該參數(shù)指定小數(shù)點(diǎn)的位數(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"

總結(jié)

以上是生活随笔為你收集整理的和12岁小同志搞创客开发:手撕代码,做一款声控灯的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。