Deprecate xyz.init() in favor of xyz.setup(), removing inherent i2c configuration (#1887)
This commit is contained in:
parent
e7f063950b
commit
7dae5236e6
|
@ -12,7 +12,7 @@
|
||||||
static const uint32_t adxl345_i2c_id = 0;
|
static const uint32_t adxl345_i2c_id = 0;
|
||||||
static const uint8_t adxl345_i2c_addr = 0x53;
|
static const uint8_t adxl345_i2c_addr = 0x53;
|
||||||
|
|
||||||
static uint8_t ICACHE_FLASH_ATTR r8u(uint32_t id, uint8_t reg) {
|
static uint8_t r8u(uint32_t id, uint8_t reg) {
|
||||||
uint8_t ret;
|
uint8_t ret;
|
||||||
|
|
||||||
platform_i2c_send_start(id);
|
platform_i2c_send_start(id);
|
||||||
|
@ -26,19 +26,9 @@ static uint8_t ICACHE_FLASH_ATTR r8u(uint32_t id, uint8_t reg) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ICACHE_FLASH_ATTR adxl345_init(lua_State* L) {
|
static int adxl345_setup(lua_State* L) {
|
||||||
|
|
||||||
uint32_t sda;
|
|
||||||
uint32_t scl;
|
|
||||||
uint8_t devid;
|
uint8_t devid;
|
||||||
|
|
||||||
sda = luaL_checkinteger(L, 1);
|
|
||||||
scl = luaL_checkinteger(L, 2);
|
|
||||||
|
|
||||||
luaL_argcheck(L, sda > 0 && scl > 0, 1, "no i2c for D0");
|
|
||||||
|
|
||||||
platform_i2c_setup(adxl345_i2c_id, sda, scl, PLATFORM_I2C_SPEED_SLOW);
|
|
||||||
|
|
||||||
devid = r8u(adxl345_i2c_id, 0x00);
|
devid = r8u(adxl345_i2c_id, 0x00);
|
||||||
|
|
||||||
if (devid != 229) {
|
if (devid != 229) {
|
||||||
|
@ -55,7 +45,24 @@ static int ICACHE_FLASH_ATTR adxl345_init(lua_State* L) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ICACHE_FLASH_ATTR adxl345_read(lua_State* L) {
|
static int adxl345_init(lua_State* L) {
|
||||||
|
|
||||||
|
uint32_t sda;
|
||||||
|
uint32_t scl;
|
||||||
|
|
||||||
|
platform_print_deprecation_note("adxl345.init() is replaced by adxl345.setup()", "in the next version");
|
||||||
|
|
||||||
|
sda = luaL_checkinteger(L, 1);
|
||||||
|
scl = luaL_checkinteger(L, 2);
|
||||||
|
|
||||||
|
luaL_argcheck(L, sda > 0 && scl > 0, 1, "no i2c for D0");
|
||||||
|
|
||||||
|
platform_i2c_setup(adxl345_i2c_id, sda, scl, PLATFORM_I2C_SPEED_SLOW);
|
||||||
|
|
||||||
|
return adxl345_setup(L);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int adxl345_read(lua_State* L) {
|
||||||
|
|
||||||
uint8_t data[6];
|
uint8_t data[6];
|
||||||
int x,y,z;
|
int x,y,z;
|
||||||
|
@ -88,6 +95,8 @@ static int ICACHE_FLASH_ATTR adxl345_read(lua_State* L) {
|
||||||
|
|
||||||
static const LUA_REG_TYPE adxl345_map[] = {
|
static const LUA_REG_TYPE adxl345_map[] = {
|
||||||
{ LSTRKEY( "read" ), LFUNCVAL( adxl345_read )},
|
{ LSTRKEY( "read" ), LFUNCVAL( adxl345_read )},
|
||||||
|
{ LSTRKEY( "setup" ), LFUNCVAL( adxl345_setup )},
|
||||||
|
/// init() is deprecated
|
||||||
{ LSTRKEY( "init" ), LFUNCVAL( adxl345_init )},
|
{ LSTRKEY( "init" ), LFUNCVAL( adxl345_init )},
|
||||||
{ LNILKEY, LNILVAL}
|
{ LNILKEY, LNILVAL}
|
||||||
};
|
};
|
||||||
|
|
|
@ -84,10 +84,8 @@ static int _read(uint32_t id, void *buf, uint8_t len, uint8_t off)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int am2320_init(lua_State* L)
|
static int am2320_setup(lua_State* L)
|
||||||
{
|
{
|
||||||
uint32_t sda;
|
|
||||||
uint32_t scl;
|
|
||||||
int ret;
|
int ret;
|
||||||
struct {
|
struct {
|
||||||
uint8_t cmd;
|
uint8_t cmd;
|
||||||
|
@ -97,6 +95,24 @@ static int am2320_init(lua_State* L)
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
} nfo;
|
} nfo;
|
||||||
|
|
||||||
|
os_delay_us(1500); // give some time to settle things down
|
||||||
|
ret = _read(am2320_i2c_id, &nfo, sizeof(nfo)-2, 0x08);
|
||||||
|
if(ret)
|
||||||
|
return luaL_error(L, "transmission error");
|
||||||
|
|
||||||
|
lua_pushinteger(L, ntohs(nfo.model));
|
||||||
|
lua_pushinteger(L, nfo.version);
|
||||||
|
lua_pushinteger(L, ntohl(nfo.id));
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int am2320_init(lua_State* L)
|
||||||
|
{
|
||||||
|
uint32_t sda;
|
||||||
|
uint32_t scl;
|
||||||
|
|
||||||
|
platform_print_deprecation_note("am2320.init() is replaced by am2320.setup()", "in the next version");
|
||||||
|
|
||||||
if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2)) {
|
if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2)) {
|
||||||
return luaL_error(L, "wrong arg range");
|
return luaL_error(L, "wrong arg range");
|
||||||
}
|
}
|
||||||
|
@ -110,15 +126,7 @@ static int am2320_init(lua_State* L)
|
||||||
|
|
||||||
platform_i2c_setup(am2320_i2c_id, sda, scl, PLATFORM_I2C_SPEED_SLOW);
|
platform_i2c_setup(am2320_i2c_id, sda, scl, PLATFORM_I2C_SPEED_SLOW);
|
||||||
|
|
||||||
os_delay_us(1500); // give some time to settle things down
|
return am2320_setup(L);
|
||||||
ret = _read(am2320_i2c_id, &nfo, sizeof(nfo)-2, 0x08);
|
|
||||||
if(ret)
|
|
||||||
return luaL_error(L, "transmission error");
|
|
||||||
|
|
||||||
lua_pushinteger(L, ntohs(nfo.model));
|
|
||||||
lua_pushinteger(L, nfo.version);
|
|
||||||
lua_pushinteger(L, ntohl(nfo.id));
|
|
||||||
return 3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int am2320_read(lua_State* L)
|
static int am2320_read(lua_State* L)
|
||||||
|
@ -145,8 +153,10 @@ static int am2320_read(lua_State* L)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const LUA_REG_TYPE am2320_map[] = {
|
static const LUA_REG_TYPE am2320_map[] = {
|
||||||
{ LSTRKEY( "read" ), LFUNCVAL( am2320_read )},
|
{ LSTRKEY( "read" ), LFUNCVAL( am2320_read )},
|
||||||
{ LSTRKEY( "init" ), LFUNCVAL( am2320_init )},
|
{ LSTRKEY( "setup" ), LFUNCVAL( am2320_setup )},
|
||||||
|
// init() is deprecated
|
||||||
|
{ LSTRKEY( "init" ), LFUNCVAL( am2320_init )},
|
||||||
{ LNILKEY, LNILVAL}
|
{ LNILKEY, LNILVAL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -227,35 +227,25 @@ static double bme280_qfe2qnh(int32_t qfe, int32_t h) {
|
||||||
return qnh;
|
return qnh;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bme280_lua_init(lua_State* L) {
|
static int bme280_lua_setup(lua_State* L) {
|
||||||
uint8_t sda;
|
|
||||||
uint8_t scl;
|
|
||||||
uint8_t config;
|
uint8_t config;
|
||||||
uint8_t ack;
|
uint8_t ack;
|
||||||
uint8_t full_init;
|
uint8_t full_init;
|
||||||
|
|
||||||
uint8_t const bit3 = 0b111;
|
uint8_t const bit3 = 0b111;
|
||||||
uint8_t const bit2 = 0b11;
|
uint8_t const bit2 = 0b11;
|
||||||
|
|
||||||
if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2)) {
|
bme280_mode = (!lua_isnumber(L, 4)?BME280_NORMAL_MODE:(luaL_checkinteger(L, 4)&bit2)) // 4-th parameter: power mode
|
||||||
return luaL_error(L, "wrong arg range");
|
| ((!lua_isnumber(L, 2)?BME280_OVERSAMP_16X:(luaL_checkinteger(L, 2)&bit3)) << 2) // 2-nd parameter: pressure oversampling
|
||||||
}
|
| ((!lua_isnumber(L, 1)?BME280_OVERSAMP_16X:(luaL_checkinteger(L, 1)&bit3)) << 5); // 1-st parameter: temperature oversampling
|
||||||
sda = luaL_checkinteger(L, 1);
|
|
||||||
scl = luaL_checkinteger(L, 2);
|
|
||||||
|
|
||||||
bme280_mode = (!lua_isnumber(L, 6)?BME280_NORMAL_MODE:(luaL_checkinteger(L, 6)&bit2)) // 6-th parameter: power mode
|
|
||||||
| ((!lua_isnumber(L, 4)?BME280_OVERSAMP_16X:(luaL_checkinteger(L, 4)&bit3)) << 2) // 4-th parameter: pressure oversampling
|
|
||||||
| ((!lua_isnumber(L, 3)?BME280_OVERSAMP_16X:(luaL_checkinteger(L, 3)&bit3)) << 5); // 3-rd parameter: temperature oversampling
|
|
||||||
|
|
||||||
bme280_ossh = (!lua_isnumber(L, 5))?BME280_OVERSAMP_16X:(luaL_checkinteger(L, 5)&bit3); // 5-th parameter: humidity oversampling
|
bme280_ossh = (!lua_isnumber(L, 3))?BME280_OVERSAMP_16X:(luaL_checkinteger(L, 3)&bit3); // 3-rd parameter: humidity oversampling
|
||||||
|
|
||||||
config = ((!lua_isnumber(L, 7)?BME280_STANDBY_TIME_20_MS:(luaL_checkinteger(L, 7)&bit3))<< 5) // 7-th parameter: inactive duration in normal mode
|
config = ((!lua_isnumber(L, 5)?BME280_STANDBY_TIME_20_MS:(luaL_checkinteger(L, 5)&bit3))<< 5) // 5-th parameter: inactive duration in normal mode
|
||||||
| ((!lua_isnumber(L, 8)?BME280_FILTER_COEFF_16:(luaL_checkinteger(L, 8)&bit3)) << 2); // 8-th parameter: IIR filter
|
| ((!lua_isnumber(L, 6)?BME280_FILTER_COEFF_16:(luaL_checkinteger(L, 6)&bit3)) << 2); // 6-th parameter: IIR filter
|
||||||
full_init = !lua_isnumber(L, 9)?1:lua_tointeger(L, 9); // 9-th parameter: init the chip too
|
full_init = !lua_isnumber(L, 7)?1:lua_tointeger(L, 7); // 7-th parameter: init the chip too
|
||||||
NODE_DBG("mode: %x\nhumidity oss: %x\nconfig: %x\n", bme280_mode, bme280_ossh, config);
|
NODE_DBG("mode: %x\nhumidity oss: %x\nconfig: %x\n", bme280_mode, bme280_ossh, config);
|
||||||
|
|
||||||
platform_i2c_setup(bme280_i2c_id, sda, scl, PLATFORM_I2C_SPEED_SLOW);
|
|
||||||
|
|
||||||
bme280_i2c_addr = BME280_I2C_ADDRESS1;
|
bme280_i2c_addr = BME280_I2C_ADDRESS1;
|
||||||
platform_i2c_send_start(bme280_i2c_id);
|
platform_i2c_send_start(bme280_i2c_id);
|
||||||
ack = platform_i2c_send_address(bme280_i2c_id, bme280_i2c_addr, PLATFORM_I2C_DIRECTION_TRANSMITTER);
|
ack = platform_i2c_send_address(bme280_i2c_id, bme280_i2c_addr, PLATFORM_I2C_DIRECTION_TRANSMITTER);
|
||||||
|
@ -324,6 +314,30 @@ static int bme280_lua_init(lua_State* L) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int bme280_lua_init(lua_State* L) {
|
||||||
|
uint8_t sda;
|
||||||
|
uint8_t scl;
|
||||||
|
uint8_t config;
|
||||||
|
uint8_t ack;
|
||||||
|
uint8_t full_init;
|
||||||
|
|
||||||
|
platform_print_deprecation_note("bme280.init() is replaced by bme280.setup()", "in the next version");
|
||||||
|
|
||||||
|
if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2)) {
|
||||||
|
return luaL_error(L, "wrong arg range");
|
||||||
|
}
|
||||||
|
sda = luaL_checkinteger(L, 1);
|
||||||
|
scl = luaL_checkinteger(L, 2);
|
||||||
|
|
||||||
|
platform_i2c_setup(bme280_i2c_id, sda, scl, PLATFORM_I2C_SPEED_SLOW);
|
||||||
|
|
||||||
|
// remove sda and scl parameters from stack
|
||||||
|
lua_remove(L, 1);
|
||||||
|
lua_remove(L, 1);
|
||||||
|
|
||||||
|
return bme280_lua_setup(L);
|
||||||
|
}
|
||||||
|
|
||||||
static void bme280_readoutdone (void *arg)
|
static void bme280_readoutdone (void *arg)
|
||||||
{
|
{
|
||||||
NODE_DBG("timer out\n");
|
NODE_DBG("timer out\n");
|
||||||
|
@ -481,7 +495,9 @@ static int bme280_lua_dewpoint(lua_State* L) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static const LUA_REG_TYPE bme280_map[] = {
|
static const LUA_REG_TYPE bme280_map[] = {
|
||||||
|
// init() is deprecated
|
||||||
{ LSTRKEY( "init" ), LFUNCVAL(bme280_lua_init)},
|
{ LSTRKEY( "init" ), LFUNCVAL(bme280_lua_init)},
|
||||||
|
{ LSTRKEY( "setup" ), LFUNCVAL(bme280_lua_setup)},
|
||||||
{ LSTRKEY( "temp" ), LFUNCVAL(bme280_lua_temp)},
|
{ LSTRKEY( "temp" ), LFUNCVAL(bme280_lua_temp)},
|
||||||
{ LSTRKEY( "baro" ), LFUNCVAL(bme280_lua_baro)},
|
{ LSTRKEY( "baro" ), LFUNCVAL(bme280_lua_baro)},
|
||||||
{ LSTRKEY( "humi" ), LFUNCVAL(bme280_lua_humi)},
|
{ LSTRKEY( "humi" ), LFUNCVAL(bme280_lua_humi)},
|
||||||
|
|
|
@ -21,7 +21,7 @@ static struct {
|
||||||
int16_t MD;
|
int16_t MD;
|
||||||
} bmp085_data;
|
} bmp085_data;
|
||||||
|
|
||||||
static uint8_t ICACHE_FLASH_ATTR r8u(uint32_t id, uint8_t reg) {
|
static uint8_t r8u(uint32_t id, uint8_t reg) {
|
||||||
uint8_t ret;
|
uint8_t ret;
|
||||||
|
|
||||||
platform_i2c_send_start(id);
|
platform_i2c_send_start(id);
|
||||||
|
@ -35,32 +35,18 @@ static uint8_t ICACHE_FLASH_ATTR r8u(uint32_t id, uint8_t reg) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint16_t ICACHE_FLASH_ATTR r16u(uint32_t id, uint8_t reg) {
|
static uint16_t r16u(uint32_t id, uint8_t reg) {
|
||||||
uint8_t high = r8u(id, reg);
|
uint8_t high = r8u(id, reg);
|
||||||
uint8_t low = r8u(id, reg + 1);
|
uint8_t low = r8u(id, reg + 1);
|
||||||
return (high << 8) | low;
|
return (high << 8) | low;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int16_t ICACHE_FLASH_ATTR r16(uint32_t id, uint8_t reg) {
|
static int16_t r16(uint32_t id, uint8_t reg) {
|
||||||
return (int16_t) r16u(id, reg);
|
return (int16_t) r16u(id, reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ICACHE_FLASH_ATTR bmp085_init(lua_State* L) {
|
static int bmp085_setup(lua_State* L) {
|
||||||
uint32_t sda;
|
(void)L;
|
||||||
uint32_t scl;
|
|
||||||
|
|
||||||
if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2)) {
|
|
||||||
return luaL_error(L, "wrong arg range");
|
|
||||||
}
|
|
||||||
|
|
||||||
sda = luaL_checkinteger(L, 1);
|
|
||||||
scl = luaL_checkinteger(L, 2);
|
|
||||||
|
|
||||||
if (scl == 0 || sda == 0) {
|
|
||||||
return luaL_error(L, "no i2c for D0");
|
|
||||||
}
|
|
||||||
|
|
||||||
platform_i2c_setup(bmp085_i2c_id, sda, scl, PLATFORM_I2C_SPEED_SLOW);
|
|
||||||
|
|
||||||
bmp085_data.AC1 = r16(bmp085_i2c_id, 0xAA);
|
bmp085_data.AC1 = r16(bmp085_i2c_id, 0xAA);
|
||||||
bmp085_data.AC2 = r16(bmp085_i2c_id, 0xAC);
|
bmp085_data.AC2 = r16(bmp085_i2c_id, 0xAC);
|
||||||
|
@ -77,6 +63,28 @@ static int ICACHE_FLASH_ATTR bmp085_init(lua_State* L) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int bmp085_init(lua_State* L) {
|
||||||
|
uint32_t sda;
|
||||||
|
uint32_t scl;
|
||||||
|
|
||||||
|
platform_print_deprecation_note("bmp085.init() is replaced by bmp085.setup()", "in the next version");
|
||||||
|
|
||||||
|
if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2)) {
|
||||||
|
return luaL_error(L, "wrong arg range");
|
||||||
|
}
|
||||||
|
|
||||||
|
sda = luaL_checkinteger(L, 1);
|
||||||
|
scl = luaL_checkinteger(L, 2);
|
||||||
|
|
||||||
|
if (scl == 0 || sda == 0) {
|
||||||
|
return luaL_error(L, "no i2c for D0");
|
||||||
|
}
|
||||||
|
|
||||||
|
platform_i2c_setup(bmp085_i2c_id, sda, scl, PLATFORM_I2C_SPEED_SLOW);
|
||||||
|
|
||||||
|
return bmp085_setup(L);
|
||||||
|
}
|
||||||
|
|
||||||
static uint32_t bmp085_temperature_raw_b5(void) {
|
static uint32_t bmp085_temperature_raw_b5(void) {
|
||||||
int16_t t, X1, X2;
|
int16_t t, X1, X2;
|
||||||
|
|
||||||
|
@ -96,16 +104,16 @@ static uint32_t bmp085_temperature_raw_b5(void) {
|
||||||
return X1 + X2;
|
return X1 + X2;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int16_t ICACHE_FLASH_ATTR bmp085_temperature(void) {
|
static int16_t bmp085_temperature(void) {
|
||||||
return (bmp085_temperature_raw_b5() + 8) >> 4;
|
return (bmp085_temperature_raw_b5() + 8) >> 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ICACHE_FLASH_ATTR bmp085_lua_temperature(lua_State* L) {
|
static int bmp085_lua_temperature(lua_State* L) {
|
||||||
lua_pushinteger(L, bmp085_temperature());
|
lua_pushinteger(L, bmp085_temperature());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t ICACHE_FLASH_ATTR bmp085_pressure_raw(int oss) {
|
static int32_t bmp085_pressure_raw(int oss) {
|
||||||
int32_t p;
|
int32_t p;
|
||||||
int32_t p1, p2, p3;
|
int32_t p1, p2, p3;
|
||||||
|
|
||||||
|
@ -132,7 +140,7 @@ static int32_t ICACHE_FLASH_ATTR bmp085_pressure_raw(int oss) {
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ICACHE_FLASH_ATTR bmp085_lua_pressure_raw(lua_State* L) {
|
static int bmp085_lua_pressure_raw(lua_State* L) {
|
||||||
uint8_t oss = 0;
|
uint8_t oss = 0;
|
||||||
int32_t p;
|
int32_t p;
|
||||||
|
|
||||||
|
@ -148,7 +156,7 @@ static int ICACHE_FLASH_ATTR bmp085_lua_pressure_raw(lua_State* L) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ICACHE_FLASH_ATTR bmp085_lua_pressure(lua_State* L) {
|
static int bmp085_lua_pressure(lua_State* L) {
|
||||||
uint8_t oss = 0;
|
uint8_t oss = 0;
|
||||||
int32_t p;
|
int32_t p;
|
||||||
int32_t X1, X2, X3, B3, B4, B5, B6, B7;
|
int32_t X1, X2, X3, B3, B4, B5, B6, B7;
|
||||||
|
@ -187,6 +195,8 @@ static const LUA_REG_TYPE bmp085_map[] = {
|
||||||
{ LSTRKEY( "temperature" ), LFUNCVAL( bmp085_lua_temperature )},
|
{ LSTRKEY( "temperature" ), LFUNCVAL( bmp085_lua_temperature )},
|
||||||
{ LSTRKEY( "pressure" ), LFUNCVAL( bmp085_lua_pressure )},
|
{ LSTRKEY( "pressure" ), LFUNCVAL( bmp085_lua_pressure )},
|
||||||
{ LSTRKEY( "pressure_raw" ), LFUNCVAL( bmp085_lua_pressure_raw )},
|
{ LSTRKEY( "pressure_raw" ), LFUNCVAL( bmp085_lua_pressure_raw )},
|
||||||
|
{ LSTRKEY( "setup" ), LFUNCVAL( bmp085_setup )},
|
||||||
|
// init() is deprecated
|
||||||
{ LSTRKEY( "init" ), LFUNCVAL( bmp085_init )},
|
{ LSTRKEY( "init" ), LFUNCVAL( bmp085_init )},
|
||||||
{ LNILKEY, LNILVAL}
|
{ LNILKEY, LNILVAL}
|
||||||
};
|
};
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
static const uint32_t hmc5883_i2c_id = 0;
|
static const uint32_t hmc5883_i2c_id = 0;
|
||||||
static const uint8_t hmc5883_i2c_addr = 0x1E;
|
static const uint8_t hmc5883_i2c_addr = 0x1E;
|
||||||
|
|
||||||
static uint8_t ICACHE_FLASH_ATTR r8u(uint32_t id, uint8_t reg) {
|
static uint8_t r8u(uint32_t id, uint8_t reg) {
|
||||||
uint8_t ret;
|
uint8_t ret;
|
||||||
|
|
||||||
platform_i2c_send_start(id);
|
platform_i2c_send_start(id);
|
||||||
|
@ -26,7 +26,7 @@ static uint8_t ICACHE_FLASH_ATTR r8u(uint32_t id, uint8_t reg) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ICACHE_FLASH_ATTR w8u(uint32_t id, uint8_t reg, uint8_t val) {
|
static void w8u(uint32_t id, uint8_t reg, uint8_t val) {
|
||||||
platform_i2c_send_start(hmc5883_i2c_id);
|
platform_i2c_send_start(hmc5883_i2c_id);
|
||||||
platform_i2c_send_address(hmc5883_i2c_id, hmc5883_i2c_addr, PLATFORM_I2C_DIRECTION_TRANSMITTER);
|
platform_i2c_send_address(hmc5883_i2c_id, hmc5883_i2c_addr, PLATFORM_I2C_DIRECTION_TRANSMITTER);
|
||||||
platform_i2c_send_byte(hmc5883_i2c_id, reg);
|
platform_i2c_send_byte(hmc5883_i2c_id, reg);
|
||||||
|
@ -34,19 +34,9 @@ static void ICACHE_FLASH_ATTR w8u(uint32_t id, uint8_t reg, uint8_t val) {
|
||||||
platform_i2c_send_stop(hmc5883_i2c_id);
|
platform_i2c_send_stop(hmc5883_i2c_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ICACHE_FLASH_ATTR hmc5883_init(lua_State* L) {
|
static int hmc5883_setup(lua_State* L) {
|
||||||
|
|
||||||
uint32_t sda;
|
|
||||||
uint32_t scl;
|
|
||||||
uint8_t devid_a, devid_b, devid_c;
|
uint8_t devid_a, devid_b, devid_c;
|
||||||
|
|
||||||
sda = luaL_checkinteger(L, 1);
|
|
||||||
scl = luaL_checkinteger(L, 2);
|
|
||||||
|
|
||||||
luaL_argcheck(L, sda > 0 && scl > 0, 1, "no i2c for D0");
|
|
||||||
|
|
||||||
platform_i2c_setup(hmc5883_i2c_id, sda, scl, PLATFORM_I2C_SPEED_SLOW);
|
|
||||||
|
|
||||||
devid_a = r8u(hmc5883_i2c_id, 10);
|
devid_a = r8u(hmc5883_i2c_id, 10);
|
||||||
devid_b = r8u(hmc5883_i2c_id, 11);
|
devid_b = r8u(hmc5883_i2c_id, 11);
|
||||||
devid_c = r8u(hmc5883_i2c_id, 12);
|
devid_c = r8u(hmc5883_i2c_id, 12);
|
||||||
|
@ -67,7 +57,24 @@ static int ICACHE_FLASH_ATTR hmc5883_init(lua_State* L) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ICACHE_FLASH_ATTR hmc5883_read(lua_State* L) {
|
static int hmc5883_init(lua_State* L) {
|
||||||
|
|
||||||
|
uint32_t sda;
|
||||||
|
uint32_t scl;
|
||||||
|
|
||||||
|
platform_print_deprecation_note("hmc5883l.init() is replaced by hmc5883l.setup()", "in the next version");
|
||||||
|
|
||||||
|
sda = luaL_checkinteger(L, 1);
|
||||||
|
scl = luaL_checkinteger(L, 2);
|
||||||
|
|
||||||
|
luaL_argcheck(L, sda > 0 && scl > 0, 1, "no i2c for D0");
|
||||||
|
|
||||||
|
platform_i2c_setup(hmc5883_i2c_id, sda, scl, PLATFORM_I2C_SPEED_SLOW);
|
||||||
|
|
||||||
|
return hmc5883_setup(L);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int hmc5883_read(lua_State* L) {
|
||||||
|
|
||||||
uint8_t data[6];
|
uint8_t data[6];
|
||||||
int x,y,z;
|
int x,y,z;
|
||||||
|
@ -101,6 +108,8 @@ static int ICACHE_FLASH_ATTR hmc5883_read(lua_State* L) {
|
||||||
|
|
||||||
static const LUA_REG_TYPE hmc5883_map[] = {
|
static const LUA_REG_TYPE hmc5883_map[] = {
|
||||||
{ LSTRKEY( "read" ), LFUNCVAL( hmc5883_read )},
|
{ LSTRKEY( "read" ), LFUNCVAL( hmc5883_read )},
|
||||||
|
{ LSTRKEY( "setup" ), LFUNCVAL( hmc5883_setup )},
|
||||||
|
// init() is deprecated
|
||||||
{ LSTRKEY( "init" ), LFUNCVAL( hmc5883_init )},
|
{ LSTRKEY( "init" ), LFUNCVAL( hmc5883_init )},
|
||||||
{ LNILKEY, LNILVAL}
|
{ LNILKEY, LNILVAL}
|
||||||
};
|
};
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
static const uint32_t i2c_id = 0;
|
static const uint32_t i2c_id = 0;
|
||||||
static const uint8_t i2c_addr = 0x69;
|
static const uint8_t i2c_addr = 0x69;
|
||||||
|
|
||||||
static uint8_t ICACHE_FLASH_ATTR r8u(uint32_t id, uint8_t reg) {
|
static uint8_t r8u(uint32_t id, uint8_t reg) {
|
||||||
uint8_t ret;
|
uint8_t ret;
|
||||||
|
|
||||||
platform_i2c_send_start(id);
|
platform_i2c_send_start(id);
|
||||||
|
@ -26,7 +26,7 @@ static uint8_t ICACHE_FLASH_ATTR r8u(uint32_t id, uint8_t reg) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ICACHE_FLASH_ATTR w8u(uint32_t id, uint8_t reg, uint8_t val) {
|
static void w8u(uint32_t id, uint8_t reg, uint8_t val) {
|
||||||
platform_i2c_send_start(i2c_id);
|
platform_i2c_send_start(i2c_id);
|
||||||
platform_i2c_send_address(i2c_id, i2c_addr, PLATFORM_I2C_DIRECTION_TRANSMITTER);
|
platform_i2c_send_address(i2c_id, i2c_addr, PLATFORM_I2C_DIRECTION_TRANSMITTER);
|
||||||
platform_i2c_send_byte(i2c_id, reg);
|
platform_i2c_send_byte(i2c_id, reg);
|
||||||
|
@ -34,19 +34,9 @@ static void ICACHE_FLASH_ATTR w8u(uint32_t id, uint8_t reg, uint8_t val) {
|
||||||
platform_i2c_send_stop(i2c_id);
|
platform_i2c_send_stop(i2c_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ICACHE_FLASH_ATTR l3g4200d_init(lua_State* L) {
|
static int l3g4200d_setup(lua_State* L) {
|
||||||
|
|
||||||
uint32_t sda;
|
|
||||||
uint32_t scl;
|
|
||||||
uint8_t devid;
|
uint8_t devid;
|
||||||
|
|
||||||
sda = luaL_checkinteger(L, 1);
|
|
||||||
scl = luaL_checkinteger(L, 2);
|
|
||||||
|
|
||||||
luaL_argcheck(L, sda > 0 && scl > 0, 1, "no i2c for D0");
|
|
||||||
|
|
||||||
platform_i2c_setup(i2c_id, sda, scl, PLATFORM_I2C_SPEED_SLOW);
|
|
||||||
|
|
||||||
devid = r8u(i2c_id, 0xF);
|
devid = r8u(i2c_id, 0xF);
|
||||||
|
|
||||||
if (devid != 0xD3) {
|
if (devid != 0xD3) {
|
||||||
|
@ -58,7 +48,24 @@ static int ICACHE_FLASH_ATTR l3g4200d_init(lua_State* L) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ICACHE_FLASH_ATTR l3g4200d_read(lua_State* L) {
|
static int l3g4200d_init(lua_State* L) {
|
||||||
|
|
||||||
|
uint32_t sda;
|
||||||
|
uint32_t scl;
|
||||||
|
|
||||||
|
platform_print_deprecation_note("l3g4200d.init() is replaced by l3g4200d.setup()", "in the next version");
|
||||||
|
|
||||||
|
sda = luaL_checkinteger(L, 1);
|
||||||
|
scl = luaL_checkinteger(L, 2);
|
||||||
|
|
||||||
|
luaL_argcheck(L, sda > 0 && scl > 0, 1, "no i2c for D0");
|
||||||
|
|
||||||
|
platform_i2c_setup(i2c_id, sda, scl, PLATFORM_I2C_SPEED_SLOW);
|
||||||
|
|
||||||
|
return l3g4200d_setup(L);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int l3g4200d_read(lua_State* L) {
|
||||||
|
|
||||||
uint8_t data[6];
|
uint8_t data[6];
|
||||||
int x,y,z;
|
int x,y,z;
|
||||||
|
@ -91,6 +98,8 @@ static int ICACHE_FLASH_ATTR l3g4200d_read(lua_State* L) {
|
||||||
|
|
||||||
static const LUA_REG_TYPE l3g4200d_map[] = {
|
static const LUA_REG_TYPE l3g4200d_map[] = {
|
||||||
{ LSTRKEY( "read" ), LFUNCVAL( l3g4200d_read )},
|
{ LSTRKEY( "read" ), LFUNCVAL( l3g4200d_read )},
|
||||||
|
{ LSTRKEY( "setup" ), LFUNCVAL( l3g4200d_setup )},
|
||||||
|
// init() is deprecated
|
||||||
{ LSTRKEY( "init" ), LFUNCVAL( l3g4200d_init )},
|
{ LSTRKEY( "init" ), LFUNCVAL( l3g4200d_init )},
|
||||||
{ LNILKEY, LNILVAL}
|
{ LNILKEY, LNILVAL}
|
||||||
};
|
};
|
||||||
|
|
|
@ -17,7 +17,9 @@ X,Y,Z data (integers)
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
```lua
|
```lua
|
||||||
adxl345.init(1, 2)
|
local sda, scl = 1, 2
|
||||||
|
i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
|
||||||
|
adxl345.setup()
|
||||||
local x,y,z = adxl345.read()
|
local x,y,z = adxl345.read()
|
||||||
print(string.format("X = %d, Y = %d, Z = %d", x, y, z))
|
print(string.format("X = %d, Y = %d, Z = %d", x, y, z))
|
||||||
```
|
```
|
||||||
|
@ -25,6 +27,10 @@ print(string.format("X = %d, Y = %d, Z = %d", x, y, z))
|
||||||
## adxl345.init()
|
## adxl345.init()
|
||||||
Initializes the module and sets the pin configuration.
|
Initializes the module and sets the pin configuration.
|
||||||
|
|
||||||
|
!!! attention
|
||||||
|
|
||||||
|
This function is deprecated and will be removed in upcoming releases. Use `adxl345.setup()` instead.
|
||||||
|
|
||||||
#### Syntax
|
#### Syntax
|
||||||
`adxl345.init(sda, scl)`
|
`adxl345.init(sda, scl)`
|
||||||
|
|
||||||
|
@ -34,3 +40,15 @@ Initializes the module and sets the pin configuration.
|
||||||
|
|
||||||
#### Returns
|
#### Returns
|
||||||
`nil`
|
`nil`
|
||||||
|
|
||||||
|
## adxl345.setup()
|
||||||
|
Initializes the module.
|
||||||
|
|
||||||
|
#### Syntax
|
||||||
|
`adxl345.setup()`
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
None
|
||||||
|
|
||||||
|
#### Returns
|
||||||
|
`nil`
|
||||||
|
|
|
@ -9,6 +9,10 @@ This module provides access to the [AM2320](https://akizukidenshi.com/download/d
|
||||||
## am2320.init()
|
## am2320.init()
|
||||||
Initializes the module and sets the pin configuration. Returns model, version, serial but is seams these where all zero on my model.
|
Initializes the module and sets the pin configuration. Returns model, version, serial but is seams these where all zero on my model.
|
||||||
|
|
||||||
|
!!! attention
|
||||||
|
|
||||||
|
This function is deprecated and will be removed in upcoming releases. Use `am2320.setup()` instead.
|
||||||
|
|
||||||
#### Syntax
|
#### Syntax
|
||||||
`model, version, serial = am2320.init(sda, scl)`
|
`model, version, serial = am2320.init(sda, scl)`
|
||||||
|
|
||||||
|
@ -35,9 +39,26 @@ Samples the sensor and returns the relative humidity in % and temperature in cel
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
```lua
|
```lua
|
||||||
am2320.init(1, 2)
|
sda, scl = 1, 2
|
||||||
|
i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
|
||||||
|
am2320.setup()
|
||||||
rh, t = am2320.read()
|
rh, t = am2320.read()
|
||||||
print(string.format("RH: %s%%", rh / 10))
|
print(string.format("RH: %s%%", rh / 10))
|
||||||
print(string.format("Temperature: %s degrees C", t / 10))
|
print(string.format("Temperature: %s degrees C", t / 10))
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## am2320.setup()
|
||||||
|
Initializes the module. Returns model, version, serial but is seams these where all zero on my model.
|
||||||
|
|
||||||
|
#### Syntax
|
||||||
|
`model, version, serial = am2320.setup()`
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
None
|
||||||
|
|
||||||
|
#### Returns
|
||||||
|
- `model` 16 bits number of model
|
||||||
|
- `version` 8 bits version number
|
||||||
|
- `serial` 32 bits serial number
|
||||||
|
|
||||||
|
Note: I have only observed values of 0 for all of these, maybe other sensors return more sensible readings.
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
This module provides a simple interface to [BME280/BMP280 temperature/air presssure/humidity sensors](http://www.bosch-sensortec.com/bst/products/all_products/bme280) (Bosch Sensortec).
|
This module provides a simple interface to [BME280/BMP280 temperature/air presssure/humidity sensors](http://www.bosch-sensortec.com/bst/products/all_products/bme280) (Bosch Sensortec).
|
||||||
|
|
||||||
Note that you must call [`init()`](#bme280init) before you can start reading values!
|
Note that you must call [`setup()`](#bme280setup) before you can start reading values!
|
||||||
|
|
||||||
## bme280.altitude()
|
## bme280.altitude()
|
||||||
|
|
||||||
|
@ -69,13 +69,72 @@ none
|
||||||
|
|
||||||
Initializes module. Initialization is mandatory before read values.
|
Initializes module. Initialization is mandatory before read values.
|
||||||
|
|
||||||
|
!!! attention
|
||||||
|
|
||||||
|
This function is deprecated and will be removed in upcoming releases. Use `bme280.setup()` instead.
|
||||||
|
|
||||||
#### Syntax
|
#### Syntax
|
||||||
|
|
||||||
`bme280.init(sda, scl, [temp_oss, press_oss, humi_oss, power_mode, inactive_duration, IIR_filter])`
|
`bme280.init(sda, scl, [temp_oss, press_oss, humi_oss, power_mode, inactive_duration, IIR_filter])`
|
||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
- `sda` - SDA pin
|
See [`setup()`](#bme280setup).
|
||||||
- `scl` - SCL pin
|
|
||||||
|
## bme280.qfe2qnh()
|
||||||
|
|
||||||
|
For given altitude converts the air pressure to sea level air pressure.
|
||||||
|
|
||||||
|
#### Syntax
|
||||||
|
`bme280.qfe2qnh(P, altitude)`
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
- `P` measured pressure
|
||||||
|
- `altitude` altitude in meters of measurement point
|
||||||
|
|
||||||
|
#### Returns
|
||||||
|
sea level pressure
|
||||||
|
|
||||||
|
|
||||||
|
## bme280.read()
|
||||||
|
|
||||||
|
Reads the sensor and returns the temperature, the air pressure, the air relative humidity and
|
||||||
|
|
||||||
|
#### Syntax
|
||||||
|
`bme280.read([altitude])`
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
- (optional) `altitude`- altitude in meters of measurement point. If provided also the air pressure converted to sea level air pressure is returned.
|
||||||
|
|
||||||
|
#### Returns
|
||||||
|
- `T` temperature in celsius as an integer multiplied with 100
|
||||||
|
- `P` air pressure in hectopascals multiplied by 1000
|
||||||
|
- `H` relative humidity in percent multiplied by 1000
|
||||||
|
- `QNH` air pressure in hectopascals multiplied by 1000 converted to sea level
|
||||||
|
|
||||||
|
Any of these variables is `nil` if the readout of given measure was not successful.
|
||||||
|
|
||||||
|
## bme280.startreadout()
|
||||||
|
Starts readout (turns the sensor into forced mode). After the readout the sensor turns to sleep mode.
|
||||||
|
|
||||||
|
#### Syntax
|
||||||
|
`bme280.startreadout(delay, callback)`
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
- `delay` sets sensor to forced mode and calls the `callback` (if provided) after given number of milliseconds. For 0 the default delay is set to 113ms (sufficient time to perform reading for oversampling settings 16x). For different oversampling setting please refer to [BME280 Final Datasheet - Appendix B: Measurement time and current calculation](http://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280_DS001-11.pdf#page=51).
|
||||||
|
- `callback` if provided it will be invoked after given `delay`. The sensor reading should be finalized by then so.
|
||||||
|
|
||||||
|
#### Returns
|
||||||
|
`nil`
|
||||||
|
|
||||||
|
## bme280.setup()
|
||||||
|
|
||||||
|
Initializes module. Initialization is mandatory before read values.
|
||||||
|
|
||||||
|
#### Syntax
|
||||||
|
|
||||||
|
`bme280.setup([temp_oss, press_oss, humi_oss, power_mode, inactive_duration, IIR_filter])`
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
- (optional) `temp_oss` - Controls oversampling of temperature data. Default oversampling is 16x.
|
- (optional) `temp_oss` - Controls oversampling of temperature data. Default oversampling is 16x.
|
||||||
- (optional) `press_oss` - Controls oversampling of pressure data. Default oversampling is 16x.
|
- (optional) `press_oss` - Controls oversampling of pressure data. Default oversampling is 16x.
|
||||||
- (optional) `humi_oss` - Controls oversampling of humidity data. Default oversampling is 16x
|
- (optional) `humi_oss` - Controls oversampling of humidity data. Default oversampling is 16x
|
||||||
|
@ -127,7 +186,9 @@ Using forced mode is recommended for applications which require low sampling rat
|
||||||
```lua
|
```lua
|
||||||
alt=320 -- altitude of the measurement place
|
alt=320 -- altitude of the measurement place
|
||||||
|
|
||||||
bme280.init(3, 4)
|
sda, scl = 3, 4
|
||||||
|
i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
|
||||||
|
bme280.setup()
|
||||||
|
|
||||||
P, T = bme280.baro()
|
P, T = bme280.baro()
|
||||||
print(string.format("QFE=%d.%03d", P/1000, P%1000))
|
print(string.format("QFE=%d.%03d", P/1000, P%1000))
|
||||||
|
@ -157,7 +218,9 @@ Or simpler and more efficient
|
||||||
```lua
|
```lua
|
||||||
alt=320 -- altitude of the measurement place
|
alt=320 -- altitude of the measurement place
|
||||||
|
|
||||||
bme280.init(3, 4)
|
sda, scl = 3, 4
|
||||||
|
i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
|
||||||
|
bme280.setup()
|
||||||
|
|
||||||
T, P, H, QNH = bme280.read(alt)
|
T, P, H, QNH = bme280.read(alt)
|
||||||
local Tsgn = (T < 0 and -1 or 1); T = Tsgn*T
|
local Tsgn = (T < 0 and -1 or 1); T = Tsgn*T
|
||||||
|
@ -176,11 +239,13 @@ local curAltsgn = (curAlt < 0 and -1 or 1); curAlt = curAltsgn*curAlt
|
||||||
print(string.format("altitude=%s%d.%02d", curAltsgn<0 and "-" or "", curAlt/100, curAlt%100))
|
print(string.format("altitude=%s%d.%02d", curAltsgn<0 and "-" or "", curAlt/100, curAlt%100))
|
||||||
```
|
```
|
||||||
|
|
||||||
Use `bme280.init(sda, scl, 1, 3, 0, 3, 0, 4)` for "game mode" - Oversampling settings pressure ×4, temperature ×1, humidity ×0, sensor mode: normal mode, inactive duration = 0.5 ms, IIR filter settings filter coefficient 16.
|
Use `bme280.setup(1, 3, 0, 3, 0, 4)` for "game mode" - Oversampling settings pressure ×4, temperature ×1, humidity ×0, sensor mode: normal mode, inactive duration = 0.5 ms, IIR filter settings filter coefficient 16.
|
||||||
|
|
||||||
Example of readout in forced mode (asynchronous)
|
Example of readout in forced mode (asynchronous)
|
||||||
```lua
|
```lua
|
||||||
bme280.init(3, 4, nil, nil, nil, 0) -- initialize to sleep mode
|
sda, scl = 3, 4
|
||||||
|
i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
|
||||||
|
bme280.setup(nil, nil, nil, 0) -- initialize to sleep mode
|
||||||
bme280.startreadout(0, function ()
|
bme280.startreadout(0, function ()
|
||||||
T, P = bme280.read()
|
T, P = bme280.read()
|
||||||
local Tsgn = (T < 0 and -1 or 1); T = Tsgn*T
|
local Tsgn = (T < 0 and -1 or 1); T = Tsgn*T
|
||||||
|
@ -188,52 +253,6 @@ bme280.startreadout(0, function ()
|
||||||
end)
|
end)
|
||||||
```
|
```
|
||||||
|
|
||||||
## bme280.qfe2qnh()
|
|
||||||
|
|
||||||
For given altitude converts the air pressure to sea level air pressure.
|
|
||||||
|
|
||||||
#### Syntax
|
|
||||||
`bme280.qfe2qnh(P, altitude)`
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
- `P` measured pressure
|
|
||||||
- `altitude` altitude in meters of measurement point
|
|
||||||
|
|
||||||
#### Returns
|
|
||||||
sea level pressure
|
|
||||||
|
|
||||||
|
|
||||||
## bme280.read()
|
|
||||||
|
|
||||||
Reads the sensor and returns the temperature, the air pressure, the air relative humidity and
|
|
||||||
|
|
||||||
#### Syntax
|
|
||||||
`bme280.read([altitude])`
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
- (optional) `altitude`- altitude in meters of measurement point. If provided also the air pressure converted to sea level air pressure is returned.
|
|
||||||
|
|
||||||
#### Returns
|
|
||||||
- `T` temperature in celsius as an integer multiplied with 100
|
|
||||||
- `P` air pressure in hectopascals multiplied by 1000
|
|
||||||
- `H` relative humidity in percent multiplied by 1000
|
|
||||||
- `QNH` air pressure in hectopascals multiplied by 1000 converted to sea level
|
|
||||||
|
|
||||||
Any of these variables is `nil` if the readout of given measure was not successful.
|
|
||||||
|
|
||||||
## bme280.startreadout()
|
|
||||||
Starts readout (turns the sensor into forced mode). After the readout the sensor turns to sleep mode.
|
|
||||||
|
|
||||||
#### Syntax
|
|
||||||
`bme280.startreadout(delay, callback)`
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
- `delay` sets sensor to forced mode and calls the `callback` (if provided) after given number of milliseconds. For 0 the default delay is set to 113ms (sufficient time to perform reading for oversampling settings 16x). For different oversampling setting please refer to [BME280 Final Datasheet - Appendix B: Measurement time and current calculation](http://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280_DS001-11.pdf#page=51).
|
|
||||||
- `callback` if provided it will be invoked after given `delay`. The sensor reading should be finalized by then so.
|
|
||||||
|
|
||||||
#### Returns
|
|
||||||
`nil`
|
|
||||||
|
|
||||||
## bme280.temp()
|
## bme280.temp()
|
||||||
|
|
||||||
Reads the sensor and returns the temperature in celsius as an integer multiplied with 100.
|
Reads the sensor and returns the temperature in celsius as an integer multiplied with 100.
|
||||||
|
|
|
@ -9,6 +9,10 @@ This module provides access to the [BMP085](https://www.sparkfun.com/tutorials/2
|
||||||
## bmp085.init()
|
## bmp085.init()
|
||||||
Initializes the module and sets the pin configuration.
|
Initializes the module and sets the pin configuration.
|
||||||
|
|
||||||
|
!!! attention
|
||||||
|
|
||||||
|
This function is deprecated and will be removed in upcoming releases. Use `bmp085.setup()` instead.
|
||||||
|
|
||||||
#### Syntax
|
#### Syntax
|
||||||
`bmp085.init(sda, scl)`
|
`bmp085.init(sda, scl)`
|
||||||
|
|
||||||
|
@ -19,6 +23,18 @@ Initializes the module and sets the pin configuration.
|
||||||
#### Returns
|
#### Returns
|
||||||
`nil`
|
`nil`
|
||||||
|
|
||||||
|
## bmp085.setup()
|
||||||
|
Initializes the module.
|
||||||
|
|
||||||
|
#### Syntax
|
||||||
|
`bmp085.setup()`
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
None
|
||||||
|
|
||||||
|
#### Returns
|
||||||
|
`nil`
|
||||||
|
|
||||||
## bmp085.temperature()
|
## bmp085.temperature()
|
||||||
Samples the sensor and returns the temperature in celsius as an integer multiplied with 10.
|
Samples the sensor and returns the temperature in celsius as an integer multiplied with 10.
|
||||||
|
|
||||||
|
@ -30,7 +46,9 @@ temperature multiplied with 10 (integer)
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
```lua
|
```lua
|
||||||
bmp085.init(1, 2)
|
local sda, scl = 1, 2
|
||||||
|
i2c.setup(0, sda, scl, i2c.SLOW)
|
||||||
|
bmp085.setup()
|
||||||
local t = bmp085.temperature()
|
local t = bmp085.temperature()
|
||||||
print(string.format("Temperature: %s.%s degrees C", t / 10, t % 10))
|
print(string.format("Temperature: %s.%s degrees C", t / 10, t % 10))
|
||||||
```
|
```
|
||||||
|
@ -53,7 +71,9 @@ pressure in pascals (integer)
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
```lua
|
```lua
|
||||||
bmp085.init(1, 2)
|
local sda, scl = 1, 2
|
||||||
|
i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
|
||||||
|
bmp085.setup()
|
||||||
local p = bmp085.pressure()
|
local p = bmp085.pressure()
|
||||||
print(string.format("Pressure: %s.%s mbar", p / 100, p % 100))
|
print(string.format("Pressure: %s.%s mbar", p / 100, p % 100))
|
||||||
```
|
```
|
||||||
|
|
|
@ -18,7 +18,9 @@ temperature multiplied with 10 (integer)
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
```lua
|
```lua
|
||||||
hmc58831.init(1, 2)
|
local sda, scl = 1, 2
|
||||||
|
i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
|
||||||
|
hmc58831.setup()
|
||||||
local x,y,z = hmc5883l.read()
|
local x,y,z = hmc5883l.read()
|
||||||
print(string.format("x = %d, y = %d, z = %d", x, y, z))
|
print(string.format("x = %d, y = %d, z = %d", x, y, z))
|
||||||
```
|
```
|
||||||
|
@ -26,6 +28,10 @@ print(string.format("x = %d, y = %d, z = %d", x, y, z))
|
||||||
## hmc5883l.init()
|
## hmc5883l.init()
|
||||||
Initializes the module and sets the pin configuration.
|
Initializes the module and sets the pin configuration.
|
||||||
|
|
||||||
|
!!! attention
|
||||||
|
|
||||||
|
This function is deprecated and will be removed in upcoming releases. Use `hmc5883l.setup()` instead.
|
||||||
|
|
||||||
#### Syntax
|
#### Syntax
|
||||||
`hmc5883l.init(sda, scl)`
|
`hmc5883l.init(sda, scl)`
|
||||||
|
|
||||||
|
@ -35,3 +41,15 @@ Initializes the module and sets the pin configuration.
|
||||||
|
|
||||||
#### Returns
|
#### Returns
|
||||||
`nil`
|
`nil`
|
||||||
|
|
||||||
|
## hmc5883l.setup()
|
||||||
|
Initializes the module.
|
||||||
|
|
||||||
|
#### Syntax
|
||||||
|
`hmc5883l.setup()`
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
None
|
||||||
|
|
||||||
|
#### Returns
|
||||||
|
`nil`
|
||||||
|
|
|
@ -17,7 +17,9 @@ X,Y,Z gyroscope output
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
```lua
|
```lua
|
||||||
l3g4200d.init(1, 2)
|
local sda, scl = 1, 2
|
||||||
|
i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
|
||||||
|
l3g4200d.setup()
|
||||||
local x,y,z = l3g4200d.read()
|
local x,y,z = l3g4200d.read()
|
||||||
print(string.format("X = %d, Y = %d, Z = %d", x, y, z)
|
print(string.format("X = %d, Y = %d, Z = %d", x, y, z)
|
||||||
```
|
```
|
||||||
|
@ -25,6 +27,10 @@ print(string.format("X = %d, Y = %d, Z = %d", x, y, z)
|
||||||
## l3g4200d.init()
|
## l3g4200d.init()
|
||||||
Initializes the module and sets the pin configuration.
|
Initializes the module and sets the pin configuration.
|
||||||
|
|
||||||
|
!!! attention
|
||||||
|
|
||||||
|
This function is deprecated and will be removed in upcoming releases. Use `l3g4200d.setup()` instead.
|
||||||
|
|
||||||
#### Syntax
|
#### Syntax
|
||||||
`l3g4200d.init(sda, scl)`
|
`l3g4200d.init(sda, scl)`
|
||||||
|
|
||||||
|
@ -34,3 +40,15 @@ Initializes the module and sets the pin configuration.
|
||||||
|
|
||||||
#### Returns
|
#### Returns
|
||||||
`nil`
|
`nil`
|
||||||
|
|
||||||
|
## l3g4200d.setup()
|
||||||
|
Initializes the module.
|
||||||
|
|
||||||
|
#### Syntax
|
||||||
|
`l3g4200d.setup()`
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
None
|
||||||
|
|
||||||
|
#### Returns
|
||||||
|
`nil`
|
||||||
|
|
Loading…
Reference in New Issue