====== MOD-LTR-501ALS ======
Capteur I2C de lumiere et de distance <8cm
https://www.olimex.com/Products/Modules/Sensors/MOD-LTR-501ALS/open-source-hardware
===== Code lumiere vers OSC =====
OSC sur local host 9001 /LUX/0 /LUX/1 et /LUX/DIST
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Lecture du module LTR50ALS capteur de lumière , UEXT Olimex
# transmission des donnees en OSC
import sys,time,liblo
from smbus import SMBus
BUS_NUMBER = 2
PORT=9001
ADRS=35 # 0x23 - LTR501ALS
# init pour le bus
b = SMBus(BUS_NUMBER) # 0 indicates /dev/i2c-0
data = {}
try:
print('init1')
target = liblo.Address("localhost",9001)
except liblo.AddressError, err:
print str(err)
sys.exit()
# init du module
try:
b.write_i2c_block_data(2, ADRS,[0x80,0x03]) # active mode 64k lux
b.write_i2c_block_data(2, ADRS,[0x81,0x03]) # PS active mode, x1 GAIN
b.write_i2c_block_data(2, ADRS,[0x82,0x6B]) # LED 60Hz, 50% duty, 50mA
b.write_i2c_block_data(2, ADRS,[0x83,0x7F]) # 127 pulses
b.write_i2c_block_data(2, ADRS,[0x84,0x02]) # PS 100ms measure rate
b.write_i2c_block_data(2, ADRS,[0x85,0x04]) # ALS Integration 100ms, repeat rate 500ms
except IOError, err:
print ("ioerr")
#exept:
# print str(err init)
# sys.exit()
while True:
try:
status = b.read_byte_data(ADRS,0x8c)
# print("0x%02X",status & 0xFF)
if(status & 0x04):
data_block = b.read_i2c_block_data(ADRS,0x88,4)
adc_0 = (data_block[1] * 2**8 + data_block[0])
adc_1 = (data_block[3] * 2**8 + data_block[2])
print "ADC_0= %d" % adc_0
print "ADC_1= %d" % adc_1
liblo.send(target,"/LUXADC_0", adc_0)
liblo.send(target,"/LUXADC_1", adc_1)
elif(status & 0x01):
data_block = b.read_i2c_block_data(ADRS,0x8D,2)
PS = (data_block[1] * 2**8 + data_block[0])
distance = 10 -(10.0/2047)*PS
distance = format(distance,'.2f')
print "DIST= %d" % distance
liblo.send(target,"/DIST", distance)
else:
# print("0x%02X",status & 0xFF)
time.sleep(0.02)
except IOError, err:
print ("ioerr read")
except KeyError:
pass
except KeyboardInterrupt:
quit()
except StopIteration:
session = None
print "GPSD has terminated"
except:
# print('echec')
continue
# time.sleep(1.12)
{{:python:lumiere2osc.py|}}
script bash de lancement, sort si le capteur n'est pas present et l'initialise correctement ( a faire dans en python ;-) )
#!/bin/bash
MOD-LTR501ALS --i2c=/dev/i2c-1 -a 0x23 --als-mode=ACTIVE --ps-mode=ACTIVE
RET=$?
if [ "$RET" == 0 ]
then
lumiere2OSC.py
fi