oneWire test
Dependencies: BSP_DISCO_F746NG DS1820
main.cpp
- Committer:
- JohnnyK
- Date:
- 2020-04-15
- Revision:
- 1:980bb838fa61
- Parent:
- 0:0f48b5222d3d
File content as of revision 1:980bb838fa61:
#include "mbed.h" #include "stm32746g_discovery_lcd.h" #include "DS1820.h" #define MAX_SENSOSRS 1 Thread thread; volatile float temp = 0; void oneWireThread() { DS1820* ds1820[MAX_SENSOSRS]; DigitalOut led(LED1); OneWire oneWire(D8); int sensorsFound = 0; printf("OneWireThread Starting...\n"); for (sensorsFound = 0; sensorsFound < MAX_SENSOSRS; sensorsFound++) { ds1820[sensorsFound] = new DS1820(&oneWire); if (!ds1820[sensorsFound]->begin()) { delete ds1820[sensorsFound]; break; } } if(sensorsFound != 0) { printf("Found %d DS1820 sensors.\n", sensorsFound); while (1) { printf("----------------\r\n"); for (int i = 0; i < sensorsFound; i++) ds1820[i]->startConversion(); // start temperature conversion from analog to digital ThisThread::sleep_for(1000); // let DS1820 sensors complete the temperature conversion for (int i = 0; i < sensorsFound; i++) { if (ds1820[i]->isPresent()) temp = ds1820[i]->read(); printf("temp[%d] = %3.1f%cC\r\n", i, temp, 176); // read temperature } ThisThread::sleep_for(5000); } }else{ printf("No DS1820 sensor found!\r\n"); } } int main() { printf("Starting\n"); thread.start(oneWireThread); char buffer[20]= {0}; HAL_Delay(500); BSP_LCD_Init(); BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS); BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER); BSP_LCD_SetFont(&LCD_DEFAULT_FONT); HAL_Delay(500); while(1){ BSP_LCD_Clear(LCD_COLOR_BLACK); BSP_LCD_SetBackColor(LCD_COLOR_BLACK); BSP_LCD_SetTextColor(LCD_COLOR_WHITE); BSP_LCD_DisplayStringAt(0, 1, (uint8_t *)"MBED", CENTER_MODE); BSP_LCD_SetTextColor(LCD_COLOR_YELLOW); BSP_LCD_DisplayStringAt(0, 100, (uint8_t *)"DISCOVERY STM32F746NG", CENTER_MODE); sprintf (buffer, "temp = %3.1fC", temp); BSP_LCD_DisplayStringAt(20, 175, (uint8_t *)buffer, LEFT_MODE); HAL_Delay(2000);//ThisThread::sleep_for(1000); //not working } }