anywill 发表于 2016-10-21 11:03:24

ARM®mbed OS入门开发 DS18B20测温实验

/**

    NUCLEO-F070R + DS18B20

Date:   Oct.2016
Version:1.0
Name:   NUCLEO-F070R-DS1820
NOTE:   For more info see here: http://www.emcu.it/NUCLEOevaBoards/mBed/QSG-Mbed-Library.pdf
          原程序带NTC测温,本人将已其删除

UART   
    Baud Rate:    9600
    Data Bit:   8
    Parity:       NONE
    Stop Bit:   1
    Flow Control: NONE


Connect to the NUCLEO-F070R8 the DS18B20 sensor (see the schematic below).
The temperature sampling time is 1 sec.

DS18B20 front view
    __________
   |          |
   |    DS    |
   |   18B20|   
   |          |
   |__________|
   |   |   |
   1   2   3
    GNDDQ VCC (3V3)
   |   |   |______________ to VCC (3.3V on the NUCLEO-F070R)
   |   |_|_
   |   || |
   |   || | 4K7
   |   || |
   |   |-|-
   |   |___|______________ to A1 (on the NUCLEO-F070RE)
   |
   |
   |______________________ to GND (on the NUCLEO-F070RE)   

This SW is just for only one DS18B20
This SW is a derivative of:: http://developer.mbed.org/users/Sissors/code/DS1820_HelloWorld/
On the: http://developer.mbed.org/users/Sissors/code/DS1820_HelloWorld/ there is a multi sensor (DS18B20) example.


*/

#define MULTIPLE_PROBES
#define DATA_PIN      A1

#ifdef MULTIPLE_PROBES

#include "mbed.h"
#include "DS1820.h"

#define MAX_PROBES      16

float get_temperature(void);


float temp=0;
float tempArr;
int n=0;//n个测温设备
Serial pc(SERIAL_TX, SERIAL_RX); // 虚拟 USART2 tx, rx
DS1820* probe;

int main()
{
    // Initialize the probe array to DS1820 objects
    int num_devices = 0;
    while(DS1820::unassignedProbe(DATA_PIN)) //检测测温设备
    {
      probe = new DS1820(DATA_PIN);
      num_devices++;
      if (num_devices == MAX_PROBES)
            break;
    }

    printf("Found %d device(s)\r\n\n", num_devices);//检测到n个测温设备

    while(1)
    {
      probe->convertTemperature(true, DS1820::all_devices);         //Start temperature conversion, wait until ready
      for (int i = 0; i<num_devices; i++)
            printf("Device %d returns %3.3f oC\r\n", i, probe->temperature());

      wait(1);
    }

}

#else
#include "mbed.h"
#include "DS1820.h"

DS1820 probe(DATA_PIN);

int main() {
    while(1) {
      probe.convertTemperature(true, DS1820::all_devices);         //Start temperature conversion, wait until ready
      printf("It is %3.3f oC\r\n", probe.temperature());
      wait(1);
    }
}

#endif





anywill 发表于 2016-10-21 11:10:31

先占楼:):):)

ynwscfsfi 发表于 2016-10-21 12:03:40

楼主大神,您好6666

xyx365 发表于 2016-10-21 18:24:55

谢谢分享

pythonworld 发表于 2016-10-21 20:17:48

为什么显示的是负温度?

anywill 发表于 2016-10-21 20:27:22

回头继续调试:P

哈佛祖安智 发表于 2016-10-22 12:50:35

:)

asssdz-382474 发表于 2016-10-22 17:42:21

:):):):):):):):):):):):)

andypanfan 发表于 2016-10-22 23:51:53

希望有一块这样的开发板!!!!

zengyi703-16313 发表于 2016-11-18 07:15:56

谢楼主分享
页: [1] 2
查看完整版本: ARM®mbed OS入门开发 DS18B20测温实验