詳細(xì)介紹
(廣州洋奕)外部探測工作環(huán)境和對象狀態(tài),KDW-250-A1內(nèi)部探測機(jī)器人自身工作狀況,通過內(nèi)外結(jié)合的全面信息交互,傳感器真正實(shí)現(xiàn)讓“機(jī)器”變成“人”,KDW-250-A1保證了工業(yè)生產(chǎn)的自動(dòng)化、無人化升級發(fā)展。同時(shí),傳感器還分為諸多細(xì)分種類,以智能傳感器為主的應(yīng)用,更將推動(dòng)服務(wù)機(jī)器人、特種機(jī)器人等走向未來智能化、信息化的新升級與新發(fā)展。
(有意者,請搜索“廣州洋奕”跟銷售——黃工了解更多,謝謝?。?/span>
transcell荷重元 T7-1820稱重儀表
transcell荷重元 T7-1920稱重儀表
transcell荷重元 T7-2120稱重儀表
transcell荷重元 T7-2820稱重儀表
transcell荷重元 T7-4920稱重儀表
transcell荷重元 LCT3-JSD0401-R接線盒
transcell荷重元 LCT3-JSD0401-I接線盒
transcell荷重元 LCT2-JSD0403-R接線盒
transcell荷重元 LCT2-JSD0403-N接線盒
transcell荷重元 JBOX-4P 接線盒
transcell荷重元 JBOX-4PSS接線盒
transcell荷重元 JBOX-6PSS接線盒
transcell荷重元 JBOX-8PSS接線盒
transcell荷重元 AJB-015接線盒
transcell荷重元 AJB-15防爆接線盒
transcell荷重元 DBS-5Klb
transcell荷重元 DBS-10Klb
transcell荷重元 DBS-15Klb
transcell荷重元 DBS-20Klb
transcell荷重元 DBS-25Klb
transcell荷重元 DBS-30Klb
transcell荷重元 DBS-50Klb
transcell荷重元 DBS-75Klb
transcell荷重元 DBST-1.5T
transcell荷重元 DBST-3T
transcell荷重元 DBST-5T
德國KDW-250-A1傳感器
一、前言
近日,筆者在和同事探討傳感器的使用時(shí),發(fā)現(xiàn)兩個(gè)條件語句的問題,雖然看上去不影響程序執(zhí)行結(jié)果,可是感覺和程序效率有所關(guān)系,特拋出來和大家交流德國VOLFA位移傳感器器KDW-250-A1,希望能得到專家的指點(diǎn)。
二、例程1
以聲音傳感器的使用為例,做一個(gè)聲控?zé)?。在A1號管腳上接了一個(gè)模塊聲音傳感器,在2號數(shù)字管腳上接了一個(gè)LED燈(高電平觸發(fā)),當(dāng)從A1號管腳的返回值大于50時(shí),則點(diǎn)亮2號數(shù)字管腳上的LED燈(寫入一個(gè)高電平)5秒,否則就關(guān)燈。程序如圖1所示:
Arduino代碼如下:
void setup(){
pinMode(2, OUTPUT);
}
void loop(){
if (analogRead(A1) > 50) {
digitalWrite(2,HIGH);
delay(5000);
} else {
digitalWrite(2,LOW);
}
}
筆者在幾乎所有傳感器入門的*課寫的程序都是如此,看上去沒有什么問題,可是細(xì)想一下感覺還是有點(diǎn)不對,因?yàn)樵趌oop()函數(shù)中,所有代碼是重復(fù)循環(huán)的,每次都要判斷A1的返回值是否大于50從而決定是否開關(guān)燈。假定某個(gè)時(shí)間段內(nèi)A1的返回值都小于等于50,那程序會(huì)不斷重復(fù)“digitalWrite(2,LOW);”這個(gè)命令;反之亦然,如果在某個(gè)時(shí)間段內(nèi)A1的返回值都大于50,那么程序會(huì)不斷重復(fù)“ digitalWrite(2,HIGH);delay(5000);”這兩個(gè)命令。而LED燈的亮和滅的狀態(tài)只需要給出一次命令(寫入高電平/低電平)即可,那么這些不斷重復(fù)的指令是不是沒有必要呢?這正是我這寫這篇文章的原因。
如果程序改成這樣呢?
修改后的Arduino程序代碼如下:
void setup(){
pinMode(2, OUTPUT);
void loop(){
if (analogRead(A1) > 50) {
digitalWrite(2,HIGH);
delay(5000);
digitalWrite(2,LOW);
從程序來看,主要是把關(guān)燈代碼:digitalWrite(2,LOW); 放入了符合條件時(shí)執(zhí)行的模塊里,這樣當(dāng)不符合條件時(shí),就不需要執(zhí)行任何代碼了。
三、例程2
以光線傳感器的使用為例,做一個(gè)光控?zé)?。光線傳感器接A1號模擬管腳,LED燈接數(shù)字2號管腳。如果檢測到室內(nèi)光線小于某個(gè)值時(shí),我希望把燈常亮,直到室內(nèi)光線恢復(fù)到正常值時(shí)才關(guān)燈,通常情況下會(huì)代碼會(huì)這樣(圖3):
圖3 Mixly光控?zé)舫绦?/span>
和例程1類似,也存在某個(gè)時(shí)間段內(nèi)光線值恒定小于值時(shí),程序會(huì)不斷重復(fù)發(fā)出向2號數(shù)字管腳寫入高電平的指令,反之就會(huì)不斷重復(fù)發(fā)出向2號數(shù)字管腳寫入低電平的指令。那這個(gè)程序不能像例程1那樣修改,因?yàn)檫@里要求是常亮,不是亮一個(gè)固定的時(shí)間就關(guān)。
因此程序的修改思路是增加一個(gè)標(biāo)志變量flag,該變量默認(rèn)值為0,當(dāng)光線值小于值并且flag為0時(shí)才開燈,并設(shè)置flag變量值為1,這樣當(dāng)某個(gè)時(shí)間段內(nèi),光線值都很暗的時(shí)候,就只需要發(fā)出一次向2號數(shù)字管腳寫入高電平的指令;反之亦然,當(dāng)光線值大于等于值并且flag為1時(shí)才滅燈(也就是只有原來燈是開著的并且室內(nèi)光線正常了)才滅燈,并設(shè)置flag變量值為0,這樣當(dāng)某個(gè)時(shí)間段內(nèi),光線值都很亮的時(shí)候,就只需要發(fā)出一次向2號數(shù)字管腳寫入低電平的指令。修改后的程序如下圖所示(圖4):
修改后的Arduino程序代碼如下:
volatile int flag;
void setup(){
flag = 0;
if (analogRead(A1) < 50 && flag == 0) {
flag = 1;
if (analogRead(A1) >= 50 && flag == 1) {
digitalWrite(2,LOW);
flag = 0;
以上關(guān)于程序效率的問題拋出來和大家探討,不知道修改后的程序是畫蛇添足還是怎樣?是否有必要修改?希望能得到大家的指點(diǎn),有不當(dāng)?shù)牡胤竭€請大家明言,謝謝大家。
為實(shí)現(xiàn)公司長遠(yuǎn)發(fā)展,廣州洋奕從源頭抓起,為消費(fèi)者提供滿意的德國VOLFA位移傳感器器KDW-250-A1,為客戶提升滿意度的通知,同時(shí)解決后顧之憂。