查看: 2454|回复: 1

仿生机器人──小怪兽(升级篇)

[复制链接]
  • TA的每日心情
    擦汗
    2014-2-12 10:49
  • 签到天数: 150 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-12-19 10:44:33 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 XM明 于 2013-12-19 10:46 编辑

    加裝LED與紅外線感測器

    現在「小怪獸」已經可以靈活的動作了,來一段有趣的舞蹈也是不難事。前面有提到我們想替「小怪獸」裝二個LED與紅外線感測器(圖A),讓它看起來更酷更聰明,現在就繼續努力吧!
    P130-小怪獸-10c-300x217.jpg
    A

    首先介紹元件工作原理,大家可以對照之前SC8接線安裝圖。LED有二隻腳,長腳為正極,短腳為負極。長腳串接一個220歐姆的 電阻到5V,電阻的色碼為紅紅棕。LED的短腳再分別接到數位輸入輸出腳P0P6P0P6的選擇是為了方便LED安裝在左右兩邊,沒有其他考量。再 來就是安裝紅外線發射器。這裡所使用到的就是一個紅外線LED,顧名思義,它也是一個LED。只不過發射出來的是不可見的紅外線,所以對LED的描述也適 用。這裡我們把它接到P2。紅外線接收器是一個三隻腳的元件,我這裡使用的編號為FM-9038LM-5AN。分別為正、負電源以及輸出腳。正、負電源就 分別接到5V以及GND,輸出腳則接到P4腳。紅外線LED與紅外線接收器同樣面向前方,但是紅外線會從LED側面散出,而被紅外線接收器收到,造成誤認 前方有障礙物。為避免紅外線散出,這裏使用了膠套將紅外線LED包起來,僅允許從前方發射紅外線出去。各位手邊沒有適用的膠套,則可以使用黑色電工膠帶將 LED纏繞,僅留前方開口即可。目前使用到的P0P2P6都是做輸出使用,只有p4是做輸入使用。(圖A)為了方便辨識,特別將須接到5V的線路選用 紅色線材,須接到GND的線路選用黑色線材,須接到各I/O接腳的線路選用黃色線材。實際接線時要注意避免金屬部分碰觸造成短路,所以電工膠帶或是塑膠套 管都是需要的。

    雖然線路是相同的,但每一個人實際的接線看起來都會不太一樣,美醜就看每個人的藝術細胞有多少啦。我給每隻腳套上紅色的熱縮套管,再加熱使其收縮而不會掉落,穿上四隻小紅鞋看起來還很有造型,而且還有防滑的功效呢,希望對我的藝術細胞有加分作用,完成品請看(圖B)。


    P130-小怪獸-10d1-300x197.jpg
    B

    「小怪獸探索」的程式

    現在開始要把感測器的輸入與動作結合,前面的程式只是練習題,現在才是正式開始撰寫「小怪獸探索」程式。這裡先介紹一下「小怪獸」的行為模式。開啟電源後「小怪獸」會先點亮LED雙眼,維持標準站姿五秒。接著做兩個「伏地挺身」暖身一下準備出發。

    「小 怪獸」會隨時測量前方是否有障礙物,LED雙眼也保持每秒明滅一次的速度眨眼。一旦發現障礙物則停止前進,然後原地左轉,再次測量前方是否有障礙物,這段 期間LED雙眼以兩倍的速度明滅,讓它看起來很焦慮的樣子。如果前方依舊測量到有障礙物,則持續作左轉測量的動作,直到障礙物消失,然後繼續前進,LED 雙眼也恢復每秒明滅一次的眨眼速度。這裡的障礙物偵測距離大概是30公分,調整偵測距離的方法以後有機會再來介紹。

    以下就是程式原始碼,後面有註解說明。此程式只使用到幾個副程序,提高程式閱讀性,方便入門者了解程式控制之原理。等到熟悉相關程式技巧後,可以嘗試更結構化的程式架構,以減少程式行數、提高執行效率,增加程式維護、修改的彈性。

    ‘—————————————————
    ‘ 小怪獸探索程式
    ‘—————————————————
    Peripheral mySer As ServoRunner8A @ 0 ‘ 預設內建模組ID0
    Sub OpenEyes()
    Low 0 ‘ 點亮左眼LED
    Low 6 ‘ 點亮右眼LED
    End Sub
    Sub CloseEyes()
    High 0 ‘ 熄滅左眼LED
    High 6 ‘ 熄滅右眼LED
    End Sub
    Sub RunFrame(ID As Byte)
    Myser.LoadFrame(ID) ‘ 載入編號ID的動作
    Myser.Runallservo() ‘ 執行載入的動作
    Pause 150 ‘ 等待伺服機完成動作(每秒4)
    End Sub
    Sub Main()
    Dim IR As Byte ‘ 宣告變數
    ‘—————————————————
    ‘ 點亮左右眼LED以及初始立正姿勢
    ‘—————————————————
    OpenEyes() ‘ 點亮雙眼LED
    RunFrame(0) ‘ 呼叫程序執行編號0動作
    Pause 5000 ‘ 等待5秒才開始動作
    ‘—————————————————
    ‘ 伏地挺身二次
    ‘—————————————————
    RunFrame(1) ‘ 呼叫程序執行編號1動作
    RunFrame(0) ‘ 呼叫程序執行編號0動作
    RunFrame(1) ‘ 呼叫程序執行編號1動作
    RunFrame(0) ‘ 呼叫程序執行編號0動作
    Pause 2000 ‘ 等待2秒才開始出發
    ‘—————————————————
    ‘ 程式主循環
    ‘—————————————————
    Do
    Sound(2, 5, 38400) ‘ 從第2腳發射5微秒的38.4kHz紅外線載波
    IR = In(4) ‘ 從第4腳讀取紅外線載波資料
    If IR = 0 Then ‘ 發現障礙物向左轉,左前足起步左轉: [4,6,2,7]
    RunFrame(4) ‘ 呼叫程序執行編號4動作
    CloseEyes()
    RunFrame(6) ‘ 呼叫程序執行編號6動作
    OpenEyes()
    RunFrame(2) ‘ 呼叫程序執行編號2動作
    CloseEyes()
    RunFrame(7) ‘ 呼叫程序執行編號7動作
    OpenEyes()
    Else ‘ 未發現障礙物,右前足起步前行 [2,5,4,3]
    RunFrame(2) ‘ 呼叫程序執行編號2動作
    RunFrame(5) ‘ 呼叫程序執行編號5動作
    CloseEyes()
    RunFrame(4) ‘ 呼叫程序執行編號4動作
    RunFrame(3) ‘ 呼叫程序執行編號3動作
    OpenEyes()
    End If
    Loop
    End Sub

    程式輸入完畢之後,請在「建立」選單中選取「建立」功能進行程式編譯,並通過USB線下載編譯後的程式碼至SC8控制板。此時「小怪獸」不再只是會做「伏地 挺身」而已。這樣的程式流程已經讓「小怪獸」具有從迷宮脫困的基本能力。大家完成程式之後,可以嘗試定義一下更複雜的流程。原則上更複雜的流程可以讓「小 怪獸」以更聰明的方法從迷宮中脫困。或者加上更多的感測器,讓「小怪獸」可以更快速地感測周邊環境,做出更有效率的決策。
    [DIY作品展示]转:仿生机器人──小怪兽(制作篇)
    [DIY作品展示]仿生机器人──小怪兽(运用篇)


    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-4-9 11:17
  • 签到天数: 364 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-12-19 12:05:06 | 显示全部楼层
    奥特曼在哪里 ????
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-24 03:46 , Processed in 0.116921 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.