-
Notifications
You must be signed in to change notification settings - Fork 4
IsakiMatsubara edited this page Sep 18, 2021
·
12 revisions
PLEN:bitを起動したときに、自動的に実行される関数です。
servoInitialSet()
eyeLed(LedOnOff.On)
setEyeBrightness(20)
setColorRGB(0, 255, 0)
basic.pause(500)
servoFree()
処理 | 説明 |
---|---|
loadPos() | 初期位置調整の値を取得し、上書きします。 |
servoInitialSet() | サーボを初期位置に戻します。 |
eyeLed(LedOnOff.On) | 目のLED(PLEN:bit v1)をオンにします。 |
setEyeBrightness(20) | 初期位置調整の値を取得し、上書きします。 |
setColorRGB(0, 255, 0) | 目のLED(PLEN:bit v2)の色を緑にします。 |
basic.pause(500) | 処理を500ミリ秒止め、サーボが初期位置に戻まで待ちます。 |
servoFree() | サーボモーターへの負荷を抑えるため、サーボの力を抜きます。 |
初めてサーボモーターを動かすときに自動的に実行される関数です。
サーボ制御ICPCA9865の初期化を行います。
export function initPCA9865() { // PCA9685の初期設定
if (readPCA9865(0xFE) != 0x00) { // PRE_SCALEが読み取れる <=> PCA9865が接続済み
initPCA9865Flag = true
writePCA9865(0x00, 0x10) // Sleep modeをONにして、内部クロックを停止
writePCA9865(0xFE, 0x85) // PRE_SCALEを設定 ※ cf.P13 Writes to PRE_SCALE register are blocked when SLEEP bit is logic 0 (MODE 1)
writePCA9865(0x00, 0x00) // Sleep modeをOFFにして、内部クロックをPRE_SCALEで動かす
writePCA9865(0xFA, 0x00) // ALL_LED_ON_L 全PWMのONのタイミングを0にする
writePCA9865(0xFB, 0x00) // ALL_LED_ON_H 〃
writePCA9865(0xFC, 0x00) // ALL_LED_OFF_L 全PWMのOFFのタイミングを0にする
writePCA9865(0xFD, 0x00) // ALL_LED_OFF_H 〃
}
}
処理 | 説明 |
---|---|
writePCA9865() | PCA9865にデータをI2Cで書き込みます。 |
readPCA9865() | PCA9865からデータをI2Cで読み取ります。 |
initPCA9865Flag | PCA9865の初期化処理の有無を格納する変数です。 |
初めてサーボモーターを動かすときに自動的に実行される関数です。
EEPROMに保存された初期位置データを読み取り、プログラムの動作に反映します。
function initEEPROM() { // EEPROMのサーボ初期位置設定を反映する
if (ReadEEPROM(0x32, 1)[0] != 0x00) { // モーションデータが読み取れる <=> EEPROMが接続済み
initEEPROMFlag = true
if (ReadEEPROM(0x00, 1)[0] == 0x01) { // サーボ初期位置調整済み
let readBuf = ReadEEPROM(0x02, 16)
for (let i = 0; i < 8; i++) {
servoInitArray[i] = (readBuf[i * 2] << 8) | (readBuf[i * 2 + 1])
}
}
}
}
処理 | 説明 |
---|---|
ReadEEPROM() | EEPROMにデータをI2Cで書き込みます。 |
initEEPROMFlag | EEPROMの初期化処理の有無を格納する変数です。 |