周富峰 孫樹(shù)森
【摘 要】在編寫(xiě)的程序中加入循環(huán)結(jié)構(gòu),加入相關(guān)的知識(shí)點(diǎn),就能夠?qū)W好循環(huán)結(jié)構(gòu)的編程,當(dāng)學(xué)生理解了循環(huán)結(jié)構(gòu)和用法就能夠?qū)⒅R(shí)用到機(jī)器人完成任務(wù)的各種循環(huán)程序編寫(xiě)了。
【關(guān)鍵詞】傳感器數(shù)據(jù);循環(huán)結(jié)構(gòu)
機(jī)器人能夠自動(dòng)運(yùn)行需要傳感器,機(jī)器人傳感器有多種,比如:紅外傳感器、角度傳感器、超聲波傳感器、灰度傳感器、指南針傳感器等,在樂(lè)高機(jī)器人主控器上有自帶的傳感器檢測(cè)程序,而其他類型的多數(shù)機(jī)器人需要使用者自己編寫(xiě)檢測(cè)程序。用好傳感器就能充分激發(fā)調(diào)動(dòng)學(xué)生學(xué)習(xí)機(jī)器人興趣,如用機(jī)器人指南針來(lái)檢測(cè)房屋的方向,看看是不是正南正北,偏離多大的角度;利用灰度傳感器來(lái)測(cè)一測(cè)皮膚、頭發(fā)的光亮值等。
以下以未來(lái)伙伴機(jī)器人的JC代碼編程來(lái)講述如何使用傳感器檢測(cè)講解循環(huán)程序的編寫(xiě)教學(xué)方法。
一、傳感器的簡(jiǎn)單檢測(cè)程序運(yùn)行討論
樣例程序:
int a=0;
void main()
{
a = AI(0);
printf(“a =%d”,a);
}
二、簡(jiǎn)單改進(jìn),引入while最簡(jiǎn)單的循環(huán),分析結(jié)構(gòu),觀察現(xiàn)象分析,理解while(1)循環(huán)
新知識(shí)點(diǎn):while循環(huán)結(jié)構(gòu),循環(huán)條件“1”“0”的意義。
檢測(cè)樣例程序
int a=0;
void main()
{
while(1)
{
a=AI(0);
printf("a=%d",a);
}
}
三、能夠隨時(shí)保持記錄數(shù)據(jù)的程序
新知識(shí)點(diǎn):1.while循環(huán)條件使用傳感器數(shù)據(jù)作為條件。2.循環(huán)條件的獲取和處理。3.循環(huán)條件的數(shù)據(jù)類型。
在檢測(cè)中增加一個(gè)按鈕,接在DI端口上的就是數(shù)字類型,獲取值是“1”或“0”,接在AI端口上就是模擬,獲取值是可能是0~254(具體由主控器廠商設(shè)定),下面以按鈕接在模擬口為例編程,程序分析見(jiàn)后面的注釋。
int a=1024; ? //按鈕獲取數(shù)據(jù)存放到a
int m=0; //檢測(cè)的傳感器數(shù)據(jù)存放到m
void main()
{
a=AI(0); //為進(jìn)入下面循環(huán)獲得循環(huán)條件的數(shù)據(jù)
while(a≥500) //按鈕不按下a值為1024,滿足循環(huán)條件循環(huán)
{
m=AI(4);
//傳感器檢測(cè)
printf(“m=%d”,m); //傳感器檢測(cè)的數(shù)據(jù)顯示出來(lái)
wait(0.300000); //降低數(shù)據(jù)顯示的閃爍有利于讀取數(shù)據(jù)
a=AI(0); //更新循環(huán)條件,監(jiān)測(cè)按鈕是否按下,當(dāng)按下時(shí)a==0
}
wait(20); //顯示保持
}
這個(gè)程序能夠在程序獲取到數(shù)據(jù)的瞬間按下按鈕,數(shù)據(jù)就可以停留在顯示屏上一段時(shí)間。但它的缺點(diǎn)是要重新檢測(cè)就要重新啟動(dòng)程序。
四、可以重復(fù)檢測(cè)好用的檢測(cè)程序
知識(shí)點(diǎn):循環(huán)嵌套程序
int a=1024;
int m=0;
void main( )
{
a = AI(0);
while(1) 無(wú)限循環(huán),循環(huán)內(nèi)檢測(cè)、數(shù)據(jù)保持可重復(fù)進(jìn)行 {
while(a ≥ 500)
{
m=AI(4);
printf( “m =%d” ,m);
wait( 0.300000 );
a = AI(0); //按鈕檢測(cè),當(dāng)按下時(shí)a==0
}
while(a <500) ? ? ? //按鈕按下,程序在此循環(huán)不斷檢測(cè)按鈕數(shù)據(jù),讀數(shù)保持
{
a = AI(0);
}
}
}
五、智能多傳感器檢測(cè)程序
一些機(jī)器人顯示屏顯示空間有限,采用循環(huán)程序加上一些運(yùn)算等,就可以將我們要知道的一些數(shù)據(jù)逐一顯示出來(lái),下例程序有采用while循環(huán)進(jìn)行檢測(cè)數(shù)據(jù)并且用一些變量來(lái)存儲(chǔ)數(shù)據(jù),亦有采用while循環(huán)來(lái)顯示數(shù)據(jù)同時(shí)等待按鈕按下顯示下一個(gè)數(shù)據(jù)內(nèi)容。
int a,b,min1,min2,max1,max2,n,an;
void main()
{
min1 = AI(4); ? //AI(4)最小值
max1 = AI(4); ? //AI(4)最大值
min2 = AI(5); //AI(5)最小值
max2 = AI(5); ? //AI(5)最大值
an=AI(0); ? ? //an存放按鈕狀態(tài)
通過(guò)以上對(duì)傳感器一系列數(shù)據(jù)檢測(cè)程序的編寫(xiě)和實(shí)際檢測(cè),加上教師對(duì)程序結(jié)構(gòu)和相關(guān)知識(shí)的講解,能夠使學(xué)生掌握循環(huán)程序的結(jié)構(gòu)有了較深的理解。在此基礎(chǔ)上就可以引導(dǎo)學(xué)生用循環(huán)程序來(lái)解決機(jī)器人智能行走、智能完成一些較為復(fù)雜的任務(wù)等。
【參考文獻(xiàn)】
[1]徐科軍.傳感器與檢測(cè)技術(shù)[M].北京:電子工業(yè)出版社,2007
[2]李科杰.新編傳感器技術(shù)手冊(cè)[M].北京:國(guó)防工業(yè)出版社,2003