元高専生のロボット作り

元高専生のロボット作り

主にプログラミング, 電子系について書きます。たまに機械系もやります。メモ代わりの記事ばっか書きます

磁気式エンコーダAS5601をArduinoで使う

スイッチサイエンスのこのボードが使いやすくて良い
www.switch-science.com

接続は、I2Cだったら以下の通り
https://github.com/y2kblog/AS5601_BreakoutBoard_V1_0/raw/master/images/WiringDiagram_I2C.png








インクリメンタル出力ピンを用いる場合は以下の通り。I2Cも必要です。

https://github.com/y2kblog/AS5601_BreakoutBoard_V1_0/raw/master/images/WiringDiagram_Incremental.png



ライブラリを書きました(既にあるのにな。i2cまたはAB相の入力で読み込むことができます。
以下のリンクから、Code→Download ZIPでzipファイルがダウンロードされます。
github.com


Arduino IDEを開いたら、「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール...」で先ほどダウンロードしたzipファイルを選択してください。

以下、I2Cのみを使用する場合のサンプルコードです。

#include <AS5601.h>

// AS5601_AB encoder;
AS5601_I2C encoder;

void encoderInterrupt()
{
  encoder.updateEncoderCount();
}

void setup() {
  Serial.begin(9600);
  // encoder.init(2, 3, &encoderInterrupt);    // using AS5601_AB class
  encoder.init();                        // using AS5601_I2C class
}

void loop() {
  
  int count = encoder.getEncoderCount();
  float deg = encoder.getEncoderDegree();
  Serial.print(count);
  Serial.print(", ");
  Serial.println(deg);
}