upm  1.7.1
Sensor/Actuator repository for libmraa (v2.0.0)
Data Structures | Functions | Typedefs
Include dependency graph for bh1750.h:

API Description

/*
* Author: Jon Trulson <jtrulson@ics.com>
* Copyright (c) 2016 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <unistd.h>
#include <signal.h>
#include "bh1750.h"
#include "upm_utilities.h"
bool shouldRun = true;
void sig_handler(int signo)
{
if (signo == SIGINT)
shouldRun = false;
}
int main()
{
signal(SIGINT, sig_handler);
// Instantiate a BH1750 sensor on default I2C bus (0), using the
// default I2C address (0x23), and setting the mode to highest
// resolution, lowest power mode.
bh1750_context sensor = bh1750_init(BH1750_DEFAULT_I2C_BUS,
BH1750_DEFAULT_I2C_ADDR,
BH1750_OPMODE_H2_ONCE);
if (!sensor)
{
printf("bh1750_init() failed.\n");
return 1;
}
// Every second, sample the BH1750 and output the measured lux value
while (shouldRun)
{
float lux;
bh1750_get_lux(sensor, &lux);
printf("Detected Light Level (lux): %f\n", lux);
upm_delay(1);
}
printf("Exiting\n");
bh1750_close(sensor);
return 0;
}

Go to the source code of this file.

Data Structures

struct  _bh1750_context
 

Functions

bh1750_context bh1750_init (int bus, uint8_t addr, BH1750_OPMODES_T mode)
 
void bh1750_close (const bh1750_context dev)
 
upm_result_t bh1750_get_lux (const bh1750_context dev, float *lux)
 
bool bh1750_power_up (const bh1750_context dev)
 
bool bh1750_power_down (const bh1750_context dev)
 
bool bh1750_reset (const bh1750_context dev)
 
upm_result_t bh1750_send_command (const bh1750_context dev, uint8_t cmd)
 
upm_result_t bh1750_read_data (const bh1750_context dev, uint16_t *data)
 
upm_result_t bh1750_set_opmode (const bh1750_context dev, BH1750_OPMODES_T mode)
 

Typedefs

typedef struct _bh1750_contextbh1750_context
 

Function Documentation

bh1750_context bh1750_init ( int  bus,
uint8_t  addr,
BH1750_OPMODES_T  mode 
)

Initialize the BH1750

Parameters
busI2C bus
addrI2C address
modeoperating mode, one of the BH1750_OPMODES_T values
Returns
bh1750_context for the new device context

Here is the call graph for this function:

void bh1750_close ( const bh1750_context  dev)

Sensor destructor function. Frees any allocated resources.

Parameters
devThe device context

Here is the caller graph for this function:

upm_result_t bh1750_get_lux ( const bh1750_context  dev,
float *  lux 
)

Gets the Lux value.

Parameters
devThe device context
luxfloat pointer in which to store the lux value
Returns
upm_result_t UPM success/error code

Here is the call graph for this function:

Here is the caller graph for this function:

bool bh1750_power_up ( const bh1750_context  dev)

Power up the device.

Parameters
devThe device context
Returns
true if the command was successful, false otherwise

Here is the call graph for this function:

Here is the caller graph for this function:

bool bh1750_power_down ( const bh1750_context  dev)

Power down the device.

Parameters
devThe device context
Returns
true if the command was successful, false otherwise

Here is the call graph for this function:

Here is the caller graph for this function:

bool bh1750_reset ( const bh1750_context  dev)

Reset the device. This doesn't really have much purpose. The device must be powered up for this command to work. In addition, this command will simply clear the measurement register to 0.

Parameters
devThe device context
Returns
true if the command was successful, false otherwise

Here is the call graph for this function:

Here is the caller graph for this function:

upm_result_t bh1750_send_command ( const bh1750_context  dev,
uint8_t  cmd 
)

Write a command to the device via I2C.

Parameters
devThe device context
cmdThe command to write, one of the BH1750_CMD* values
Returns
upm_result_t UPM success/error code

Here is the caller graph for this function:

upm_result_t bh1750_read_data ( const bh1750_context  dev,
uint16_t *  data 
)

Read the 2 result bytes from the device via I2C.

Parameters
devThe device context
dataData read in from the device as a uint16_t
Returns
upm_result_t UPM success/error code

Here is the call graph for this function:

Here is the caller graph for this function:

upm_result_t bh1750_set_opmode ( const bh1750_context  dev,
BH1750_OPMODES_T  mode 
)

Setup the device context parameters and the device to match the selected operating mode.

Parameters
devThe device context
modeoperating mode, one of the BH1750_OPMODES_T values
Returns
upm_result_t UPM success/error code

Here is the call graph for this function:

Here is the caller graph for this function:

Typedef Documentation

typedef struct _bh1750_context * bh1750_context

device context