パーツ解説

APDS-9960の近接センサーを使ってみる

投稿日:2020-04-09 更新日:

前回 APDS-9960 のジェスチャーセンサーを使用しました。今回はジェスチャーに加えて近接センサーも使用してみたいと思います。

前回の記事はこちら

PICでジェスチャーセンサーを使ってみる[APDS-9960]

さて、近接センサーですが、前回ジェスチャーセンサーを使用するときに既に動作しています。近接センサーの値によってジェスチャーセンサーを ON/OFF させていました。

というわけで今回すべきことは近接センサーの調整ぐらいになりそうです。

データシートを確認すると近接センサーの測定値は PDATA(0x9C) に格納されているようです。なので早速このレジスタの値を読み取って LCD に表示させてみました。

・・あれ?なぜ11までしか値が増加しないのだ?

しかし、すぐにピンときました。前回ジェスチャーエンジンを起動する閾値を10と設定したせいでしょう。

試しに閾値を20にしてみると今度は21まで値が増加しました。どうやら閾値を超えるとそれ以上は測定しないようですね。

そこで、近接センサーの測定値を読む間だけジェスチャーエンジンを OFF にしておくことにしました。これで255まで測定することができます。

その後スケールなどを試行錯誤した結果、LED電流 100mA, ブースト 300% にすることにしました。

電流はジェスチャーエンジンと近接エンジンで個別に設定できますが、ブーストは共通なので、ジェスチャーエンジンの電流を 25mA → 12.5mA に変更しました。

また、近接センサーの電流を増やしたのでジェスチャーエンジンの閾値を GPENTH = 20, GEXTH = 10 としました。2つの閾値が異なっているのは閾値付近での動作を安定化させるためです。

では実際に動作テストしてみます。0.1s 毎に近接センサーの値を読み取ります。このとき、タイマ割り込みで直接読み取りしようとすると、メインループでのジェスチャーの処理に重なってしまうので、読み取りフラグを立てるだけにしてメインループでフラグを確認します。

今回は近接センサーの測定値を PWM で出力してレベルメーターで確認できるようにしてみました。レベルメーターは秋月電子のこちらのキットを使用しました。

以下テスト動画、ソースコード、回路図です。

I2Cライブラリ

次回はこのセンサーのもう一つの機能である RGBセンサーを使ってみたいと思います。

次回 ↓

APDS-9960のRGBセンサーを使ってみる

-パーツ解説

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

リアルタイムクロック DS1307 の使い方

今回は秋月電子で販売されているこちらのリアルタイムクロック(以下 RTC)の DS1307 について紹介します。 目次1 RTC とは2 DS1307 の特徴3 レジスタ4 プログラム RTC とは …

aitendoのI2CキャラクタLCDが安くて便利

ブレッドボード上で情報を表示したり簡易的なデバッグをしたりするのに便利なのがキャラクタLCD です。 今回は aitendo で販売されているこちらの LCD を使ってみました。 ちなみに以前秋月電子 …

PICで7セグドライバTM1630を使ってみた

今回は秋月電子で販売されている7セグメントLEDドライバ TM1630 を使用してみました。 TM16301つで7セグ5桁または8セグ4桁をダイナミック点灯で制御することができます。※カソードコモンじ …

圧電素子とPICマイコンで振動センサー

この記事では圧電素子(ピエゾ素子)を使用してPICマイコンで振動を検出する方法を解説します。   目次1 使用するもの2 圧電素子とは3 圧電効果を見てみる4 PICマイコンで振動検出5 応 …

PICでジェスチャーセンサーを使ってみる[APDS-9960]

今回は以前から気になっていた秋月電子で販売されているこちらのジェスチャーセンサー APDS-9960 を使ってみました。ネットの情報も少なく、Arduinoのライブラリを使うだけしか書いてなかったりし …