2013年2月26日 星期二

2012年12月17日 星期一

101學年第2學期_期末測驗與報告

請修101學年第2學期機器人設計與實作課程同學:
於102年1月8日(二)下午6:00以前
(1)完成期末實作測驗(順反轉循跡5圈競速)
(2)繳交期末報告, 內容A4, 10頁以上(不含封面), 請儘量強化自己完成的部份, 例如:演算法, 控制程式(C, VB, Robolab, NXT-G), 硬體結構, 可適當加入圖片與照片. 

Robot 設計與模擬

NXT simulation 模擬



軟體下載

2012年11月21日 星期三

Visual Basic, VB 資源

VB真好玩

VB 2010 Express 範例程式

Visual Studio 2010 Express ISO檔 (1.8GB)

請在VB2010 Express下練習編譯執行下列範例

example -01 

Module Module1  '逗號後面表示為註解
    Sub Main()  'VB Console Application (控制台應用程式的主程式開始) 
        Console.WriteLine("Hello Robot!")  '印出字串
        Console.Write("Press any key to accomplish.")  '提示使用者按enter鍵結束
        Console.ReadLine()  '讀取使用者鍵盤輸入  
    End Sub  '(控制台應用程式的主程式結束)  
End Module

example -02  Randomize 函式   Rnd 函式

Module Module1  '逗號後面表示為註解
    Sub Main()  'VB Console Application (控制台應用程式的主程式開始)
        Dim a As Integer  '宣告一個整數integer的變數variable
        Randomize()  ' Randomize 將使用 Timer 函式傳回的值做為新的種子值,來初始化亂數產生器。
        a = CInt(Int((100 * Rnd()) + 1))  '計算, 取 1-100 的亂數
        Console.WriteLine("The Random Number is " & a & ".")  '印出字串
        Console.Write("Press any key to accomplish.")  '提示使用者按enter鍵結束
        Console.ReadLine()  '讀取使用者鍵盤輸入  
    End Sub  '(控制台應用程式的主程式結束)  
End Module

example -03  For...Next 迴圈

Module Module1  '逗號後面表示為註解
    Sub Main()  'VB Console Application (控制台應用程式的主程式開始)
        Dim a As Integer  '宣告一個整數integer的變數variable
        Dim n As Integer
        Randomize()  ' Randomize 將使用 Timer 函式傳回的值做為新的種子值,來初始化亂數產生器。
        For n = 1 To 10 Step 1  'for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1 
            a = CInt(Int((100 * Rnd()) + 1))  '計算, 取 1-100 的亂數
            Console.WriteLine("The Random Number is " & a & ".")  '印出字串
        Next 
        Console.Write("Press any key to accomplish.")  '提示使用者按enter鍵結束
        Console.ReadLine()  '讀取使用者鍵盤輸入  
    End Sub  '(控制台應用程式的主程式結束)  
End Module

example -04  If...Then...Else 條件判斷 

Module Module1  '逗號後面表示為註解
    Sub Main()  'VB Console Application (控制台應用程式的主程式開始)
        Dim a As Integer  '宣告一個整數integer的變數variable
        Dim n As Integer
        Randomize()  ' Randomize 將使用 Timer 函式傳回的值做為新的種子值,來初始化亂數產生器。
        For n = 1 To 10 Step 1  'for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1 
            a = CInt(Int((100 * Rnd()) + 1))  '計算, 取 1-100 的亂數
            Console.WriteLine("The " & n & "th Random Number is " & a & ".")  '印出第n個隨機數的字串
            '//////////////////////////////////////////////////////////////////////////////////////////////////
            '//模擬跟線自走車的演算法  
            '//////////////////////////////////////////////////////////////////////////////////////////////////
            If (a < 45) Then   ' if 條件判斷
                'Console.WriteLine("Light Sensor: " & a & ", Detect: BLACK, Left Power: 80, Right Power: 50 ")
                Console.WriteLine("光感值: " & a & ", 偵測到黑色區域, 左輪Power輸出: 80, 右輪Power輸出: 50 ")
            End If   'if 條件判斷結束

            If (a > 45) Then   ' if 條件判斷
                'Console.WriteLine("Light Sensor: " & a & ", Detect: WHITE, Left Power: 50, Right Power: 80 ")
                Console.WriteLine("光感值: " & a & ", 偵測到白色區域, 左輪Power輸出: 50, 右輪Power輸出: 80 ")
            End If   'if 條件判斷結束

            If (a = 45) Then   'if 條件判斷
                'Console.WriteLine("Light Sensor: " & a & ", Detect: EDGE, Left Power: 80, Right Power: 80 ")
                Console.WriteLine("光感值: " & a & ", 偵測到黑線邊緣, 左輪Power輸出: 80, 右輪Power輸出: 80 ")
            End If   'if 條件判斷結束   
            '//////////////////////////////////////////////////////////////////////////////////////////////////
        Next  'for 迴圈loop 程式碼區塊結束
        Console.Write("Press any key to accomplish.")  '提示使用者按enter鍵結束
        Console.ReadLine()  '讀取使用者鍵盤輸入  
    End Sub  '(控制台應用程式的主程式結束)  
