先前我們介紹過如何使用 Python 和 PyMODI 讀取任何輸入模組的讀數,而本文將會重點講解如何控制輸出模組。目前 MODI 有 LED、揚聲器、電機、顯示模組四種輸出模組,以下將會逐一介紹。
LED 模組 (LED Module)
LED 模組透過控制紅、綠、藍 (RGB) 三種顏色的混合配搭來顯示不同的顏色,而每種顏色以一個 0 ~ 100 範圍內的數字表示。不過很多時候會以 0~ 255 的範圍來代表,例如以下幾種常見顏色的 RGB Code:
我們可以按比例由 0 ~ 255 範圍的 RGB 數值投放到 0 ~ 100 的範圍。在 PyMODI API 中,我們可以透過以下代碼輕易更改 LED 模組的 RGB 數值使其發出橙光:
import modi
bundle = modi.MODI()
led = bundle.leds[0]
led.red = 255 * 100 / 255 // scaling 255 to 0 ~ 100 range
led.green = 165 * 100 / 255 // scaling 165 to 0 ~ 100 range
led.blue = 0
我們亦可以同時更改 RGB 三種顏色的數值:
led.rgb = 100, 0, 100
揚聲器模組 (Speaker Module)
揚聲器模組能夠以不同的音量 (volume) 發出不同的音調 (pitch) ,而每個音調則是以頻率 (frequency) 來表示。下圖顯示了不同的音符所代表的頻率:
PyMODI 中的 Speaker class 裡面有一個名為「tune」的 property,用以控制頻率和音量。在這裡頻率和音量的單位分別是 Hz 和 %。例如 40% 的音量即代表最大可發出音量的 40%。以下是一個簡單的使用例子以 70% 的音量發出 880Hz 的音調,即上圖的 A5:
import modi
bundle = modi.MODI()
speaker = bundle.speakers[0]
speaker.frequency = 880 // frequency 880Hz
speaker.volume = 70 // 70% volume
類似於 LED 模組,我們亦可以同時設定頻率和音量:
speaker.tune = 880, 70 // frequency 880 Hz at 70% volume
如果我們想揚聲器模組停止發出聲音,可以使用 turn_off 函數:
speaker.turn_off()
電機模組 (Motor Module)
每個 MODI 電機模組可以控制兩個電機,所以 PyMODI 提供用於控制電機模組的函數中分為 first_ 以及 second_ 開頭,分別代表控制第一個以及第二個電機。
MODI 的電機模組一共有兩種控制模式:位置控制 (Position Control) 以及 速度控制 (Speed Control)。顧名思意,前者直接控制電機的轉動角度位置,而後者則控制電機的轉動速度。角度的控制範圍為 0 ~ 100 度而速度的範圍為 -100 ~ 100 %。
以下代碼分別控制每個電機到不同的角度:
import modi
bundle = modi.MODI()
motor = bundle.motors[0]
motor.first_degree = 50
motor.second_degree = 100
亦可以同時控制兩個電機的角度:
motor.degree = 50, 100
而以下代碼則顯示了如何實現速度控制:
motor.first_speed = 100
motor.second_speed = -30
或者
motor.speed = 100, -30
顯示模組 (Motor Module)
顯示模組可以顯示任意字串(最多27個字節):
import modi
bundle = modi.MODI()
display = bundle.displays[0]
display.text = 'MODI Display Module'
也可以在指定的位置(坐標)顯示指定的數字,例如在 (20, 30) 的位置顯示 1 :
display.show_variable(1, 20, 30)
此處的 20 是指 X 坐標,即水平位置,而 30 是指 Y 坐標,即垂直位置。
如果需要清空畫面,可以利用 clear 函數:
display.clear()
Comments