曉東
樓道中的聲光雙控?zé)羰且环N很常見的利用聲音和光線信號來控制照明的電子裝置,其應(yīng)用場景是在光線昏暗時對一定強度的響聲做出亮燈“回應(yīng)”,持續(xù)十幾秒鐘后再關(guān)閉燈光照明,也就是必須要同時滿足光線較暗和響聲達(dá)到一定程度這兩個條件才會“開燈”,否則一直處于“不工作”狀態(tài)。在Arduino中,我們可以利用聲音傳感器和光線傳感器來分別檢測環(huán)境周圍的聲音與光線強弱,然后分別通過Arduino IDE代碼編程、Python代碼編程和Mind+圖形化編程三種方式,實現(xiàn)“聲光雙控?zé)簟惫δ堋?h3>1.實驗器材與電路連接
實驗器材:Arduino UNO主板一個,聲音傳感器一個,光線傳感器一個,紅色LED燈一支,面包板一塊,各種顏色的杜邦線若干。
首先,將LED燈長腿插入13號引腳,短腿插入GND接地引腳;接著,將Arduino的5V和GND與面包板邊緣插槽連接(紅色與藍(lán)色標(biāo)注),再通過杜邦線將聲音傳感器和光線傳感器的VCC正極和GND接地也插接至面包板;然后將聲音傳感器的OUT信號輸出端連接至Arduino的2號數(shù)字引腳,光線傳感器的AO模擬信號輸出端連接至Arduino的A2模擬引腳;最后,通過數(shù)據(jù)線將Arduino與計算機USB接口連接(如圖1)。
首先,在Arduino IDE中通過“int led = 13;”和“int SoundSensorPin = 2;”兩個語句,分別對LED燈和聲音傳感器的連接引腳進行聲明;接著,在setup()函數(shù)中通過“pinMode(led,OUTPUT);”和“pinMode(SoundSensorPin,INPUT);”兩個語句,設(shè)置13號引腳為輸出模式、2號引腳為輸入模式。
在loop()函數(shù)中,先通過“int LightSensorValue
=analogRead(A2);”語句,建立變量LightSensorValue,其值是讀取光線傳感器通過A2模擬引腳的傳輸數(shù)據(jù);再通過“int SoundSensorValue = digitalRead(SoundSensorPin);”語句,建立變量SoundSensorValue,其值是讀取聲音傳感器通過2號數(shù)字引腳的傳輸數(shù)據(jù)。
經(jīng)過實驗測試后發(fā)現(xiàn),正常室內(nèi)光線時所測得的光線數(shù)據(jù)是220左右,用手捂住光線傳感器(模擬低光照條件)時測得的光線數(shù)據(jù)是930左右,而用手電照射光線傳感器時測得的光線數(shù)據(jù)是20左右,這說明光線越強,數(shù)據(jù)值越小,光線越弱,數(shù)據(jù)值越大。通過調(diào)節(jié)聲音傳感器上的電位器,使其處于一個比較合適的檢測環(huán)境周圍聲音強度范圍內(nèi),發(fā)現(xiàn)“沒有聲音”時的檢測值是1(對應(yīng)HIGH高電平),“有聲音”時的檢測值是0(對應(yīng)LOW低電平)。因此在“if…else…”選擇結(jié)構(gòu)中將判斷條件構(gòu)建為“SoundSensorVal
ue == LOW and LightSensorValue >= 500”,也就是判斷聲音傳感器的檢測值是否為0、光線傳感器的檢測值是否在500以上,當(dāng)這兩個條件同時滿足時,就應(yīng)當(dāng)去控制LED燈發(fā)光:“digitalWrite(led,HIGH);”,而且要讓它持續(xù)發(fā)光3秒:“delay(3000);”。條件不成立的話,LED處于熄滅狀態(tài),在else分支中通過“digitalWrite(led,LOW);”語句來實現(xiàn)(如圖2)。
將程序編譯并上傳Arduino,對聲光雙控?zé)暨M行測試:當(dāng)室內(nèi)光線處于正常照明狀態(tài)時,音箱中音樂的強度再大,LED燈也不會亮;如果用手捂住光線傳感器,此時再播放音樂的話,LED燈就會應(yīng)聲而亮(如圖3)。同樣,當(dāng)光線傳感器被捂住時,保持周圍環(huán)境處于比較安靜的狀態(tài),LED燈也不會發(fā)光。
借助pinpong庫模塊,在PythonIDLE編程環(huán)境中對Arduino進行代碼編程。首先,通過“import time”和“from pinpong.board import Board,Pin”語句,導(dǎo)入time和pinpong庫模塊;“Board(“uno”).begin()”語句的作用是實現(xiàn)對Arduino UNO板型的初始化操作(包括連接主板端口號的自動識別);接著,分別建立led、SoundSensor和LightSensor三個變量,分別對應(yīng)LED燈、聲音傳感器和光線傳感器的聲明設(shè)置,語句“l(fā)ed = Pin(Pin.D13, Pin.OUT)”的作用是設(shè)置連接在13號引腳的LED燈為信號輸出端,語句“SoundSensor = Pin(Pin.D2, Pin.IN)”的作用是設(shè)置連接在2號數(shù)字引腳的聲音傳感器為信號輸入端,語句“LightSensor = Pin(Pin.A2, Pin.ANALO
G)”的作用是設(shè)置連接在A2模擬引腳的光線傳感器為模擬信號端。