Skip to content
Snippets Groups Projects
Commit 9a3d3bcc authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

add simple TSL2591 illuminance / IR sensor driver

parent 4e70dc99
No related branches found
No related tags found
No related merge requests found
/*
* Copyright 2020 Daniel Friesel
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#ifndef TSL2591_H
#define TSL2591_H
class TSL2591 {
private:
TSL2591(const TSL2591 &copy);
unsigned char const address = 0x29;
unsigned char txbuf[2];
unsigned char rxbuf[4];
public:
TSL2591() {}
unsigned short ch0;
unsigned short ch1;
void init();
unsigned char getStatus();
void read();
};
extern TSL2591 tsl2591;
#endif
......@@ -42,6 +42,9 @@
#ifdef DRIVER_MPU9250
#include "driver/mpu9250.h"
#endif
#ifdef DRIVER_TSL2591
#include "driver/tsl2591.h"
#endif
void loop(void)
{
......@@ -127,6 +130,12 @@ void loop(void)
kout.printf_float(max44009.getLux());
kout << endl;
#endif
#ifdef DRIVER_TSL2591
tsl2591.read();
kout << dec << "TSL2591 CH0: " << tsl2591.ch0 << " / CH1: " << tsl2591.ch1;
kout << hex << " (status: 0x" << tsl2591.getStatus() << ")" << endl;
#endif
}
int main(void)
......@@ -211,6 +220,10 @@ int main(void)
mpu9250.init();
#endif
#ifdef DRIVER_TSL2591
tsl2591.init();
#endif
arch.idle_loop();
return 0;
......
/*
* Copyright 2020 Daniel Friesel
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "driver/tsl2591.h"
#if defined(MULTIPASS_ARCH_HAS_I2C) && !defined(DRIVER_SOFTI2C)
#include "driver/i2c.h"
#else
#include "driver/soft_i2c.h"
#endif
void TSL2591::init()
{
txbuf[0] = 0xa0;
txbuf[1] = 0x03;
i2c.xmit(address, 2, txbuf, 0, rxbuf);
txbuf[0] = 0xa1;
txbuf[1] = 0x01; // 200ms integration time
i2c.xmit(address, 2, txbuf, 0, rxbuf);
}
void TSL2591::read()
{
txbuf[0] = 0xb4;
i2c.xmit(address, 1, txbuf, 4, rxbuf);
ch0 = (rxbuf[1] << 8) + rxbuf[0];
ch1 = (rxbuf[3] << 8) + rxbuf[2];
}
unsigned char TSL2591::getStatus()
{
txbuf[0] = 0xb3;
i2c.xmit(address, 1, txbuf, 1, rxbuf);
return rxbuf[0];
}
TSL2591 tsl2591;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment