macsbug

Just another WordPress.com site

Proximity Sensor of Arduino

leave a comment »

APDL-9960 近接センサーを試す。                                  2015.08.22


SparkFun RGB and Gesture Sensor – APDS-9960 と Arduino を配線し、Proximityセンサーを試す。
データーの表示は、Processing を使用し、オシロスコープのようにグラフ表示。
サンプルプログラムは、全て動きました。
なかなか、良い感度と精度が出ています。センシングする距離は、最大約6センチ位です。


用意するもの:
Arduino UNO と Arduino IDE 。
Library 及び サンプルプログラム:APDS-9960_RGB_and_Gesture_Sensor
プロセシング言語:Processing
SparkFun ジェスチャーセンサ( 3.3V 仕様):価格:スイッチサイエンスで、2053円(送料込み)。



配線:

 Arduino  APDL-9960
  3.3V   VCC
  GND   GND
  A4(4)   SDA
  A5(5)   SCL

 


APDL-9960:仕様:

  • Operational Voltage: 3.3V
  • Ambient Light & RGB Color Sensing
  • Proximity Sensing
  • Gesture Detection
  • Operating Range: 4-8in (10-20cm)
  • I2C Interface (I2C Address: 0x39)

 


Arduino と Processing のスケッチ:

Arduino:


/*********************************************************
Proximity Test
Hardware Connections:The APDS-9960 can only accept 3.3V! 
 Arduino Pin  APDS-9960 Board  Function 
 3.3V         VCC              Power
 GND          GND              Ground
 A4           SDA              I2C Data
 A5           SCL              I2C Clock
*********************************************************/
#include <Wire.h>
#include <SparkFun_APDS9960.h>
SparkFun_APDS9960 apds = SparkFun_APDS9960();
uint8_t proximity_data = 0;

void setup() {
  Serial.begin(115200);
  apds.init();
  apds.setProximityGain(PGAIN_1X);
  apds.enableProximitySensor(false) ;
}

void loop() {
  if ( apds.readProximity(proximity_data)){
    Serial.write('H');             // Header
    Serial.write(proximity_data);  // 0 - 255
  } 
  delay(50);
}


Processing:


import  processing.serial.*;
Serial  serial;
int[]   data;

void setup() {  
  size(700, 240);
  data = new int [width];
  serial = new Serial( this, Serial.list()[0], 115200 );
}

void draw() {
 background(10);
 strokeWeight(2); 
 stroke(0, 255, 0);
 for (int i=0; i<data.length-1; i++) {            // GRAPH DRAW
   line( i, GP(data[i]), i+1, GP(data[i+1]) );
 } 
} 

void serialEvent(Serial port) {
 if ( port.available() >= 3 ) {
   if ( port.read() == 'H' ) {   
     int recv_data = port.read();                  // DATA READ     
     for (int i=0; i<data.length-1; i++) {        // GRAPH DATA UP
       data[i] = data[i+1];
     }
     data[data.length-1] = recv_data;
   }
 }
}

float convToGraphPoint(int value) {
  return (height - value*height/256);
}


メモ:
Processing は、画像を表示をするのに便利です。
_ 今回は、シリアルデーターをオシロスーコープにするサンプルを参考にしました。
_ 信号は、Arduio : Sensor -> Serial.write(data); -> Processing : port.read(); という流れです。
_ スケッチは、簡単に変更して使え、他の Arduino のセンサーの動作確認にも便利です。
_ Export Application を選択すると Windows, Mac, Linux の単独アプリが作れます。
製品の注意:ebay で販売されている APDL9930 は格安ですが Proximityセンサー機能はありません。
_  参考:じわじわ進む:ArduinoとAPDL9930(9960じゃなくて)


 

Written by macsbug

8月 23, 2015 @ 3:10 am

カテゴリー: Arduino, Processing

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。