商品カテゴリー

Grove筋電センサ_SeeedStudio

型番 811006001
販売価格

5,400円(税400円)

在庫数 2[個]
購入数
クイック購入

Grove筋電センサ(Grove-EMG Detector)は、筋肉のシグナルを増幅・フィルター処理し、Arduinoで取得できる信号を出力します。(注:本製品は医療目的で使用することはできません。)
スタンバイモードでは、出力電圧は1.5Vです。筋活動を検知した時、出力信号が上昇します。最大出力は3.3Vです。本センサ3.3Vや5Vで使用することが出来ます。

<Grove筋電センサの主な特徴>
Groveモジュール
3.5丱灰優タ
6つの表面電極付き
使用電圧:3.3V-5V
1メートルケーブル
追加電源不要

<Grove筋電センサの使用方法>
Grove筋電センサのデモ動作です。
デモコードは、腕にGrove筋電センサを取り付け、腕の曲げに反応してGrove LEDバーが点灯するプログラムになっています。デモコードを書き込み終わった後(もしくはArduino起動時)、初期化に約5秒ほどかかります。初期化時は動かず安定した状態を保ってください。初期化が終了した時、Grove LEDバーはレベル10からレベル0に変化します。Grove LEDバーがすべてOFFになれば、腕を動かし、計測することが可能です。腕の動きによりLEDバーの点灯レべルが変化します。

Grove LEDバーを使用するための、ライブラリは以下にあります。
https://github.com/Seeed-Studio/Grove_LED_Bar

Grove筋電センサについての追加情報・詳細情報は下記ページ(英語)をご覧ください。
http://www.seeedstudio.com/wiki/Grove_-_EMG_Detector

<Grove筋電センサのデモコード>
/*Groveベースシールドを使用し、筋電センサをアナログ0番ピンに接続し、GroveLEDバーをデジタル8番・9番ピンに接続します。初期化後、筋電に対応し、LEDバーが点灯します。*/

#include <LED_Bar.h> //Grove LEDバーのライブラリが必要です。

LED_Bar bar(9, 8);

int max_analog_dta = 300; // max analog data
int min_analog_dta = 100; // min analog data
int static_analog_dta = 0; // static analog data

// get analog value
int getAnalog(int pin)
{
long sum = 0;

for(int i=0; i<32; i++)
{
sum += analogRead(pin);
}

int dta = sum>>5;
max_analog_dta = dta>max_analog_dta ? dta : max_analog_dta; // if max data
min_analog_dta = min_analog_dta>dta ? dta : min_analog_dta; // if min data
return sum>>5;
}

void setup()
{
Serial.begin(115200);
long sum = 0;
for(int i=0; i<=10; i++)
{
for(int j=0; j<100; j++)
{
sum += getAnalog(A0);
delay(1);
}

bar.setLevel(10-i);
}

sum /= 1100;

static_analog_dta = sum;

Serial.print("static_analog_dta = ");
Serial.println(static_analog_dta);
}

int level = 5;
int level_buf = 5;

void loop()
{
int val = getAnalog(A0); // get Analog value
int level2;
if(val>static_analog_dta) // larger than static_analog_dta
{
level2 = 5 + map(val, static_analog_dta, max_analog_dta, 0, 5);
}
Else
{
level2 = 5 - map(val, min_analog_dta, static_analog_dta, 0, 5);
}

// to smooth the change of led bar
if(level2 > level)
{
level++;
}
else if(level2 < level)
{
level--;
}
if(level != level_buf)
{
level_buf = level;
bar.setLevel(level);
}
delay(10);
}