2014年3月25日 星期二

超音波傳感器記錄 Ultrasonic sensor data logging

利用陣列儲存每0.01秒的超音波值,當記錄結束後,使用左右鍵觀看資料。

It saves the ultrasonic sensor data with array per 0.01 seconds, and the left and right buttons can be used to view the data after the logging.

task main()
{
SetSensorUltrasonic(S4); //設定超音波感應器為 四 號
int value[100]; //設定要存 100 個值→編號 0~ 99
int i = 0;  //計數用變數

while(i < 100)//存 100 個值
 {
  value[i] = SensorUS(S4); //存當下的感應器值到變數第 i 個
  Wait(10);                //等0.01秒→結束迴圈後為 0.01*100 = 1 秒
  i++;                     //計數加一
 }

i = 0;                   //為顯示,計數歸零,從 0~7 開始顯示
while(1)
 {

  if(ButtonPressed(BTNLEFT,true))//按左鍵→顯示前 8 個值
   {
    if(i > 0)i--;// 沒有負的編號
   }
  else if(ButtonPressed(BTNRIGHT,true))//按右鍵→顯示後 8 個值
   {
    if(i < 13)i++;//每次八個→100除8 = 12...4→有十三頁
   }

//八個值,以第一次為但→i = 0→0,0+1,0+2,0+3,0+4,0+5,0+6,0+7 = 0,1,2,3,4,5,6,7
  NumOut(0,LCD_LINE1,value[i]);
  NumOut(0,LCD_LINE2,value[i+1],false);
  NumOut(0,LCD_LINE3,value[i+2],false);
  NumOut(0,LCD_LINE4,value[i+3],false);
  if(i<13)//每次八個→100除8 = 12...4→有十三頁,第十三頁只有四個值
   {
    NumOut(0,LCD_LINE5,value[i+4],false);
    NumOut(0,LCD_LINE6,value[i+5],false);
    NumOut(0,LCD_LINE7,value[i+6],false);
    NumOut(0,LCD_LINE8,value[i+7],false);
   }
 }
}