jksjdjs

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002   
00003  
00004 DigitalOut on_led(LED_RED);
00005 BusOut display(PTB18, PTB19, PTC1, PTC8, PTC9, PTC0, PTC7);
00006 //BusOut display(PTC5, PTC7, PTC0, PTC9, PTC8, PTC1, PTB19, PTB18);
00007 BusOut segmento( PTC16, PTC17, PTB9, PTA1);
00008 DigitalOut punto(PTC5);
00009 DigitalOut punto_c(PTB23);
00010 double calc_tem ();
00011 AnalogIn tem_pin (A0);
00012  
00013  
00014 int c = 0;
00015  
00016 void prende(int num);
00017 void prende_segmento(int num, int seg);
00018  
00019 int main(){
00020  display =0xFF;
00021  segmento = 0;
00022  punto= 1;
00023  wait (2);
00024  punto_c= 1;
00025  
00026     while (true) {
00027         double t= calc_tem();
00028         int x= t;
00029         printf ("%d\n\r",x);
00030         prende(x);
00031    
00032     }
00033 }
00034  
00035 void prende(int num){
00036     int centenas, decenas, unidades;
00037     
00038     centenas = num / 100;
00039     decenas = (num - (centenas * 100 )) / 10;
00040     unidades = num - (centenas * 100 ) - (decenas * 10);
00041     
00042     if (centenas != 0){
00043         prende_segmento(centenas, 1);
00044     }else{
00045         prende_segmento(0, 1);
00046     }
00047     
00048     if (decenas != 0){
00049         prende_segmento(decenas, 2);
00050     }else{
00051         prende_segmento(0, 2);
00052     }
00053     
00054     if (centenas != 0){
00055         prende_segmento(unidades, 3);
00056     }else{
00057         prende_segmento(0, 3);
00058     }
00059     prende_segmento(10,4);
00060  
00061 }
00062  
00063 void prende_segmento(int num, int seg){
00064     
00065     switch (num){
00066         case 0:
00067             display = 64;
00068             break;
00069         case 1:
00070             display = 121;
00071             break;
00072         case 2:
00073             display = 36;
00074             break;
00075         case 3:
00076             display = 48;
00077             break;
00078         case 4:
00079             display = 25;
00080             break;
00081         case 5:
00082             display = 18;
00083             break;
00084         case 6:
00085             display = 2;
00086             break;
00087         case 7:
00088             display = 120;
00089             break;
00090         case 8:
00091             display = 0;
00092             break;
00093         case 9:
00094             display = 24;
00095             break;
00096         default:
00097             display = 0xFF ;
00098     }
00099    
00100     switch (seg){
00101         case 1:
00102             segmento = 1;
00103             wait (0.001);
00104             break;
00105         case 2:
00106             segmento = 2;
00107             punto= 0;
00108             wait (0.001);
00109             break;
00110         case 3:
00111             segmento = 4;
00112             punto=1;
00113             wait (0.001);
00114             break;
00115         case 4:
00116             display= 70;
00117             segmento = 8;
00118             wait (0.001);
00119             break;
00120         default:
00121             segmento = 0;
00122             wait (0.001);
00123     }
00124     }
00125 double calc_tem(){
00126 double tem;
00127 tem = tem_pin;
00128 tem = tem * 3.3;
00129 tem = (4.8*8.81) / tem - 8.81;
00130 
00131 printf("tem %f\n\r", tem);
00132 
00133 tem = (1 / (0.002301985 + 0.0002758611* log(tem) + pow(0.000000416479325577 * log(tem),3))) - 273.15;
00134 
00135 
00136 
00137 return tem; 
00138 }   
00139 
00140