GSOE Belueftung DS18B20

Dependencies:   LCD_i2c_GSOE DS1820

Committer:
jack1930
Date:
Fri Oct 30 11:36:49 2020 +0000
Revision:
14:7d305c5c0364
Parent:
12:34123e51ac35
Belueftungssteuerung

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hudakz 0:77a366f9ba45 1 /*
hudakz 10:739d1a7a4b1b 2 * Simple example program
hudakz 1:fe12bf2ad337 3 *
hudakz 1:fe12bf2ad337 4 * Note: Don't forget to connect a 4.7k Ohm resistor
hudakz 1:fe12bf2ad337 5 * between the DS1820's data pin and the +3.3V pin
hudakz 1:fe12bf2ad337 6 *
hudakz 0:77a366f9ba45 7 */
hudakz 10:739d1a7a4b1b 8
hudakz 10:739d1a7a4b1b 9 /* Single DS1820 sensor: */
hudakz 9:1d1c57840c7e 10 /*
hudakz 0:77a366f9ba45 11 #include "mbed.h"
hudakz 0:77a366f9ba45 12 #include "DS1820.h"
hudakz 0:77a366f9ba45 13
hudakz 4:d263a2860484 14 Serial pc(USBTX, USBRX);
hudakz 4:d263a2860484 15 DigitalOut led(LED1);
hudakz 10:739d1a7a4b1b 16 DS1820 ds1820(D8); // substitute D8 with the actual pin name connected to the DS1820 sensor
hudakz 4:d263a2860484 17 float temp = 0;
hudakz 7:8beaacebc82d 18 int result = 0;
hudakz 7:8beaacebc82d 19
hudakz 7:8beaacebc82d 20 int main()
hudakz 7:8beaacebc82d 21 {
hudakz 7:8beaacebc82d 22 if (ds1820.begin()) {
hudakz 7:8beaacebc82d 23 while (1) {
hudakz 7:8beaacebc82d 24 ds1820.startConversion(); // start temperature conversion from analog to digital
hudakz 12:34123e51ac35 25 ThisThread::sleep_for(1000);// let DS1820 complete the temperature conversion
hudakz 4:d263a2860484 26 result = ds1820.read(temp); // read temperature from DS1820 and perform cyclic redundancy check (CRC)
hudakz 7:8beaacebc82d 27 switch (result) {
hudakz 7:8beaacebc82d 28 case 0: // no errors -> 'temp' contains the value of measured temperature
hudakz 7:8beaacebc82d 29 pc.printf("temp = %3.1f%cC\r\n", temp, 176);
hudakz 7:8beaacebc82d 30 break;
hudakz 7:8beaacebc82d 31
hudakz 10:739d1a7a4b1b 32 case 1: // no sensor present -> 'temp' was not updated
hudakz 7:8beaacebc82d 33 pc.printf("no sensor present\n\r");
hudakz 7:8beaacebc82d 34 break;
hudakz 7:8beaacebc82d 35
hudakz 10:739d1a7a4b1b 36 case 2: // CRC error -> 'temp' was not updated
hudakz 7:8beaacebc82d 37 pc.printf("CRC error\r\n");
hudakz 7:8beaacebc82d 38 }
hudakz 7:8beaacebc82d 39
hudakz 4:d263a2860484 40 led = !led;
hudakz 0:77a366f9ba45 41 }
hudakz 7:8beaacebc82d 42 }
hudakz 7:8beaacebc82d 43 else
hudakz 4:d263a2860484 44 pc.printf("No DS1820 sensor found!\r\n");
hudakz 0:77a366f9ba45 45 }
hudakz 9:1d1c57840c7e 46 */
hudakz 1:fe12bf2ad337 47
hudakz 9:1d1c57840c7e 48
hudakz 10:739d1a7a4b1b 49 /*Several DS1820 sensors connected to the 1-wire bus:*/
hudakz 9:1d1c57840c7e 50 #include "mbed.h"
hudakz 9:1d1c57840c7e 51 #include "DS1820.h"
jack1930 14:7d305c5c0364 52 #include "LCD.h"
hudakz 9:1d1c57840c7e 53
hudakz 10:739d1a7a4b1b 54 #define MAX_SENSOSRS 32 // max number of DS1820 sensors to be connected to the 1-wire bus (max 256)
hudakz 9:1d1c57840c7e 55
hudakz 10:739d1a7a4b1b 56 DS1820* ds1820[MAX_SENSOSRS];
hudakz 9:1d1c57840c7e 57 Serial pc(USBTX, USBRX);
hudakz 9:1d1c57840c7e 58 DigitalOut led(LED1);
jack1930 14:7d305c5c0364 59 OneWire oneWire(PA_8); // substitute D8 with the actual pin name connected to the 1-wire bus
hudakz 10:739d1a7a4b1b 60 int sensorsFound = 0; // counts the actually found DS1820 sensors
hudakz 9:1d1c57840c7e 61
jack1930 14:7d305c5c0364 62
jack1930 14:7d305c5c0364 63 lcd mylcd;
jack1930 14:7d305c5c0364 64 DigitalIn k0(PB_0);
jack1930 14:7d305c5c0364 65 DigitalOut abluft(PC_0);
jack1930 14:7d305c5c0364 66
jack1930 14:7d305c5c0364 67 DigitalIn k1(PB_1);
jack1930 14:7d305c5c0364 68 DigitalOut rotinnen(PC_1);
jack1930 14:7d305c5c0364 69
jack1930 14:7d305c5c0364 70 DigitalIn k2(PB_2);
jack1930 14:7d305c5c0364 71
jack1930 14:7d305c5c0364 72 PwmOut zuluft(PC_6);
jack1930 14:7d305c5c0364 73 AnalogIn dreher(PA_0);
jack1930 14:7d305c5c0364 74
jack1930 14:7d305c5c0364 75 PwmOut umluft1(PC_7);
jack1930 14:7d305c5c0364 76 PwmOut umluft2(PC_8);
jack1930 14:7d305c5c0364 77 PwmOut umluft3(PC_9);
jack1930 14:7d305c5c0364 78
jack1930 14:7d305c5c0364 79
hudakz 10:739d1a7a4b1b 80 int main()
hudakz 10:739d1a7a4b1b 81 {
jack1930 14:7d305c5c0364 82 k0.mode(PullDown);
jack1930 14:7d305c5c0364 83 k1.mode(PullDown);
jack1930 14:7d305c5c0364 84 k2.mode(PullDown);
hudakz 10:739d1a7a4b1b 85 pc.printf("\r\n--Starting--\r\n");
jack1930 14:7d305c5c0364 86 mylcd.clear();
hudakz 9:1d1c57840c7e 87 //Enumerate (i.e. detect) DS1820 sensors on the 1-wire bus
hudakz 10:739d1a7a4b1b 88 for (sensorsFound = 0; sensorsFound < MAX_SENSOSRS; sensorsFound++) {
hudakz 10:739d1a7a4b1b 89 ds1820[sensorsFound] = new DS1820(&oneWire);
hudakz 10:739d1a7a4b1b 90 if (!ds1820[sensorsFound]->begin()) {
hudakz 10:739d1a7a4b1b 91 delete ds1820[sensorsFound];
hudakz 9:1d1c57840c7e 92 break;
hudakz 9:1d1c57840c7e 93 }
hudakz 9:1d1c57840c7e 94 }
hudakz 10:739d1a7a4b1b 95
hudakz 10:739d1a7a4b1b 96 switch (sensorsFound) {
hudakz 10:739d1a7a4b1b 97 case 0:
hudakz 10:739d1a7a4b1b 98 pc.printf("No DS1820 sensor found!\r\n");
hudakz 10:739d1a7a4b1b 99 return -1;
hudakz 10:739d1a7a4b1b 100
hudakz 10:739d1a7a4b1b 101 case 1:
hudakz 10:739d1a7a4b1b 102 pc.printf("One DS1820 sensor found.\r\n");
hudakz 10:739d1a7a4b1b 103 break;
hudakz 10:739d1a7a4b1b 104
hudakz 10:739d1a7a4b1b 105 default:
hudakz 10:739d1a7a4b1b 106 pc.printf("Found %d DS1820 sensors.\r\n", sensorsFound);
hudakz 9:1d1c57840c7e 107 }
hudakz 10:739d1a7a4b1b 108
hudakz 10:739d1a7a4b1b 109 while (1) {
jack1930 14:7d305c5c0364 110 mylcd.cursorpos(0);
hudakz 10:739d1a7a4b1b 111 pc.printf("----------------\r\n");
hudakz 10:739d1a7a4b1b 112 for (int i = 0; i < sensorsFound; i++)
hudakz 10:739d1a7a4b1b 113 ds1820[i]->startConversion(); // start temperature conversion from analog to digital
hudakz 12:34123e51ac35 114 ThisThread::sleep_for(1000); // let DS1820 sensors complete the temperature conversion
hudakz 10:739d1a7a4b1b 115 for (int i = 0; i < sensorsFound; i++) {
hudakz 10:739d1a7a4b1b 116 if (ds1820[i]->isPresent())
jack1930 14:7d305c5c0364 117 {
jack1930 14:7d305c5c0364 118 mylcd.printf("temp[%d] = %3.1f%cC\r\n", i, ds1820[i]->read(), 176); // read temperature
hudakz 10:739d1a7a4b1b 119 pc.printf("temp[%d] = %3.1f%cC\r\n", i, ds1820[i]->read(), 176); // read temperature
jack1930 14:7d305c5c0364 120 }
hudakz 9:1d1c57840c7e 121 }
jack1930 14:7d305c5c0364 122 abluft=k0;
jack1930 14:7d305c5c0364 123
jack1930 14:7d305c5c0364 124 if (k2==1) zuluft.write(0.7);
jack1930 14:7d305c5c0364 125 else zuluft.write(0);
jack1930 14:7d305c5c0364 126
jack1930 14:7d305c5c0364 127 rotinnen=k1;
jack1930 14:7d305c5c0364 128
jack1930 14:7d305c5c0364 129 mylcd.cursorpos(0x40);
jack1930 14:7d305c5c0364 130 mylcd.printf("%d",(int)(dreher*4095));
jack1930 14:7d305c5c0364 131
jack1930 14:7d305c5c0364 132 float d=dreher;
jack1930 14:7d305c5c0364 133 umluft1=d;
jack1930 14:7d305c5c0364 134 umluft2=d;
jack1930 14:7d305c5c0364 135 umluft3=d;
hudakz 9:1d1c57840c7e 136 }
jack1930 14:7d305c5c0364 137
hudakz 9:1d1c57840c7e 138 }