Temperaturmessung mit LM35 auf Multifunktionshield

Dependencies:   ShiftReg mbed

Committer:
muellerhubert
Date:
Sun Apr 08 07:01:19 2018 +0000
Revision:
0:efab2162f523
Temperatur with LM35 and Multifunctionschield

Who changed what in which revision?

UserRevisionLine numberNew contents of line
muellerhubert 0:efab2162f523 1 //LM35 auf Multifunktiionsshield A4 als Analogpin
muellerhubert 0:efab2162f523 2 // Achtung LM35 mit runder Seite nach unten einstecken, abgeflachte Seite Richtung Anzeige.
muellerhubert 0:efab2162f523 3 #include "mbed.h"
muellerhubert 0:efab2162f523 4 #include "ShiftReg.h"
muellerhubert 0:efab2162f523 5
muellerhubert 0:efab2162f523 6 AnalogIn LM35(A4);
muellerhubert 0:efab2162f523 7 int tempC;
muellerhubert 0:efab2162f523 8 unsigned short sensorValue;
muellerhubert 0:efab2162f523 9 //#define ANZEIGE_MASKE 0x00000FFF
muellerhubert 0:efab2162f523 10 //PortOut siebenSegPort(PortC, ANZEIGE_MASKE);
muellerhubert 0:efab2162f523 11 const unsigned int siebenSegWerte[] = {0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09};
muellerhubert 0:efab2162f523 12 const unsigned int enableWerte[] = {0x10,0x20,0x040,0x80};
muellerhubert 0:efab2162f523 13 unsigned int ausgabeWerte[] = {0x03,0x03,0x03,0x03}; // 0 0 0 0
muellerhubert 0:efab2162f523 14 unsigned int pos=0;
muellerhubert 0:efab2162f523 15
muellerhubert 0:efab2162f523 16 ShiftReg HC595(D8, D4, D7);
muellerhubert 0:efab2162f523 17
muellerhubert 0:efab2162f523 18 // ------------------------- -------------------------
muellerhubert 0:efab2162f523 19 // | D6 | D4 | D2 | D0 | GND | | D6 | D4 | D2 | D0 | GND |
muellerhubert 0:efab2162f523 20 // |-------------------------| |-------------------------|
muellerhubert 0:efab2162f523 21 // | D7 | D5 | D3 | D1 | VCC | | D7 | D5 | D3 | D1 | VCC |
muellerhubert 0:efab2162f523 22 // ------------------------- -------------------------
muellerhubert 0:efab2162f523 23 // ------------------------- -------------------------
muellerhubert 0:efab2162f523 24 // | NC | NC | en2| en0| GND | | g | e | c | a | GND |
muellerhubert 0:efab2162f523 25 // |-------------------------| |-------------------------|
muellerhubert 0:efab2162f523 26 // | NC | NC | en3| en1| VCC | | dot| f | d | b | VCC |
muellerhubert 0:efab2162f523 27 // ------------------------- -------------------------
muellerhubert 0:efab2162f523 28
muellerhubert 0:efab2162f523 29 void ausgabe();
muellerhubert 0:efab2162f523 30 void aufteilung();
muellerhubert 0:efab2162f523 31
muellerhubert 0:efab2162f523 32
muellerhubert 0:efab2162f523 33 int main()
muellerhubert 0:efab2162f523 34 {
muellerhubert 0:efab2162f523 35 HC595.ShiftByte(0x00, ShiftReg::LSBFirst); HC595.Latch(); wait(0.2);//Grundstellung
muellerhubert 0:efab2162f523 36 while(1) {
muellerhubert 0:efab2162f523 37 sensorValue=LM35.read_u16();
muellerhubert 0:efab2162f523 38 printf("measure = %i \n", sensorValue);
muellerhubert 0:efab2162f523 39 ausgabe();
muellerhubert 0:efab2162f523 40 wait_ms(1);
muellerhubert 0:efab2162f523 41 aufteilung();
muellerhubert 0:efab2162f523 42 }
muellerhubert 0:efab2162f523 43 }
muellerhubert 0:efab2162f523 44 void ausgabe()
muellerhubert 0:efab2162f523 45 {
muellerhubert 0:efab2162f523 46 HC595.ShiftByte(ausgabeWerte[pos],ShiftReg::LSBFirst);
muellerhubert 0:efab2162f523 47 HC595.ShiftByte(enableWerte[pos],ShiftReg::LSBFirst);
muellerhubert 0:efab2162f523 48 HC595.Latch();
muellerhubert 0:efab2162f523 49
muellerhubert 0:efab2162f523 50 pos++;
muellerhubert 0:efab2162f523 51 pos=pos%4;
muellerhubert 0:efab2162f523 52 }
muellerhubert 0:efab2162f523 53 void aufteilung()
muellerhubert 0:efab2162f523 54 {
muellerhubert 0:efab2162f523 55 tempC=(sensorValue*2000/65536); //hier sollte eigentlich 3300/65536 stehen, dann ist aber der Anzeigewert zu hoch
muellerhubert 0:efab2162f523 56 //Azeigewert 222 entspricht 22,2 Grad
muellerhubert 0:efab2162f523 57 ausgabeWerte[0]=siebenSegWerte[tempC%10]; // Einer
muellerhubert 0:efab2162f523 58 ausgabeWerte[1]=siebenSegWerte[tempC%100/10]; //Zehner
muellerhubert 0:efab2162f523 59 ausgabeWerte[2]=siebenSegWerte[tempC%1000/100]; // Hunderter
muellerhubert 0:efab2162f523 60 ausgabeWerte[3]=siebenSegWerte[tempC/1000]; // Tausender
muellerhubert 0:efab2162f523 61
muellerhubert 0:efab2162f523 62 }