Skip to content

Latest commit

 

History

History
98 lines (60 loc) · 4.23 KB

chirimenServo.md

File metadata and controls

98 lines (60 loc) · 4.23 KB

CHIRIMENでサーボモータを使用する(task.jsバージョン)

この記事はFabbleに掲載されていた記事を転載・修正したものです。

はじめに

task.jsを使用してCHIRIMENでサーボモータを扱う方法。 PCA9685というサーボドライバを使います。

サーボモータについて

ハードウェアの準備

Basic Shieldとの接続

PCA9685の接続

  • GROVE - 4ピン-ジャンパメスケーブルの黒、赤、黄色、白色のケーブルをそれぞれPCA9685のGND,VCC,SCL,SDAに刺してください。

  • 普通のジャンパワイヤ(オス~メス)でPCA9685のVCC,V+を接続してください。

  • サーボモーターをch0に接続してください。

  • シールドがない場合も、以下の画像を参考にして回路を準備してください。

ソフトウェアの準備

  • chirimenServoを参考にソースコードを準備してください。
  • task.js、webgpio polyfillを使用しています。

プログラムの説明

サンプルプログラムについて解説。

  • I2Cポートの初期化
  • サーボドライバの初期化処理
  • サーボモータの制御

I2Cポートの初期化

// task.js ライブラリ
const { spawn, sleep } = task;
// document 内のリソースが読み終わるのを待つ
document.addEventListener("DOMContentLoaded", () => {
  
  // task.js の spawn 関数内では Promise が同期的に記述できる
  spawn(function() {

  });

});
// I2C へのアクセサを取得
const accessor = yield navigator.requestI2CAccess();
// I2C 0 ポートを使うので、0 を指定してポートを取得
const port = accessor.ports.get(0);

サーボドライバの初期化処理

const pcs9685 = new PCA9685(port,0x40);
yield pcs9685.init(0.00050,0.00240,180);
  • 引数に指定している数値(0.00050,0.00240,180)はサーボモータ毎に異なる設定値です。SG90というサーボモータを使用する場合は、この通りに記述します。

サーボモータの制御

  • サーボモータの制御は制御するサーボモータのチャンネル(今回は0を指定)と、角度(angle変数で指定)を指定して、サーボモータの制御処理のように記述します。
yield pcs9685.setServo(0,angle);
  • 以下の記述は10度と170度を交互に設定する処理です。
angle = (angle<=10) ? 170 : 10;
  • 正しく動作すれば、サーボモータが1秒毎に10度、170度の角度に動きます。