Breaking News

不只是上傳程式!這是我們賦予機器「智慧」的第一步!

不只是上傳程式!這是我們賦予機器「智慧」的第一步!

今天下午 (10/29),我們迎來了「自走車 DIY」的下半場——軟體實戰。如果說,兩週前的我們是打造「軀殼」的硬體工程師;那麼今天,我們扮演的就是賦予「靈魂」的軟體工程師。

關卡重重,但這就是「研究」的日常

社長正在透過課程簡報說明安裝驅動程式的操作

坦白說,今天的挑戰,遠比我們預期的要多。

雖然因為學校其他活動,今天參與的夥伴人數稍減,但到場的夥伴,都很專注在課程上。從下載被系統封鎖的 Zip 壓縮檔、奮戰複雜的驅動程式安裝,到處理部分電腦有不同的 COM 埠接口問題…… 我們幾乎把新手裝環境會遇到的坑都踩過了一遍。

不過,這正是「研究社」最真實的風景。我們看到的,不是挫折或放棄,而是各組夥伴們互相討論、幹部們穿梭協助、共同Debug的團隊精神。當你遇到困難,夥伴就在你身邊,這就是社團的價值。

注入靈魂的訊號:當「上傳成功」的訊息亮起

經過一番努力,我們欣喜地看到,所有組別都在表定下課時間前 20 分鐘,成功將第一支範例程式寫入自走車!

當你按下「上傳」按鈕,看到 IDE 顯示「上傳成功」的那一刻,你的自走車就已經從一堆零件,蛻變為一個真正等待指令的「機器人」了。

我們知道,因為繁瑣的前置作業佔據了太多時間,我們很可惜地沒能深入講解程式碼的具體運作,這也是我們幹部群需要更有效率、繼續精進的地方。

但,夥伴們,別擔心!

最艱難、最繁瑣的「建置環境」階段已經過去了。從硬體組裝到軟體安裝,你的平台已經準備就緒。

而「程式設計」的邏輯,遠比你想像的更直觀。我們社團的程式並不需要艱深的演算法,你只需要——想像自己就是一台機器人。

「當我感應到前方有障礙物時,我該怎麼辦?」
「是該左轉、右轉,還是先倒退一步?」

用這個角度去思考,你會發現寫程式就像在規劃自己的反應一樣,充滿樂趣。


自走車程式基礎

作為補償,我們在這裡先為大家帶來今天範例程式的「核心邏輯」快速解說。

我們今天範例程式的核心,其實都集中在 loop() 這個主程式中。這就是機器人的「大腦」,它會不斷重複執行裡面的判斷。

你可以想像機器人只會做兩件事:

  1. 偵測
    程式的第一件事,就是呼叫 getDistance() 來看看「前方有多遠?」

    // 取得使用超聲波感測器感應的前方距離(cm)
    long d = getDistance();  // getDistance 是副程式,這裡先不展開介紹
    
  2. 判斷
    拿到距離 d 之後,就是一個巨大的 if... else... 判斷句,也就是「二選一」的邏輯判斷:

    • 情況 A:如果路是通的
      如果 d > 15 (前方 15 公分以上都沒東西),
      d == 0 (感測器沒抓到東西,當作安全) ...

      if (d > 15 || d == 0) {
        // 那我就...
        forward(); // 繼續前進
      }
      
    • 情況 B:如果遇到障礙物
      否則... (代表前方 15 公分內有東西擋路了!)

      else {
        // 我必須執行一連串的「閃避動作」:
        stopMotor(); // 1. 立刻停止
        delay(200); // 等待一下
      
        leftTurn();  // 2. 向左轉 (準備繞出去)
        delay(300);  // 左轉持續 300 毫秒
      
        forward();   // 3. 往前開一點 (繞到障礙物旁邊)
        delay(300);  // 前進持續 300 毫秒
      
        rightTurn(); // 4. 向右轉 (把車頭回正)
        delay(300);  // 右轉持續 300 毫秒
      
        forward();   // 5. 往前開一點 (安全通過障礙物)
        delay(200);  // 前進持續 200 毫秒
      
        // (後面是切回原路線的動作...依此類推)
      }
      

你看,這整套迴避動作,就是一連串 forward()leftTurn()rightTurn() 這些「基本動作」的組合。而這些基本動作,又分別去控制馬達的腳位。

這就是程式的邏輯!我們之後的課程,就是來修改這些 delay() 的時間,或是 leftTurn() 的角度,讓它跑得更完美!


感謝今天所有堅持到底、共同奮戰的夥伴!

你們的耐心與專注,讓我們成功跨越了軟體的門檻。現在,萬事俱備。期待在接下來的社課中,我們能真正開始「玩」程式,一同探索如何讓你的自走車更聰明、更有效率!

我們下次見!

You might also like

第一屆機器人對抗賽:八強對決,一人封王!
第一屆機器人對抗賽:八強對決,一人封王!
沒有前人帶路,我們就自己來探究:參加 AERC 亞洲智慧型機器人大賽
沒有前人帶路,我們就自己來探究:參加 AERC 亞洲智慧型機器人大賽
第一屆機器人循線競賽 活動紀實|首辦,並不容易
第一屆機器人循線競賽 活動紀實|首辦,並不容易