End Module

example -05

Module Module1  '逗號後面表示為註解
    Sub Main()  'VB Console Application (控制台應用程式的主程式開始)
        Dim a As Integer  '宣告一個整數integer的變數variable
        Dim b, loops As Integer
        Dim n As Integer
        Randomize()  ' Randomize 將使用 Timer 函式傳回的值做為新的種子值,來初始化亂數產生器。
        '模擬光感測器讀值30次
        loops = 0  '紀錄自走車完成迴圈數--變數歸零
        For n = 1 To 30 Step 1  'for 迴圈loop , n=1開始, 當n<=30時, 執行 loop 內的指令, 執行完畢 n+1 
            a = CInt(Int((100 * Rnd()) + 1))  '計算, 取 1-100 的亂數
            Console.WriteLine("The " & n & "th Random Number is " & a & ".")  '印出第n個隨機數的字串
            '//////////////////////////////////////////////////////////////////////////////////////////////////
            '//模擬跟線自走車的演算法  
            '//////////////////////////////////////////////////////////////////////////////////////////////////
            If (n Mod 5 = 0) Then   'n除以5的餘數等於0, n 為 5 的倍數
                b = 30   '表示第二顆感測器看到黑色起跑線
            Else
                b = 60   '表示第二顆感測器看到白色區域 (奔跑中), n 不為 5 的倍數 
            End If
            If (b < 45) Then  '表示第二顆感測器看到黑色起跑線
                loops = loops + 1  '紀錄自走車完成迴圈數--變數+1更新
                Console.WriteLine("Run " & loops & "th Loop..")
            End If
            If (loops >= 5) Then '表示自走車已完成5圈
                Console.WriteLine("Five-loop Task Completed!")
                Exit For
            End If
            If (a < 45) Then   ' if 條件判斷
                'Console.WriteLine("Light Sensor: " & a & ", Detect: BLACK, Left Power: 80, Right Power: 50 ")
                Console.WriteLine("光感值: " & a & ", 偵測到黑色區域, 左輪Power輸出: 80, 右輪Power輸出: 50 ")
            End If   'if 條件判斷結束

            If (a > 45) Then   ' if 條件判斷
                'Console.WriteLine("Light Sensor: " & a & ", Detect: WHITE, Left Power: 50, Right Power: 80 ")
                Console.WriteLine("光感值: " & a & ", 偵測到白色區域, 左輪Power輸出: 50, 右輪Power輸出: 80 ")
            End If   'if 條件判斷結束

            If (a = 45) Then   'if 條件判斷
                'Console.WriteLine("Light Sensor: " & a & ", Detect: EDGE, Left Power: 80, Right Power: 80 ")
                Console.WriteLine("光感值: " & a & ", 偵測到黑線邊緣, 左輪Power輸出: 80, 右輪Power輸出: 80 ")
            End If   'if 條件判斷結束   
            '//////////////////////////////////////////////////////////////////////////////////////////////////
        Next  'for 迴圈loop 程式碼區塊結束
        Console.Write("Press any key to accomplish.")  '提示使用者按enter鍵結束
        Console.ReadLine()  '讀取使用者鍵盤輸入  
    End Sub  '(控制台應用程式的主程式結束)  
End Module

機器人跟線與數線的設計 http://dyu0001.blogspot.com/2011/11/blog-post_09.html 流程圖

2012年10月1日 星期一

Introduction to Engineering Programming : In C, Matlab and Java

Introduction to Engineering Programming : In C, Matlab and Java

2012 一種機器人可能的演算法

