| /* |
| * Copyright (c) 2016 Intel Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr.h> |
| #include <init.h> |
| #include <stdio.h> |
| #include <drivers/sensor.h> |
| |
| #ifdef CONFIG_GROVE_LCD_RGB |
| #include <display/grove_lcd.h> |
| #include <stdio.h> |
| #include <string.h> |
| #endif |
| |
| #define SLEEP_TIME K_MSEC(1000) |
| |
| void main(void) |
| { |
| const struct device *dev = |
| device_get_binding(DT_LABEL(DT_INST(0, |
| seeed_grove_temperature))); |
| struct sensor_value temp; |
| int read; |
| |
| if (dev == NULL) { |
| printf("device not found. aborting test.\n"); |
| return; |
| } |
| #ifdef CONFIG_GROVE_LCD_RGB |
| const struct device *glcd; |
| |
| glcd = device_get_binding(GROVE_LCD_NAME); |
| if (glcd == NULL) { |
| printf("Failed to get Grove LCD\n"); |
| return; |
| } |
| |
| /* configure LCD */ |
| glcd_function_set(glcd, GLCD_FS_ROWS_2 | GLCD_FS_DOT_SIZE_LITTLE | |
| GLCD_FS_8BIT_MODE); |
| glcd_display_state_set(glcd, GLCD_DS_DISPLAY_ON); |
| #endif |
| |
| while (1) { |
| |
| read = sensor_sample_fetch(dev); |
| if (read) { |
| printk("sample fetch error\n"); |
| continue; |
| } |
| sensor_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP, &temp); |
| #ifdef CONFIG_GROVE_LCD_RGB |
| char row[16]; |
| |
| /* clear LCD */ |
| (void)memset(row, ' ', sizeof(row)); |
| glcd_cursor_pos_set(glcd, 0, 0); |
| glcd_print(glcd, row, sizeof(row)); |
| glcd_cursor_pos_set(glcd, 0, 1); |
| glcd_print(glcd, row, sizeof(row)); |
| |
| /* display temperature on LCD */ |
| glcd_cursor_pos_set(glcd, 0, 0); |
| #ifdef CONFIG_NEWLIB_LIBC_FLOAT_PRINTF |
| sprintf(row, "T:%.2f%cC", |
| sensor_value_to_double(&temp), |
| 223 /* degree symbol */); |
| #else |
| sprintf(row, "T:%d%cC", temp.val1, |
| 223 /* degree symbol */); |
| #endif |
| glcd_print(glcd, row, strlen(row)); |
| |
| #endif |
| |
| #ifdef CONFIG_NEWLIB_LIBC_FLOAT_PRINTF |
| printf("Temperature: %.2f C\n", sensor_value_to_double(&temp)); |
| #else |
| printk("Temperature: %d\n", temp.val1); |
| #endif |
| k_sleep(SLEEP_TIME); |
| } |
| } |