Gewerblich-Technische Schule Offenburg
/
LM35functionshield
Temperaturmessung mit LM35 auf Multifunktionshield
Revision 0:efab2162f523, committed 2018-04-08
- Comitter:
- muellerhubert
- Date:
- Sun Apr 08 07:01:19 2018 +0000
- Commit message:
- Temperatur with LM35 and Multifunctionschield
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ShiftReg.lib Sun Apr 08 07:01:19 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/yoonghm/code/ShiftReg/#a0e3fd47970f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Apr 08 07:01:19 2018 +0000 @@ -0,0 +1,62 @@ +//LM35 auf Multifunktiionsshield A4 als Analogpin +// Achtung LM35 mit runder Seite nach unten einstecken, abgeflachte Seite Richtung Anzeige. +#include "mbed.h" +#include "ShiftReg.h" + +AnalogIn LM35(A4); +int tempC; +unsigned short sensorValue; +//#define ANZEIGE_MASKE 0x00000FFF +//PortOut siebenSegPort(PortC, ANZEIGE_MASKE); +const unsigned int siebenSegWerte[] = {0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09}; +const unsigned int enableWerte[] = {0x10,0x20,0x040,0x80}; +unsigned int ausgabeWerte[] = {0x03,0x03,0x03,0x03}; // 0 0 0 0 +unsigned int pos=0; + +ShiftReg HC595(D8, D4, D7); + +// ------------------------- ------------------------- +// | D6 | D4 | D2 | D0 | GND | | D6 | D4 | D2 | D0 | GND | +// |-------------------------| |-------------------------| +// | D7 | D5 | D3 | D1 | VCC | | D7 | D5 | D3 | D1 | VCC | +// ------------------------- ------------------------- +// ------------------------- ------------------------- +// | NC | NC | en2| en0| GND | | g | e | c | a | GND | +// |-------------------------| |-------------------------| +// | NC | NC | en3| en1| VCC | | dot| f | d | b | VCC | +// ------------------------- ------------------------- + +void ausgabe(); +void aufteilung(); + + +int main() +{ + HC595.ShiftByte(0x00, ShiftReg::LSBFirst); HC595.Latch(); wait(0.2);//Grundstellung + while(1) { + sensorValue=LM35.read_u16(); + printf("measure = %i \n", sensorValue); + ausgabe(); + wait_ms(1); + aufteilung(); + } +} +void ausgabe() +{ + HC595.ShiftByte(ausgabeWerte[pos],ShiftReg::LSBFirst); + HC595.ShiftByte(enableWerte[pos],ShiftReg::LSBFirst); + HC595.Latch(); + + pos++; + pos=pos%4; +} +void aufteilung() +{ + tempC=(sensorValue*2000/65536); //hier sollte eigentlich 3300/65536 stehen, dann ist aber der Anzeigewert zu hoch + //Azeigewert 222 entspricht 22,2 Grad + ausgabeWerte[0]=siebenSegWerte[tempC%10]; // Einer + ausgabeWerte[1]=siebenSegWerte[tempC%100/10]; //Zehner + ausgabeWerte[2]=siebenSegWerte[tempC%1000/100]; // Hunderter + ausgabeWerte[3]=siebenSegWerte[tempC/1000]; // Tausender + +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sun Apr 08 07:01:19 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/7130f322cb7e \ No newline at end of file