//雙斜線後面, 表示是註解的文字
init:               //表 initialization 程式一開始執行的部分
  W  = 99;          // W代表White, 用來紀錄白色罐子所在位置, 可能是1,2,3,4或5.
  B1 = 99;          // B代表Blue, 99代表還沒有資料更新
  B2 = 99;          // B1,B2 用來紀錄藍色罐子, 所在的位置, 可能是1,2,3,4或5.
  R1 = 99; R2 = 99; // R1,R2 用來紀錄紅色罐子, 所在的位置, 可能是1,2,3,4或5.
  Pos = 99;         // 表示機器人對應罐子的位置, 可能是1,2,3,4或5.
  M1 = 99;          // 表示完成任務的罐子顏色. 可能是 1(紅色)或2(藍色).
  Loop = 0;         // 表示機器人已經完成任務的圈數, 可能是0,1或2.
   
init_pos:
  機器人位於出發位置
  if (Loop == 2){   // 判斷 Loop 是否等於 2 的值.
    TASK_COMPLETED; // 表示機器人已經完成2圈的任務, 停止程式執行, 讓機器人靜止不動.  
  }
init2grab:          // from initial postion to grab zone. init2grab 表 init to(two 發音同) grab.
  執行機器人由出發位置到進入抓罐子區域(下斜坡準備進入)的程式
//================================================================================================
grab2:              // 執行抓2根罐子的演算法
//---------------------
// 第一圈抓取任務開始
//-----------------------------------------------------------begin >> 1 to 2 
  if(Loop==0 AND Pos = 99){     //表示第一次進入抓罐子區域
   執行前往查看第一根罐子顏色的程式.
   Pos = 1; 表機器人位置對應在第 1 根罐子
   if (RGB == "白"){
     W = 1;
     不抓取罐子,執行到 RGB看下一根罐子的程式.
     Pos = 2;
   }
   if (RGB == "紅"){
      R1 = 1;  //表示第一根紅罐子的位置.
     執行左邊抓起罐子並到 RGB看下一根罐子的程式.(1->2)
     Pos = 2;
   }
   if (RGB == "藍"){
     B1 = 1;  //表示第一根藍罐子的位置.
     執行左邊抓起罐子並到 RGB看下一根罐子的程式.(1->2)
     Pos = 2;
   }
  }     
//-----------------------------------------------------------end  
//-----------------------------------------------------------begin >> 2 to 3 
  if(Loop==0 AND Pos = 2){     //
   if (RGB == "白"){
     W = 2;
     不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (2->3)
     Pos = 3;
   }
   if (RGB == "紅" AND R1 <99 ){  //表示看到第二根紅罐子
     R2 = 2;  //表示第二根紅罐子的位置.
     執行右邊抓起罐子, 後退到準備返回的位置. (return)
     Pos = 2;
   }
   if (RGB == "紅" AND R1 ==99 AND B1<99){  //表示看到第一根藍罐子被左邊抓起後, 再看到紅罐子
     R1 = 2;  //表示第一根紅罐子的位置.
     不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (2->3)
     Pos = 3;
   } 
   if (RGB == "紅" AND R1==99 AND B1==99){  //表示看到第一根紅罐子
     R1 = 2;  //表示第一根紅罐子的位置.
     執行左邊抓起罐子並到 RGB看下一根罐子的程式. (2->3)
     Pos = 3;
   } 
   if (RGB == "藍" AND B1 <99 ){  //表示看到第二根藍罐子
     B2 = 2;  //表示第二根藍罐子的位置.
     執行右邊抓起罐子, 後退到準備返回的位置. (return)
     Pos = 2;
   }
   if (RGB == "藍" AND B1 ==99 AND R1<99){  //表示看到第一根紅罐子被左邊抓起後, 再看到藍罐子
     B1 = 2;  //表示第一根藍罐子的位置.
     不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (2->3)
     Pos = 3;
   }
   if (RGB == "藍" AND B1==99 AND R1==99){  //表示看到第一根藍罐子
     B1 = 2;  //表示第一根藍罐子的位置.
     執行左邊抓起罐子並到 RGB看下一根罐子的程式. (2->3)
     Pos = 3;
   } 
  }     
//-----------------------------------------------------------end  
 
