Rough Draft, still some debugging to be done. Considering getting rubber ducky
Dependencies: mbed SDFileSystem DS1820 ExtendedTimer
main.cpp
00001 ////////////////////////////// 00002 //Main Code for Themal Wake // 00003 //Jonathan Zelaya // 00004 //April 11, 2019 // 00005 ////////////////////////////// 00006 00007 #define MULTIPLE_PROBES 00008 #define ARM1_DATA_PIN p25 00009 #define ARM2_DATA_PIN p19 00010 #define TAIL_DATA_PIN p23 00011 #define MAX_PROBES 25 00012 00013 #include "mbed.h" 00014 #include "DS1820.h" 00015 #include "ExtendedTimer.h" 00016 #include "SDFileSystem.h" 00017 00018 DS1820* probe1[MAX_PROBES]; 00019 DS1820* probe2[MAX_PROBES]; 00020 DS1820* probeTail[MAX_PROBES]; 00021 SDFileSystem fs(p5, p6, p7, p8, "fs"); 00022 ExtendedTimer t; 00023 Ticker sampleTime; 00024 Ticker saveTime; 00025 DigitalOut led1(LED1); 00026 DigitalOut led2(LED2); 00027 DigitalOut led3(LED3); 00028 DigitalOut led4(LED4); 00029 DigitalOut ledOn(p15); 00030 DigitalOut ledError(p16); 00031 00032 00033 00034 int main(){ 00035 int num_arm1 = 0; 00036 int num_arm2 = 0; 00037 int num_tail = 0; 00038 //mount filesystem 00039 bool mountFailure = fs.mount();//will let user know if SD mounting was successful 00040 if(mountFailure != 0){ 00041 ledError = 1; 00042 return -1;//end program with error status 00043 } 00044 else 00045 ledOn = 1; 00046 00047 unsigned long long fullName; //DS1820 is 64 bits( a long long) 00048 FILE* out1 = fopen("/fs/arm1.txt","a");//will create a different file for each sensor 00049 FILE* out2 = fopen("/fs/arm2.txt","a"); 00050 FILE* out3 = fopen("/fs/tail.txt","a"); 00051 00052 //arm 1 set up 00053 while(DS1820::unassignedProbe(ARM1_DATA_PIN)){ 00054 probe1[num_arm1] = new DS1820(ARM1_DATA_PIN); 00055 num_arm1++; 00056 if(num_arm1 == MAX_PROBES){ 00057 break; 00058 } 00059 } 00060 00061 //arm2 set up 00062 while(DS1820::unassignedProbe(ARM2_DATA_PIN)){ 00063 probe2[num_arm2] = new DS1820(ARM2_DATA_PIN); 00064 num_arm2++; 00065 if(num_arm2 == MAX_PROBES){ 00066 break; 00067 } 00068 } 00069 00070 //arm3 set up 00071 while(DS1820::unassignedProbe(TAIL_DATA_PIN)){ 00072 probeTail[num_tail] = new DS1820(TAIL_DATA_PIN); 00073 num_tail++; 00074 if(num_tail == MAX_PROBES){ 00075 break; 00076 } 00077 } 00078 00079 //Writing headers for each file! 00080 fprintf(out1, "Found %d device(s)\r\n", num_arm1);//lets user know how many sensors were read during the actual flight 00081 fprintf(out2, "Found %d device(s)\r\n", num_arm2); 00082 fprintf(out3, "Found %d device(s)\r\n", num_tail); 00083 for(int i = 0; i < num_arm1; i++){//reads out the ID numbers to each file and numbers them 00084 fullName = probe1[i]->whoAmI(); 00085 fprintf(out1, "\tID%d = ", i); 00086 fprintf(out1, "%llX\r\n", fullName); 00087 } 00088 for(int i = 0; i < num_arm2; i++){ 00089 fullName = probe2[i]->whoAmI(); 00090 fprintf(out2, "\tID%d = ", i); 00091 fprintf(out2, "%llX\r\n", fullName); 00092 } 00093 for(int i = 0; i < num_tail; i++){ 00094 fullName = probeTail[i]->whoAmI(); 00095 fprintf(out3, "\tID%d = ", i); 00096 fprintf(out3, "%llX\r\n", fullName); 00097 } 00098 //Formatting of Data 00099 00100 fprintf(out1, "Sensors: "); 00101 fprintf(out2, "Sensors: "); 00102 fprintf(out3, "Sensors: "); 00103 for(int i = 0; i < num_arm1; i++){ 00104 fprintf(out1, "%d ", i); 00105 } 00106 for(int i = 0; i < num_arm2; i++){ 00107 fprintf(out2, "%d ", i); 00108 } 00109 for(int i = 0; i < num_tail; i++){ 00110 fprintf(out3, "%d ", i); 00111 } 00112 fprintf(out1, "\r\n"); 00113 fprintf(out2, "\r\n"); 00114 fprintf(out3, "\r\n"); 00115 00116 //timer starts 00117 t.start(); 00118 00119 while(t.read() < (60*60*4)){ //4 hours of data 00120 led1 = 1; 00121 probe1[0]-> convertTemperature(true, DS1820::all_devices);//convert all the temperature sensors 00122 probe2[0]-> convertTemperature(true, DS1820::all_devices); 00123 probeTail[0]-> convertTemperature(true, DS1820::all_devices); 00124 led4 = 1; 00125 //print data from arm 1 00126 fprintf(out1, "%3.1f(s) ", t.read()); 00127 //get temp from sensors 00128 for(int i = 0; i < num_arm1; i++){ 00129 fprintf(out1, "%3.1f ", probe1[i]->temperature()); 00130 } 00131 fprintf(out1, "\r\n"); 00132 00133 fprintf(out2, "%3.1f(s) ", t.read()); 00134 for(int i = 0; i < num_arm2; i++){ 00135 fprintf(out2, "%3.1f ", probe2[i]->temperature()); 00136 } 00137 fprintf(out2, "\r\n"); 00138 fprintf(out3, "%3.1f(s) ", t.read()); 00139 for(int i = 0; i < num_tail; i++){ 00140 fprintf(out3, "%3.1f ", probeTail[i]->temperature()); 00141 } 00142 fprintf(out3, "\r\n"); 00143 00144 led3 = 1; 00145 fclose(out1); 00146 fclose(out2); 00147 fclose(out3); 00148 out1 = fopen("fs/arm1.txt","a"); 00149 out2 = fopen("fs/arm2.txt","a"); 00150 out3 = fopen("fs/armTail.txt","a"); 00151 led3 = 0; 00152 wait(10); 00153 } 00154 00155 //close the file and unmount the file system 00156 fclose(out1); 00157 fclose(out2); 00158 fclose(out3); 00159 fs.unmount(); 00160 led2 = 1;//turn on LED to let user know its safe to remove SD card 00161 ledOn = 0; 00162 ledError = 1; 00163 }
Generated on Tue Jul 12 2022 15:09:31 by 1.7.2