Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
1.7.2