2018年1月10日 星期三

ROSA 系統開發 46 ─ OTTO like 加上超音波感測器

http://4rdp.blogspot.com/2018/01/rosa-46-otto-like.html?m=0

結束遊能有愉桌遊設計比賽後,終於有時間回頭為 OTTO like 追加功能了,因為 OTTO 有使用超音波感測器當作眼睛,因此先把這功能加入比較重要。在進行程式設計之前,要先對使用的零件特性有所了解,才有能充分發揮零件的功效。

超音波感測器是一個非接觸型測量距離的元件,ROSA 設定 30 ms 時間長度來檢測距離,這樣設計,20 cm 以內可以正常測量,因此利用這樣特性,可以設計如下

啟用超音波感測器後,
距離 10 cm 以上,OTTO like 會向前行進;
距離 5 ~ 10 cm 以上,OTTO like 停止不動;
距離 5 cm 以內,OTTO like 會向後退。

另外,我隱藏兩個超音波互動動作,讓 ROSA 玩家自己來發現,還有定義紅外線遙控器按鍵 5,可以切換是否使用超音波感測器,剩下來就是大家來試玩 OTTO like 新功能。

回顧之前的發文,並未對 OTTO like 的 Arduino 接腳詳述,今天補充如下:


Arduino
OTTO like
D0
USB RX
D1
USB TX
D2
IR RX
D3
BT TX
D4
SERVO 左腿上肢
D5
SERVO 左腿下肢
D6
SERVO 右腿上肢
D7
SERVO 右腿下肢
D8

D9

D10

D11

D12

D13 / SCK
LED
A0

A1

A2
ULTRASOUND  ECHO
A3
ULTRASOUND  TRIG
A4

A5
BT RX
A6

A7


最新版本為 V19。

6 則留言:

  1. 我在160不能張貼留言,就貼在這裡了。
    我用excel寫了從1-3000的因數個數的試算表,結果如下:
    因顯示出(不能接受您的 最多为 4,096 个字符。)而作罷XD
    從中挑出因數有28個的有
    960
    1344
    1728
    2112
    2240
    2496
    個數有30個的有:
    720
    1008
    1200
    1584
    1620
    1872
    2268
    2353
    2448
    2592
    2736
    2800
    交叉檢驗後發現只有864滿足要求。
    它的6倍是5184,分解因數如下:
    2 * 2 * 2 * 2 * 2 * 2 * 3 * 3 * 3 * 3
    結果得出其中共有因數35個

    回覆刪除
    回覆
    1. 謝謝老師的解答,還有加分題。

      刪除
    2. https://4rdp.blogspot.tw/2018/01/160.html

      刪除
    3. 是唯一解。
      根據因數個數計算公式
      (np1+1)*(np2+1)*......
      我們分解28和30之後分析,
      28 = 2*2*7 = 4*7 = 2*14
      30 = 2*3*5 = 5*6 = 10*3 = 2*15
      我們知道,原數字的質因數種類最多有3種。
      分四種情況:
      1,原數中因數含2不含3
      2,原數中因數含3不含2
      3,原數中因數含2和3
      4,原數中因數不含2也不含3
      假設原數中有x個2,y個3,以及z個和a個其他質因數;
      可列方程如下:
      ----------------------------------
      情況1,y=0,
      30=(x+1)*2*(z+1)或(x+1)*2
      得到x=2or4,z=4or2或x=14,z=0
      28=(x+2)*(z+1)*(a+1)或(x+2)*(z+1)
      因爲上解不含a,所以不考慮前者。
      把x=2or4,z=4or2代入此(x+2)*(z+1),並不能得出28,故情況1不成立。
      情況2,x=0,
      28=2*(y+1)或2*(y+1)*(z+1)
      得到y=13或y=1or6,z=6or1
      同情況1,帶入另一式發現並不能使等式成立,故情況2不成立。

      刪除
    4. 情況3,x<>0,y<>0,
      28=(x+2)*(y+1)*(z+1)或(x+2)*(y+1)
      得到x=5,y=1,z=1或x=2or5,y=5or2
      把結果代入30=(x+1)*(y+2)*(z+1)或(x+1)*(y+2)
      並不能使前面的等式相等,
      後面的等式則有x=3,y=5這個唯一答案。

      刪除
    5. 謝謝老師清楚的解答。

      刪除