2016年6月22日 星期三

Raspberry Pi 3 ( 八 ) 骰子 -- 使用 sense_HAT


   本次是小幅修改以下網站作品加上中文註解,學習初期就是先動手抄,Make 最重要的是動手做再瞭解其中原理。
http://www.suppertime.co.uk/blogmywiki/2015/12/raspberrypi-dice-project/

  開啟文字編輯器輸入以下程式碼。

#-*-coding:cp950-*-

#這一行是讓 Python 能用中文註解

from sense_hat import SenseHat  # 載入SenseHat模組
import time         # 載入時間模組
import random       # 載入亂數模組

sense = SenseHat()  # 顯示器 = SenseHat

sense.clear()       # 清除顯示器

sense.show_message("Shake to roll!")  # 顯示字串 Shake to roll!

b = [0, 0, 0]      # b= 不亮
g = [0, 255, 0]    # g= 綠色
r = [255, 0, 0]    # r= 紅色

one = [            # 1 點的圖案
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,r,r,r,r,b,b,
b,b,r,r,r,r,b,b,
b,b,r,r,r,r,b,b,
b,b,r,r,r,r,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
]

two = [           # 2 點的圖案
b,b,b,b,b,b,b,b,
b,g,g,b,b,b,b,b,
b,g,g,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,g,g,b,
b,b,b,b,b,g,g,b,
b,b,b,b,b,b,b,b,
]

three = [          # 3 點的圖案
g,g,b,b,b,b,b,b,
g,g,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,g,g,b,b,b,
b,b,b,g,g,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,g,g,
b,b,b,b,b,b,g,g,
]

four = [          # 4 點的圖案
b,b,b,b,b,b,b,b,
b,r,r,b,b,r,r,b,
b,r,r,b,b,r,r,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,r,r,b,b,r,r,b,
b,r,r,b,b,r,r,b,
b,b,b,b,b,b,b,b,
]

five = [          # 5 點的圖案
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
b,b,b,b,b,b,b,b,
b,b,b,g,g,b,b,b,
b,b,b,g,g,b,b,b,
b,b,b,b,b,b,b,b,
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
]

six = [           # 6 點的圖案
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
b,b,b,b,b,b,b,b,
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
b,b,b,b,b,b,b,b,
g,g,b,b,b,b,g,g,
g,g,b,b,b,b,g,g,
]

def roll_dice():              
    r = random.randint(1,6)     # 隨機取得1~6的變數
    if r == 1:                  # 如果變數是1
        sense.set_pixels(one)   # 顯示 1 點的圖案
    elif r == 2:
        sense.set_pixels(two)
    elif r == 3:
        sense.set_pixels(three)
    elif r == 4:
        sense.set_pixels(four)
    elif r == 5:
        sense.set_pixels(five)
    elif r == 6:
        sense.set_pixels(six)

while True:
    x, y, z = sense.get_accelerometer_raw().values()  # 取得加數計的值

    x = abs(x)
    y = abs(y)
    z = abs(z)

    if x > 1.4 or y > 1.4 or z > 1.4:      # 如果任何一軸的值超過1.4
        roll_dice()                       # 執行  roll_dice()
        time.sleep(1)       # 延遲 1 秒  


將檔案存成 dice.py 。開啟 WinSCP 輸入登入資訊。


 將 dice.py 拖曳到 Raspbreey 的 Sense_hat目錄。


   用 SSH 登入 Raspberry 切換到 sense_hat 目錄,輸入 python dice.py。


每次搖動 Raspberry 都會產生新點數 。 



參考資料 :

   http://www.suppertime.co.uk/blogmywiki/2015/12/raspberrypi-dice-project/
   https://www.raspberrypi.org/blog/astro-pi-tech-specs/

沒有留言:

張貼留言