Temp logger for EE Web part 2

Dependencies:   mbed

Committer:
monpjc
Date:
Tue Nov 13 19:36:07 2012 +0000
Revision:
1:6db2c0502c2c
Parent:
0:5fefec34f0d3
Added local file sys

Who changed what in which revision?

UserRevisionLine numberNew contents of line
monpjc 0:5fefec34f0d3 1 #include "mbed.h"
monpjc 0:5fefec34f0d3 2
monpjc 0:5fefec34f0d3 3
monpjc 0:5fefec34f0d3 4 void button_FSM( void );
monpjc 0:5fefec34f0d3 5 void max31855( void );
monpjc 0:5fefec34f0d3 6 void init_max31855( void );
monpjc 0:5fefec34f0d3 7
monpjc 0:5fefec34f0d3 8 DigitalOut led1(LED1);
monpjc 0:5fefec34f0d3 9 DigitalOut led2(LED2);
monpjc 0:5fefec34f0d3 10 DigitalOut led3(LED3);
monpjc 0:5fefec34f0d3 11 DigitalOut led4(LED4);
monpjc 0:5fefec34f0d3 12 DigitalIn button(p21);
monpjc 0:5fefec34f0d3 13 AnalogIn Ain1(p19);
monpjc 0:5fefec34f0d3 14 AnalogIn Ain2(p20);
monpjc 0:5fefec34f0d3 15 Serial pc(USBTX, USBRX);
monpjc 0:5fefec34f0d3 16 DigitalOut spi_clk(p7);
monpjc 0:5fefec34f0d3 17 DigitalOut spi_cs(p8);
monpjc 0:5fefec34f0d3 18 DigitalIn spi_data(p6);
monpjc 1:6db2c0502c2c 19 LocalFileSystem local("local");
monpjc 0:5fefec34f0d3 20
monpjc 0:5fefec34f0d3 21 int enable;
monpjc 0:5fefec34f0d3 22 int button_state;
monpjc 0:5fefec34f0d3 23 int record_state;
monpjc 0:5fefec34f0d3 24 int spi_data_in_temp;
monpjc 0:5fefec34f0d3 25 int spi_data_in;
monpjc 1:6db2c0502c2c 26 float A1, A2, B1, B2;
monpjc 1:6db2c0502c2c 27 time_t seconds = 0;
monpjc 1:6db2c0502c2c 28 int openFile = 0;
monpjc 1:6db2c0502c2c 29 int closeFile = 0;
monpjc 0:5fefec34f0d3 30
monpjc 0:5fefec34f0d3 31 int main()
monpjc 0:5fefec34f0d3 32 {
monpjc 1:6db2c0502c2c 33 // Opens the root directory of the local file system
monpjc 1:6db2c0502c2c 34 pc.printf("Files on mbed\r\n");
monpjc 1:6db2c0502c2c 35 DIR *d = opendir("/local");
monpjc 1:6db2c0502c2c 36 struct dirent *p;
monpjc 1:6db2c0502c2c 37 while((p = readdir(d)) != NULL)
monpjc 1:6db2c0502c2c 38 { // Print the names of the files in the local file system
monpjc 1:6db2c0502c2c 39 pc.printf("%s\n\r", p->d_name); // to stdout (USB Serial).
monpjc 1:6db2c0502c2c 40 }
monpjc 1:6db2c0502c2c 41 closedir(d);
monpjc 1:6db2c0502c2c 42 pc.printf("\n");
monpjc 1:6db2c0502c2c 43 // Removes the file "log.csv" from the local file system
monpjc 1:6db2c0502c2c 44 //remove("/local/log.csv");
monpjc 1:6db2c0502c2c 45 // Open "log.csv" on the local file system for writing
monpjc 1:6db2c0502c2c 46 FILE *fp = fopen("/local/log.csv", "a");
monpjc 1:6db2c0502c2c 47 //Send headers to csv file
monpjc 1:6db2c0502c2c 48 fprintf(fp, "Time_Seconds,T1_C,T2_C,T3_C\r");
monpjc 1:6db2c0502c2c 49
monpjc 0:5fefec34f0d3 50 enable = 0;
monpjc 0:5fefec34f0d3 51 button_state = 0;
monpjc 0:5fefec34f0d3 52 record_state = 0;
monpjc 0:5fefec34f0d3 53 init_max31855();
monpjc 0:5fefec34f0d3 54
monpjc 1:6db2c0502c2c 55 pc.printf("Data Logger Ready\r\n");
monpjc 0:5fefec34f0d3 56
monpjc 1:6db2c0502c2c 57 while(closeFile == 0)
monpjc 0:5fefec34f0d3 58 {
monpjc 0:5fefec34f0d3 59 wait(1.0);
monpjc 0:5fefec34f0d3 60 button_FSM();
monpjc 0:5fefec34f0d3 61 max31855();
monpjc 1:6db2c0502c2c 62
monpjc 0:5fefec34f0d3 63 if( enable == 1 )
monpjc 0:5fefec34f0d3 64 {
monpjc 0:5fefec34f0d3 65 A1 = Ain1.read_u16();
monpjc 1:6db2c0502c2c 66 B1 = (0.000000029*(A1*A1))-(0.00341*A1)+104;
monpjc 0:5fefec34f0d3 67 A2 = Ain2.read_u16();
monpjc 1:6db2c0502c2c 68 B2 = (0.000000029*(A2*A2))-(0.00341*A2)+104;
monpjc 1:6db2c0502c2c 69 pc.printf("Ain1=%.2f Ain2=%.2f t'c=%d\r\n", B1, B2, spi_data_in);
monpjc 0:5fefec34f0d3 70 }
monpjc 1:6db2c0502c2c 71 //get time in seconds
monpjc 1:6db2c0502c2c 72 seconds = time(NULL);
monpjc 1:6db2c0502c2c 73 //and save to log file
monpjc 1:6db2c0502c2c 74 fprintf(fp, "%d,%.2f,%.2f,%d\n", seconds, B1, B2, spi_data_in );
monpjc 0:5fefec34f0d3 75 }
monpjc 1:6db2c0502c2c 76 fclose(fp);
monpjc 0:5fefec34f0d3 77 }
monpjc 0:5fefec34f0d3 78
monpjc 0:5fefec34f0d3 79 void max31855( void )
monpjc 0:5fefec34f0d3 80 {
monpjc 0:5fefec34f0d3 81 int bits = 0;
monpjc 0:5fefec34f0d3 82
monpjc 0:5fefec34f0d3 83 spi_data_in_temp = 0;
monpjc 0:5fefec34f0d3 84
monpjc 0:5fefec34f0d3 85 spi_clk = 0;
monpjc 0:5fefec34f0d3 86 spi_cs = 0;
monpjc 0:5fefec34f0d3 87 wait(0.01);
monpjc 0:5fefec34f0d3 88
monpjc 0:5fefec34f0d3 89 while( bits < 32 )
monpjc 0:5fefec34f0d3 90 {
monpjc 0:5fefec34f0d3 91 spi_clk = 1;
monpjc 0:5fefec34f0d3 92 spi_clk = 1;
monpjc 0:5fefec34f0d3 93 if( bits > 0 && bits < 12 )
monpjc 0:5fefec34f0d3 94 {
monpjc 0:5fefec34f0d3 95 spi_data_in_temp = (spi_data_in_temp *2) + spi_data;
monpjc 0:5fefec34f0d3 96 }
monpjc 0:5fefec34f0d3 97 spi_clk = 0;
monpjc 0:5fefec34f0d3 98 bits++;
monpjc 0:5fefec34f0d3 99 }
monpjc 0:5fefec34f0d3 100 spi_data_in = spi_data_in_temp;
monpjc 0:5fefec34f0d3 101 spi_cs = 1;
monpjc 0:5fefec34f0d3 102 }
monpjc 0:5fefec34f0d3 103
monpjc 0:5fefec34f0d3 104 void init_max31855( void )
monpjc 0:5fefec34f0d3 105 {
monpjc 0:5fefec34f0d3 106 spi_cs = 1;
monpjc 0:5fefec34f0d3 107 spi_clk = 0;
monpjc 0:5fefec34f0d3 108 spi_data_in_temp = 0;
monpjc 0:5fefec34f0d3 109 spi_data_in = 0;
monpjc 0:5fefec34f0d3 110 }
monpjc 0:5fefec34f0d3 111
monpjc 0:5fefec34f0d3 112 void button_FSM( void )
monpjc 0:5fefec34f0d3 113 {
monpjc 0:5fefec34f0d3 114 if( enable == 0 )
monpjc 0:5fefec34f0d3 115 {
monpjc 0:5fefec34f0d3 116 switch( button_state )
monpjc 0:5fefec34f0d3 117 {
monpjc 0:5fefec34f0d3 118 default:
monpjc 0:5fefec34f0d3 119 case 0:
monpjc 0:5fefec34f0d3 120 if( button == 1 )
monpjc 0:5fefec34f0d3 121 button_state = 1;
monpjc 0:5fefec34f0d3 122 else
monpjc 0:5fefec34f0d3 123 button_state = 0;
monpjc 0:5fefec34f0d3 124 break;
monpjc 0:5fefec34f0d3 125
monpjc 0:5fefec34f0d3 126 case 1:
monpjc 0:5fefec34f0d3 127 if( button == 1 )
monpjc 0:5fefec34f0d3 128 button_state = 2;
monpjc 0:5fefec34f0d3 129 else
monpjc 0:5fefec34f0d3 130 button_state = 0;
monpjc 0:5fefec34f0d3 131 break;
monpjc 0:5fefec34f0d3 132
monpjc 0:5fefec34f0d3 133 case 2:
monpjc 0:5fefec34f0d3 134 if( button == 1 )
monpjc 0:5fefec34f0d3 135 button_state = 3;
monpjc 0:5fefec34f0d3 136 else
monpjc 0:5fefec34f0d3 137 button_state = 0;
monpjc 0:5fefec34f0d3 138 break;
monpjc 0:5fefec34f0d3 139
monpjc 0:5fefec34f0d3 140 case 3:
monpjc 0:5fefec34f0d3 141 if( button == 1 )
monpjc 0:5fefec34f0d3 142 button_state = 4;
monpjc 0:5fefec34f0d3 143 else
monpjc 0:5fefec34f0d3 144 button_state = 0;
monpjc 0:5fefec34f0d3 145 break;
monpjc 0:5fefec34f0d3 146
monpjc 0:5fefec34f0d3 147 case 4:
monpjc 0:5fefec34f0d3 148 enable = 1;
monpjc 0:5fefec34f0d3 149 button_state = 0;
monpjc 1:6db2c0502c2c 150 pc.printf("Recording...\r\n");
monpjc 1:6db2c0502c2c 151 //reset time to zero
monpjc 1:6db2c0502c2c 152 set_time(0);
monpjc 0:5fefec34f0d3 153 break;
monpjc 0:5fefec34f0d3 154 }
monpjc 0:5fefec34f0d3 155 }
monpjc 0:5fefec34f0d3 156 else
monpjc 0:5fefec34f0d3 157 {
monpjc 0:5fefec34f0d3 158 switch( button_state )
monpjc 0:5fefec34f0d3 159 {
monpjc 0:5fefec34f0d3 160 default:
monpjc 0:5fefec34f0d3 161 case 0:
monpjc 0:5fefec34f0d3 162 if( button == 1 )
monpjc 0:5fefec34f0d3 163 button_state = 1;
monpjc 0:5fefec34f0d3 164 else
monpjc 0:5fefec34f0d3 165 button_state = 0;
monpjc 0:5fefec34f0d3 166 break;
monpjc 0:5fefec34f0d3 167
monpjc 0:5fefec34f0d3 168 case 1:
monpjc 0:5fefec34f0d3 169 if( button == 1 )
monpjc 0:5fefec34f0d3 170 button_state = 2;
monpjc 0:5fefec34f0d3 171 else
monpjc 0:5fefec34f0d3 172 button_state = 0;
monpjc 0:5fefec34f0d3 173 break;
monpjc 0:5fefec34f0d3 174
monpjc 0:5fefec34f0d3 175 case 2:
monpjc 0:5fefec34f0d3 176 if( button == 1 )
monpjc 0:5fefec34f0d3 177 button_state = 3;
monpjc 0:5fefec34f0d3 178 else
monpjc 0:5fefec34f0d3 179 button_state = 0;
monpjc 0:5fefec34f0d3 180 break;
monpjc 0:5fefec34f0d3 181
monpjc 0:5fefec34f0d3 182 case 3:
monpjc 0:5fefec34f0d3 183 if( button == 1 )
monpjc 0:5fefec34f0d3 184 button_state = 4;
monpjc 0:5fefec34f0d3 185 else
monpjc 0:5fefec34f0d3 186 button_state = 0;
monpjc 0:5fefec34f0d3 187 break;
monpjc 0:5fefec34f0d3 188
monpjc 0:5fefec34f0d3 189 case 4:
monpjc 0:5fefec34f0d3 190 enable = 0;
monpjc 0:5fefec34f0d3 191 button_state = 0;
monpjc 1:6db2c0502c2c 192 closeFile = 1;
monpjc 1:6db2c0502c2c 193 pc.printf("STOPPED!\r\n");
monpjc 0:5fefec34f0d3 194 break;
monpjc 0:5fefec34f0d3 195 }
monpjc 0:5fefec34f0d3 196 }
monpjc 0:5fefec34f0d3 197 switch( button_state )
monpjc 0:5fefec34f0d3 198 {
monpjc 0:5fefec34f0d3 199 default:
monpjc 0:5fefec34f0d3 200 case 0:
monpjc 0:5fefec34f0d3 201 led1 = 0;
monpjc 0:5fefec34f0d3 202 led2 = 0;
monpjc 0:5fefec34f0d3 203 led3 = 0;
monpjc 0:5fefec34f0d3 204 led4 = 0;
monpjc 0:5fefec34f0d3 205 break;
monpjc 0:5fefec34f0d3 206
monpjc 0:5fefec34f0d3 207 case 1:
monpjc 0:5fefec34f0d3 208 led1 = 1;
monpjc 0:5fefec34f0d3 209 led2 = 0;
monpjc 0:5fefec34f0d3 210 led3 = 0;
monpjc 0:5fefec34f0d3 211 led4 = 0;
monpjc 0:5fefec34f0d3 212 break;
monpjc 0:5fefec34f0d3 213
monpjc 0:5fefec34f0d3 214 case 2:
monpjc 0:5fefec34f0d3 215 led1 = 1;
monpjc 0:5fefec34f0d3 216 led2 = 1;
monpjc 0:5fefec34f0d3 217 led3 = 0;
monpjc 0:5fefec34f0d3 218 led4 = 0;
monpjc 0:5fefec34f0d3 219 break;
monpjc 0:5fefec34f0d3 220
monpjc 0:5fefec34f0d3 221 case 3:
monpjc 0:5fefec34f0d3 222 led1 = 1;
monpjc 0:5fefec34f0d3 223 led2 = 1;
monpjc 0:5fefec34f0d3 224 led3 = 1;
monpjc 0:5fefec34f0d3 225 led4 = 0;
monpjc 0:5fefec34f0d3 226 break;
monpjc 0:5fefec34f0d3 227
monpjc 0:5fefec34f0d3 228 case 4:
monpjc 0:5fefec34f0d3 229 led1 = 1;
monpjc 0:5fefec34f0d3 230 led2 = 1;
monpjc 0:5fefec34f0d3 231 led3 = 1;
monpjc 0:5fefec34f0d3 232 led4 = 1;
monpjc 0:5fefec34f0d3 233 break;
monpjc 0:5fefec34f0d3 234 }
monpjc 0:5fefec34f0d3 235 }