NuMaker Thermo-Sensor MAX31875
Dependencies: MAX31875_Temperature_Sensor_Low_Power
main.cpp@1:bc3ce35be52a, 19 months ago (annotated)
- Committer:
- cyliang
- Date:
- Mon Mar 06 10:29:36 2023 +0000
- Revision:
- 1:bc3ce35be52a
- Parent:
- 0:c40fe84a8d1f
- Child:
- 2:01a2b08b4621
Change wait function and config for printing float @OS v6.17.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
morgandu | 0:c40fe84a8d1f | 1 | /* |
morgandu | 0:c40fe84a8d1f | 2 | * Copyright (c) 2019 Nuvoton Tecnology Corp. All rights reserved. |
morgandu | 0:c40fe84a8d1f | 3 | * |
morgandu | 0:c40fe84a8d1f | 4 | * This example uses MAX31875 library to read Thermo 6 Click |
morgandu | 0:c40fe84a8d1f | 5 | * (MAX31875 temperature sensor) which placed on mikroBUS of |
morgandu | 0:c40fe84a8d1f | 6 | * Nuvoton NuMaker-IoT-M487 board. |
morgandu | 0:c40fe84a8d1f | 7 | * |
morgandu | 0:c40fe84a8d1f | 8 | */ |
morgandu | 0:c40fe84a8d1f | 9 | |
morgandu | 0:c40fe84a8d1f | 10 | #include "mbed.h" |
morgandu | 0:c40fe84a8d1f | 11 | #include "max31875.h" |
morgandu | 0:c40fe84a8d1f | 12 | #include "max31875_cpp.h" |
morgandu | 0:c40fe84a8d1f | 13 | |
morgandu | 0:c40fe84a8d1f | 14 | /* Declare the I2C of mikroBUS on board */ |
morgandu | 0:c40fe84a8d1f | 15 | I2C mikro_i2c(PG_3, PG_2); |
morgandu | 0:c40fe84a8d1f | 16 | |
morgandu | 0:c40fe84a8d1f | 17 | /* Declare the MAX31875 sensor */ |
morgandu | 0:c40fe84a8d1f | 18 | MAX31875 temp_sensor(mikro_i2c, MAX31875_I2C_SLAVE_ADR_R0); |
morgandu | 0:c40fe84a8d1f | 19 | |
morgandu | 0:c40fe84a8d1f | 20 | int main() |
morgandu | 0:c40fe84a8d1f | 21 | { |
morgandu | 0:c40fe84a8d1f | 22 | float f_temperature; |
morgandu | 0:c40fe84a8d1f | 23 | |
morgandu | 0:c40fe84a8d1f | 24 | printf("\r\nmbed OS version is %d.\r\n", MBED_VERSION); |
morgandu | 0:c40fe84a8d1f | 25 | printf("Start to read temperature ...\r\n"); |
morgandu | 0:c40fe84a8d1f | 26 | |
morgandu | 0:c40fe84a8d1f | 27 | /* Set frequency of I2C bus to 1MHz */ |
morgandu | 0:c40fe84a8d1f | 28 | mikro_i2c.frequency(1000000); |
morgandu | 0:c40fe84a8d1f | 29 | |
morgandu | 0:c40fe84a8d1f | 30 | /* Configure temperature sensor for 8 times per second */ |
morgandu | 0:c40fe84a8d1f | 31 | temp_sensor.write_cfg(MAX31875_CFG_CONV_RATE_8 | MAX31875_CFG_RESOLUTION_12BIT); |
morgandu | 0:c40fe84a8d1f | 32 | |
morgandu | 0:c40fe84a8d1f | 33 | while(true) |
morgandu | 0:c40fe84a8d1f | 34 | { |
morgandu | 0:c40fe84a8d1f | 35 | /* It should wait at least 1/8 seconds for next read */ |
morgandu | 0:c40fe84a8d1f | 36 | //wait(MAX31875_WAIT_CONV_RATE_8); |
morgandu | 0:c40fe84a8d1f | 37 | /* But to slow print out rate, wait 1 second here */ |
cyliang | 1:bc3ce35be52a | 38 | ThisThread::sleep_for(1000ms); // wait(1); |
morgandu | 0:c40fe84a8d1f | 39 | |
morgandu | 0:c40fe84a8d1f | 40 | f_temperature = temp_sensor.read_reg_as_temperature(MAX31875_REG_TEMPERATURE); |
morgandu | 0:c40fe84a8d1f | 41 | printf("Temperature is %3.4f Celsius, %3.4f Fahrenheit\r\n", |
morgandu | 0:c40fe84a8d1f | 42 | f_temperature, |
morgandu | 0:c40fe84a8d1f | 43 | temp_sensor.celsius_to_fahrenheit(f_temperature)); |
morgandu | 0:c40fe84a8d1f | 44 | } |
morgandu | 0:c40fe84a8d1f | 45 | |
morgandu | 0:c40fe84a8d1f | 46 | } |
morgandu | 0:c40fe84a8d1f | 47 |