//-----------------------------------------------------------begin >> 3 to 4 
  if(Loop==0 AND Pos = 3){     //
   if (RGB == "白"){
     W = 3;
     不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (3->4)
     Pos = 4;
   }
   if (RGB == "紅" AND R1 <99 ){  //表示看到第二根紅罐子
     R2 = 3;  //表示第二根紅罐子的位置.
     執行右邊抓起罐子, 後退到準備返回的位置. (return)
     Pos = 3;
   }
   if (RGB == "紅" AND R1 ==99 AND B1<99){  //表示看到第一根藍罐子被左邊抓起後, 再看到紅罐子
     R1 = 3;  //表示第一根紅罐子的位置.
     不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (3->4)
     Pos = 4;
   } 
   if (RGB == "紅" AND R1==99 AND B1==99){  //表示看到第一根紅罐子
     R1 = 3;  //表示第一根紅罐子的位置.
     執行左邊抓起罐子並到 RGB看下一根罐子的程式. (3->4)
     Pos = 4;
   } 
   if (RGB == "藍" AND B1 <99 ){  //表示看到第二根藍罐子
     B2 = 3;  //表示第二根藍罐子的位置.
     執行右邊抓起罐子, 後退到準備返回的位置. (return)
     Pos = 3;
   }
   if (RGB == "藍" AND B1 ==99 AND R1<99){  //表示看到第一根紅罐子被左邊抓起後, 再看到藍罐子
     B1 = 3;  //表示第一根藍罐子的位置.
     不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (3->4)
     Pos = 4;
   }
   if (RGB == "藍" AND B1==99 AND R1==99){  //表示看到第一根藍罐子
     B1 = 3;  //表示第一根藍罐子的位置.
     執行左邊抓起罐子並到 RGB看下一根罐子的程式. (3->4)
     Pos = 4;
   } 
  }     
//-----------------------------------------------------------end  
 
//-----------------------------------------------------------begin >> 4 to 5
  if(Loop==0 AND Pos = 4){     //
   if (RGB == "白"){
     W = 4;
     不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (4->5)
     Pos = 5;
   }
   if (RGB == "紅" AND R1 <99 ){  //表示看到第二根紅罐子
     R2 = 4;  //表示第二根紅罐子的位置.
     執行右邊抓起罐子, 後退到準備返回的位置. (return)
     Pos = 4;
   }
   if (RGB == "紅" AND R1 ==99 AND B1<99){  //表示看到第一根藍罐子被左邊抓起後, 再看到紅罐子
     R1 = 4;  //表示第一根紅罐子的位置.
     不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (4->5)
     Pos = 5;
   } 
   if (RGB == "紅" AND R1==99 AND B1==99){  //表示看到第一根紅罐子
     R1 = 4;  //表示第一根紅罐子的位置.
     執行左邊抓起罐子並到 RGB看下一根罐子的程式. (4->5)
     Pos = 5;
   } 
   if (RGB == "藍" AND B1 <99 ){  //表示看到第二根藍罐子
     B2 = 4;  //表示第二根藍罐子的位置.
     執行右邊抓起罐子, 後退到準備返回的位置. (return)
     Pos = 4;
   }
   if (RGB == "藍" AND B1 ==99 AND R1<99){  //表示看到第一根紅罐子被左邊抓起後, 再看到藍罐子
     B1 = 4;  //表示第一根藍罐子的位置.
     不抓取罐子,執行到 RGB看下一根(第三)罐子的程式. (4->5)
     Pos = 5;
   }
   if (RGB == "藍" AND B1==99 AND R1==99){  //表示看到第一根藍罐子
     B1 = 4;  //表示第一根藍罐子的位置.
     執行左邊抓起罐子並到 RGB看下一根罐子的程式. (4->5)
     Pos = 5;
   } 
  }     
//-----------------------------------------------------------end  
 
//-----------------------------------------------------------begin >> 5 to grab2init
  if(Loop==0 AND Pos = 5){     //
   if (RGB == "白"){
     W = 5;
     不抓取罐子,執行到 返回斜坡的程式. (5->grab2init)
     Pos = 5;
   }
   if (RGB == "紅" AND R1 <99 ){  //表示看到第二根紅罐子
     R2 = 5;  //表示第二根紅罐子的位置.
     執行右邊抓起罐子, 後退到準備返回的位置. (return)
     Pos = 5;
   }
   if (RGB == "紅" AND R1 ==99 AND B1<99){  //表示看到第一根藍罐子被左邊抓起後, 再看到紅罐子
     R1 = 5;  //表示第一根紅罐子的位置.
     不抓取罐子,執行到 返回斜坡的程式. (5->grab2init)
     Pos = 5;
   } 
   if (RGB == "紅" AND R1==99 AND B1==99){  //表示看到第一根紅罐子
     R1 = 5;  //表示第一根紅罐子的位置.
     執行左邊抓起罐子並到 返回斜坡的程式. (5->grab2init)
     Pos = 5;
   } 
   if (RGB == "藍" AND B1 <99 ){  //表示看到第二根藍罐子
     B2 = 5;  //表示第二根藍罐子的位置.
     執行右邊抓起罐子, 後退到準備返回的位置. (return)
     Pos = 5;
   }
   if (RGB == "藍" AND B1 ==99 AND R1<99){  //表示看到第一根紅罐子被左邊抓起後, 再看到藍罐子
     B1 = 5;  //表示第一根藍罐子的位置.
     不抓取罐子,執行到 返回斜坡的程式. (5->grab2init)
     Pos = 5;
   }
   if (RGB == "藍" AND B1==99 AND R1==99){  //表示看到第一根藍罐子
     B1 = 5;  //表示第一根藍罐子的位置.
     執行左邊抓起罐子並到 返回斜坡的程式. (5->grab2init)
     Pos = 5;
   } 
  }     
