MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Arduinoの基礎 - ジェスチャセンサのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Arduinoの基礎 - ジェスチャセンサ
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == ここでは、Arduinoでジェスチャセンサ(APDS-9960)を使用する方法を記載する。<br> 実際に、上下左右にLEDを配置して、ジェスチャセンサの前で手を上下左右に振った方向にあるLEDを点灯させる。<br> <br> Arduinoは5[V]で動作するが、APDS-9960は3[V]〜3.8[V]で動作するので、<br> もし、Arduinoクローンを使用している場合は、接続するために双方向レベルシフタが必要な可能性が高い。<br> 双方向レベルシフタの接続において、3.3[V]側、5[V]側、それぞれに電源を接続して、レベルシフトする線同士を同じチャネルに接続するだけである。<br> <br> また、APDS-9960は、GY-9960LLCというモジュールで駆動させている。<br> <br> ピンアウトは下図の通り、電源(VIN)とGND、I2Cインターフェイス(SCLとSDA)およびび割り込みピンである。<br> I2Cインターフェイスは、Arduino UNOであればA4(SDA)とA5(SCL)、Arduino Megaであれば20(SDA)と21(SCL)に接続する。<br> また、I2Cインターフェイスは、10[kΩ]程度の抵抗でプルアップする。<br> [[ファイル:Arduino Gesture Sensor 1.png|フレームなし|中央]] <br> 割り込みピンは、Arduino UnoではD2(割り込み番号 : 0)である。<br> 詳細は、[[Arduinoの基礎#.E5.89.B2.E3.82.8A.E8.BE.BC.E3.81.BF.E3.81.A8ISR|Arduinoの基礎の"割り込みとISR"セクション]]を参照すること。<br> <br> また、LEDの電流制限抵抗は、220[Ω]とする。<br> [[ファイル:Arduino Gesture Sensor 2.png|フレームなし|中央]] <br><br> == サンプルコード == サンプルコードでは、SparkfunのAPDS-9960ライブラリを使用している。<br> Arduino IDEのライブラリマネージャから<code>9960</code>で検索して、ライブラリをインストールすること。<br> <br> 正常に動作すると、手を振った方向にあるLEDが点灯する。<br> <syntaxhighlight lang="c++"> #include <Wire.h> #include <SparkFun_APDS9960.h> const int APDS9960_INT = 2; const int PIN_LED_RIGHT = 8; const int PIN_LED_LEFT = 9; const int PIN_LED_UP = 10; const int PIN_LED_DOWN = 11; SparkFun_APDS9960 apds = SparkFun_APDS9960(); int isr_flag = 0; void setup() { Serial.begin(9600); pinMode(APDS9960_INT, INPUT); pinMode( PIN_LED_RIGHT, OUTPUT ); pinMode( PIN_LED_LEFT, OUTPUT ); pinMode( PIN_LED_UP, OUTPUT ); pinMode( PIN_LED_DOWN, OUTPUT ); digitalWrite( PIN_LED_RIGHT, LOW ); digitalWrite( PIN_LED_LEFT, LOW ); digitalWrite( PIN_LED_UP, LOW ); digitalWrite( PIN_LED_DOWN, LOW ); attachInterrupt( digitalPinToInterrupt(APDS9960_INT), interruptRoutine, FALLING); if ( !apds.init() ) { Serial.println("Failed to initialize APDS-9960."); } if ( !apds.enableGestureSensor(true) ) { Serial.println("Could not start APDS-9960."); } } void loop() { if( isr_flag == 1 ) { detachInterrupt(0); handleGesture(); isr_flag = 0; attachInterrupt(0, interruptRoutine, FALLING); } } void interruptRoutine() { isr_flag = 1; } void handleGesture() { if ( apds.isGestureAvailable() ) { switch ( apds.readGesture() ) { case DIR_UP: turnOnLED( PIN_LED_UP ); break; case DIR_DOWN: turnOnLED( PIN_LED_DOWN ); break; case DIR_LEFT: turnOnLED( PIN_LED_LEFT ); break; case DIR_RIGHT: turnOnLED( PIN_LED_RIGHT ); break; } } } void turnOnLED( int ledPin ) { digitalWrite( ledPin, HIGH ); delay( 1000 ); digitalWrite( ledPin, LOW ); } </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:Arduino]]
Arduinoの基礎 - ジェスチャセンサ
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse