Hallo, ich möchte einen BME280 auslesen. https://www.bosch-sensortec.com/de/homepage/products_3/environmental_sensors_1/bme280/bme280_1 Hier gibt es vom Herstelle Code dazu: https://github.com/BoschSensortec/BME280_driver Wenn ich nun aus der bme280.c Datei die Funktion der Luftfeuchte verwenden will habe würde ich in meinem Programm die bme280.h und bme280.c includieren. Zum testen will ich es zuerst am Raspberry PI versuchen. Einen andern SPI Temperatursensor habe ich schon einmal ausgelesen, das war aber ohne api. Wie landet nun aber der Wert in einer Variable? die Funktion sieht so aus:
1 | /*! |
2 | * @brief This API is used to read uncompensated humidity. |
3 | * in the registers 0xF7, 0xF8 and 0xF9 |
4 | * @note 0xFD -> MSB -> bit from 0 to 7 |
5 | * @note 0xFE -> LSB -> bit from 0 to 7 |
6 | * |
7 | * |
8 | * |
9 | * @param v_uncomp_humidity_s32 : The value of uncompensated humidity |
10 | * |
11 | * |
12 | * |
13 | * @return results of bus communication function |
14 | * @retval 0 -> Success |
15 | * @retval -1 -> Error |
16 | * |
17 | * |
18 | */ |
19 | BME280_RETURN_FUNCTION_TYPE bme280_read_uncomp_humidity( |
20 | s32 *v_uncomp_humidity_s32) |
21 | { |
22 | /* used to return the communication result*/ |
23 | BME280_RETURN_FUNCTION_TYPE com_rslt = ERROR; |
24 | /* Array holding the MSB and LSb value |
25 | a_data_u8[0] - Humidity MSB |
26 | a_data_u8[1] - Humidity LSB |
27 | */ |
28 | u8 a_data_u8[BME280_HUMIDITY_DATA_SIZE] = { |
29 | BME280_INIT_VALUE, BME280_INIT_VALUE}; |
30 | /* check the p_bme280 structure pointer as NULL*/ |
31 | if (p_bme280 == BME280_NULL) { |
32 | return E_BME280_NULL_PTR; |
33 | } else { |
34 | com_rslt = p_bme280->BME280_BUS_READ_FUNC( |
35 | p_bme280->dev_addr, |
36 | BME280_HUMIDITY_MSB_REG, a_data_u8, |
37 | BME280_HUMIDITY_DATA_LENGTH); |
38 | *v_uncomp_humidity_s32 = (s32)( |
39 | (((u32)(a_data_u8[BME280_HUMIDITY_MSB_DATA])) |
40 | << BME280_SHIFT_BIT_POSITION_BY_08_BITS)| |
41 | ((u32)(a_data_u8[BME280_HUMIDITY_LSB_DATA]))); |
42 | } |
43 | return com_rslt; |
44 | } |