//-----------------------------------------------------------end  
// 第一圈抓取任務結束
//---------------------
//---------------------
// 第二圈抓取任務開始
//-----------------------------------------------------------begin
  if(Loop==1){     //
    ???????
  }
//-----------------------------------------------------------end
//================================================================================================
grab2init:
  if(Pos ==2){
   機器人抓了2根罐子後, 位置對應在第 2 根罐子, 執行適當的程式, 準備上斜坡回罐子置放區.
  }
  if(Pos ==3){
   機器人抓了2根罐子後, 位置對應在第 3 根罐子, 執行適當的程式, 準備上斜坡回罐子置放區.
  }
  if(Pos ==4){
   機器人抓了2根罐子後, 位置對應在第 4 根罐子, 執行適當的程式, 準備上斜坡回罐子置放區.
  }
  if(Pos ==5){
   機器人抓了2根罐子後, 位置對應在第 5 根罐子, 執行適當的程式, 準備上斜坡回罐子置放區.
  }
  執行上斜坡返回罐子置放區, 並放下罐子回到出發位置(init_pos)的控制程式.
  並設定完成任務罐子的顏色. M1 = 1(紅色); 或 M1 = 2(藍色);
  Loop = Loop + 1;    // 表示增加完成任務圈數1圈
  控制程式再回到 init_pos: 重新執行控制程式. 

Turbo C 使用教學 (請在 Windows XP 下操作)

Turbo C 使用教學

C 語 言 入 門 教 室

請在XP下, 以tc3.0練習編譯下列範例

example -01
//雙斜線後面表示為註解
#include <stdio.h>  //包含 printf function 的標頭檔
void main() {       //主程式開始
 printf("Hello Robot!");  //印出字串
}                   //主程式結束

亂數的使用

example -02
//雙斜線後面表示為註解
#include <stdio.h>  //包含 printf function 的標頭檔
#include <stdlib.h> //包含 srand, rand function 的標頭檔
#include <time.h>   //包含 time function 的標頭檔
void main() {       //主程式開始
 int a;             //宣告一個整數integer的變數variable
 srand(time(NULL)); //產生每次變數均不同的效果;用 srand() 函數改變一開始的亂數值
 a=(rand()%100)+1;  //計算, 取 1-100 的亂數
 printf("The Random Number is %d .\n", a); //印出隨機數的字串
}                   //主程式結束

for 迴圈

example -03
//雙斜線後面表示為註解
#include <stdio.h>  //包含 printf function 的標頭檔
#include <stdlib.h> //包含 srand, rand function 的標頭檔
#include <time.h>   //包含 time function 的標頭檔
void main() {       //主程式開始
 int a;             //宣告一個整數integer的變數variable
 int n;
 srand(time(NULL)); //產生每次變數均不同的效果;用 srand() 函數改變一開始的亂數值
 for (n=1; n <= 10; n++) {  //for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1
  a=(rand()%100)+1;  //計算, 取 1-100 的亂數
  printf("The %ith Random Number is %d .\n", n, a); //印出第n個隨機數的字串
 } // for 迴圈loop 程式碼區塊結束
}                   //主程式結束

example -04

