![](/media/cache/profiles/adf7ee2dcf142b0e11888e72b43fcb75.50x50_q85.jpg)
Temp logger for EE Web part 2
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 00003 00004 void button_FSM( void ); 00005 void max31855( void ); 00006 void init_max31855( void ); 00007 00008 DigitalOut led1(LED1); 00009 DigitalOut led2(LED2); 00010 DigitalOut led3(LED3); 00011 DigitalOut led4(LED4); 00012 DigitalIn button(p21); 00013 AnalogIn Ain1(p19); 00014 AnalogIn Ain2(p20); 00015 Serial pc(USBTX, USBRX); 00016 DigitalOut spi_clk(p7); 00017 DigitalOut spi_cs(p8); 00018 DigitalIn spi_data(p6); 00019 LocalFileSystem local("local"); 00020 00021 int enable; 00022 int button_state; 00023 int record_state; 00024 int spi_data_in_temp; 00025 int spi_data_in; 00026 float A1, A2, B1, B2; 00027 time_t seconds = 0; 00028 int openFile = 0; 00029 int closeFile = 0; 00030 00031 int main() 00032 { 00033 // Opens the root directory of the local file system 00034 pc.printf("Files on mbed\r\n"); 00035 DIR *d = opendir("/local"); 00036 struct dirent *p; 00037 while((p = readdir(d)) != NULL) 00038 { // Print the names of the files in the local file system 00039 pc.printf("%s\n\r", p->d_name); // to stdout (USB Serial). 00040 } 00041 closedir(d); 00042 pc.printf("\n"); 00043 // Removes the file "log.csv" from the local file system 00044 //remove("/local/log.csv"); 00045 // Open "log.csv" on the local file system for writing 00046 FILE *fp = fopen("/local/log.csv", "a"); 00047 //Send headers to csv file 00048 fprintf(fp, "Time_Seconds,T1_C,T2_C,T3_C\r"); 00049 00050 enable = 0; 00051 button_state = 0; 00052 record_state = 0; 00053 init_max31855(); 00054 00055 pc.printf("Data Logger Ready\r\n"); 00056 00057 while(closeFile == 0) 00058 { 00059 wait(1.0); 00060 button_FSM(); 00061 max31855(); 00062 00063 if( enable == 1 ) 00064 { 00065 A1 = Ain1.read_u16(); 00066 B1 = (0.000000029*(A1*A1))-(0.00341*A1)+104; 00067 A2 = Ain2.read_u16(); 00068 B2 = (0.000000029*(A2*A2))-(0.00341*A2)+104; 00069 pc.printf("Ain1=%.2f Ain2=%.2f t'c=%d\r\n", B1, B2, spi_data_in); 00070 } 00071 //get time in seconds 00072 seconds = time(NULL); 00073 //and save to log file 00074 fprintf(fp, "%d,%.2f,%.2f,%d\n", seconds, B1, B2, spi_data_in ); 00075 } 00076 fclose(fp); 00077 } 00078 00079 void max31855( void ) 00080 { 00081 int bits = 0; 00082 00083 spi_data_in_temp = 0; 00084 00085 spi_clk = 0; 00086 spi_cs = 0; 00087 wait(0.01); 00088 00089 while( bits < 32 ) 00090 { 00091 spi_clk = 1; 00092 spi_clk = 1; 00093 if( bits > 0 && bits < 12 ) 00094 { 00095 spi_data_in_temp = (spi_data_in_temp *2) + spi_data; 00096 } 00097 spi_clk = 0; 00098 bits++; 00099 } 00100 spi_data_in = spi_data_in_temp; 00101 spi_cs = 1; 00102 } 00103 00104 void init_max31855( void ) 00105 { 00106 spi_cs = 1; 00107 spi_clk = 0; 00108 spi_data_in_temp = 0; 00109 spi_data_in = 0; 00110 } 00111 00112 void button_FSM( void ) 00113 { 00114 if( enable == 0 ) 00115 { 00116 switch( button_state ) 00117 { 00118 default: 00119 case 0: 00120 if( button == 1 ) 00121 button_state = 1; 00122 else 00123 button_state = 0; 00124 break; 00125 00126 case 1: 00127 if( button == 1 ) 00128 button_state = 2; 00129 else 00130 button_state = 0; 00131 break; 00132 00133 case 2: 00134 if( button == 1 ) 00135 button_state = 3; 00136 else 00137 button_state = 0; 00138 break; 00139 00140 case 3: 00141 if( button == 1 ) 00142 button_state = 4; 00143 else 00144 button_state = 0; 00145 break; 00146 00147 case 4: 00148 enable = 1; 00149 button_state = 0; 00150 pc.printf("Recording...\r\n"); 00151 //reset time to zero 00152 set_time(0); 00153 break; 00154 } 00155 } 00156 else 00157 { 00158 switch( button_state ) 00159 { 00160 default: 00161 case 0: 00162 if( button == 1 ) 00163 button_state = 1; 00164 else 00165 button_state = 0; 00166 break; 00167 00168 case 1: 00169 if( button == 1 ) 00170 button_state = 2; 00171 else 00172 button_state = 0; 00173 break; 00174 00175 case 2: 00176 if( button == 1 ) 00177 button_state = 3; 00178 else 00179 button_state = 0; 00180 break; 00181 00182 case 3: 00183 if( button == 1 ) 00184 button_state = 4; 00185 else 00186 button_state = 0; 00187 break; 00188 00189 case 4: 00190 enable = 0; 00191 button_state = 0; 00192 closeFile = 1; 00193 pc.printf("STOPPED!\r\n"); 00194 break; 00195 } 00196 } 00197 switch( button_state ) 00198 { 00199 default: 00200 case 0: 00201 led1 = 0; 00202 led2 = 0; 00203 led3 = 0; 00204 led4 = 0; 00205 break; 00206 00207 case 1: 00208 led1 = 1; 00209 led2 = 0; 00210 led3 = 0; 00211 led4 = 0; 00212 break; 00213 00214 case 2: 00215 led1 = 1; 00216 led2 = 1; 00217 led3 = 0; 00218 led4 = 0; 00219 break; 00220 00221 case 3: 00222 led1 = 1; 00223 led2 = 1; 00224 led3 = 1; 00225 led4 = 0; 00226 break; 00227 00228 case 4: 00229 led1 = 1; 00230 led2 = 1; 00231 led3 = 1; 00232 led4 = 1; 00233 break; 00234 } 00235 }
Generated on Thu Jul 14 2022 02:37:14 by
![doxygen](doxygen.png)