Skip to content

TMG39931

Nishikori Koji edited this page Feb 24, 2022 · 5 revisions

TMG39931

照度/カラー/近接センサ

コードURL: https://github.com/gfd-dennou-club/iotex-esp32-mrubyc/blob/master/mrblib/models/tmg39931.rb

サンプルコード: https://github.com/gfd-dennou-club/iotex-esp32-mrubyc/blob/master/example/master.rb.tmg39931

コンストラクタ

TMG39931.new(i2c)

  • i2c : I2Cクラスのオブジェクト

example

i2c = I2C.new(22, 21)
tmg39931 = TMG39931.new(i2c)

初期化

TMG39931.init()

example

if !tmg39931.init
  puts 'Device not found. Check wiring.'
else
  ...
end

近接センサのセットアップ

TMG39931.setup_recommended_config_for_proximity()

example

tmg39931.setup_recommended_config_for_proximity

近接センサの割り込み閾値の設定

TMG39931.set_proximity_interrupt_threshold(low, high)

  • low : 測定範囲の下限
  • high : 測定範囲の上限

example

tmg39931.set_proximity_interrupt_threshold(25, 150) # 5cm未満で近接イベントが発生

ADCの積分時間を設定

TMG39931.set_adc_integration_time(atime)

  • atime : 積分時間の設定(0xdbで103ms)

example

tmg39931.set_adc_integration_time(0xdb) # 積分時間: 103ms

エンジンの起動

TMG39931.enable_engines(enable_bits)

  • enable_bits : 起動するエンジンをbitで指定(定義されたハッシュENABLE[]を利用可能)

ENABLE[]

  • PON: PowerON
  • AEN: ALS Enable
  • PEN: Proximity Enable
  • WEN: Wait Enable
  • AIEN: ALS Interrupt Enable
  • PIEN: Proximity Interrupt Enable
  • GEN: Gesture Enable
  • PBEN: Pattern Burst Enable

example

tmg39931.enable_engines(TMG39931::ENABLE[:PON] | TMG39931::ENABLE[:PEN] | TMG39931::ENABLE[:PIEN] | TMG39931::ENABLE[:AEN] | TMG39931::ENABLE[:AIEN])

状態の取得

TMG39931.get_status()

STATUS[]

  • AVALID: ALS Valid
  • PVALID: Proximity Valid
  • GINT: Gesture Interrupt
  • PBINT: Pattern Burst Interrupt
  • AINT: ALS Interrupt
  • PINT: Proximity Interrupt
  • PGSAT: Proximity/Gesture Saturation
  • CPSAT: Clear Photodiode Saturation

example

if (tmg39931.get_status & (TMG39931::STATUS[:PINT] | TMG39931::STATUS[:AVALID])) != 0 # センサの状態確認
  ...
end

近接データの取得

TMG39931.get_proximity_raw()

example

proximity_raw = tmg39931.get_proximity_raw 

rgbcデータの取得

TMG39931.get_rgbc_raw()

example

data = tmg39931.get_proximity_raw 

照度データの取得

TMG39931.get_lux(rgbc)

  • rgbc : rgbcデータを配列で与える。与えなければrgbcデータを取得してからluxに変換

example

data = tmg39931.get_proximity_raw 
lux = tmg39931.get_lux(data)

色温度(cct)データの取得

TMG39931.get_cct(rgbc)

  • rgbc : rgbcデータを配列で与える。与えなければrgbcデータを取得してからcctに変換

example

data = tmg39931.get_proximity_raw 
cct = tmg39931.get_cct(:ata)

近接割り込みの解除

TMG39931.clear_proximity_interrupts

example

tmg39931.clear_proximity_interrupts

その他

その他のメソッドもarduinoの実装を参考に実装しているが、実行確認不十分のため解説しない