//雙斜線後面表示為註解
#include <stdio.h>  //包含 printf function 的標頭檔
#include <stdlib.h> //包含 srand, rand function 的標頭檔
#include <time.h>   //包含 time function 的標頭檔
void main() {       //主程式開始
 int a;             //宣告一個整數integer的變數variable
 int n;
 srand(time(NULL)); //產生每次變數均不同的效果;用 srand() 函數改變一開始的亂數值
//模擬光感測器讀值10次
 for (n=1; n <= 10; n++) {  //for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1
  a=(rand()%100)+1;  //計算, 取 1-100 的亂數
  printf("The %ith Random Number is %d .\n", n, a); //印出第n個隨機數的字串
//////////////////////////////////////////////////////////////////////////////////////////////////
//模擬跟線自走車的演算法 
//////////////////////////////////////////////////////////////////////////////////////////////////
  if (a < 45) {      // if 條件判斷
    printf("Light Sensor: %i , Detect: BLACK, Left Power: 80, Right Power: 50 \n", a);
//  printf("光感值: %i , 偵測到黑色區域, 左輪Power輸出: 80, 右輪Power輸出: 50 \n", a);
  } // if 條件判斷結束

  if (a > 45) {      // if 條件判斷
    printf("Light Sensor: %i , Detect: WHITE, Left Power: 50, Right Power: 80 \n", a);
//  printf("光感值: %i , 偵測到白色區域, 左輪Power輸出: 50, 右輪Power輸出: 80 \n", a);
  } // if 條件判斷結束

  if (a == 45) {      // if 條件判斷
    printf("Light Sensor: %i , Detect: EDGE, Left Power: 80, Right Power: 80 \n", a);
//  printf("光感值: %i , 偵測到黑線邊緣, 左輪Power輸出: 80, 右輪Power輸出: 80 \n", a);
  } // if 條件判斷結束  
//////////////////////////////////////////////////////////////////////////////////////////////////
 } // for 迴圈loop 程式碼區塊結束
}                   //主程式結束

example -05

//雙斜線後面表示為註解
#include <stdio.h>  //包含 printf function 的標頭檔
#include <stdlib.h> //包含 srand, rand function 的標頭檔
#include <time.h>   //包含 time function 的標頭檔
void main() {       //主程式開始
 int a;             //宣告一個整數integer的變數variable
 int b, loop;
 int n;
 srand(time(NULL)); //產生每次變數均不同的效果;用 srand() 函數改變一開始的亂數值
//模擬光感測器讀值30次
 loop = 0; //紀錄自走車完成迴圈數--變數歸零
 for (n=1; n <= 30; n++) {  //for 迴圈loop , n=1開始, 當n<=10時, 執行 loop 內的指令, 執行完畢 n+1
  a=(rand()%100)+1;  //計算, 取 1-100 的亂數
  printf("The %ith Random Number is %d .\n", n, a); //印出第n個隨機數的字串
//////////////////////////////////////////////////////////////////////////////////////////////////
//模擬跟線自走車的演算法 
//////////////////////////////////////////////////////////////////////////////////////////////////
  if(n%5 == 0){ //n除以5的餘數等於0, n 為 5 的倍數
    b=30;    //表示第二顆感測器看到黑色起跑線
  }
  else{
    b=60;    //表示第二顆感測器看到白色區域 (奔跑中)
  }
  if (b<45){ //表示第二顆感測器看到黑色起跑線
   loop = loop + 1;  //紀錄自走車完成迴圈數--變數+1更新
   printf("Run %ith Loop..\n", loop);
  }
  if (loop >=5 ) { //表示自走車已完成5圈
   printf("Five-loop Task Completed!\n");
   exit(1);  //退出程式
  }
  if (a < 45) {      // if 條件判斷
    printf("Light Sensor: %i , Detect: BLACK, Left Power: 80, Right Power: 50 \n", a);
//  printf("光感值: %i , 偵測到黑色區域, 左輪Power輸出: 80, 右輪Power輸出: 50 \n", a);
  } // if 條件判斷結束
  if (a > 45) {      // if 條件判斷
    printf("Light Sensor: %i , Detect: WHITE, Left Power: 50, Right Power: 80 \n", a);
//  printf("光感值: %i , 偵測到白色區域, 左輪Power輸出: 50, 右輪Power輸出: 80 \n", a);
  } // if 條件判斷結束
  if (a == 45) {      // if 條件判斷
    printf("Light Sensor: %i , Detect: EDGE, Left Power: 80, Right Power: 80 \n", a);
//  printf("光感值: %i , 偵測到黑線邊緣, 左輪Power輸出: 80, 右輪Power輸出: 80 \n", a);
  } // if 條件判斷結束  
//////////////////////////////////////////////////////////////////////////////////////////////////
 } // for 迴圈loop 程式碼區塊結束
}                   //主程式結束

example -05 for RoboLab
 
example -05 for NXT-G