Oliver Keller
/
muonhunter-K8
experimental fork
main.cpp@7:6a0958c2be7e, 2016-12-21 (annotated)
- Committer:
- OliverKeller
- Date:
- Wed Dec 21 15:34:09 2016 +0000
- Revision:
- 7:6a0958c2be7e
- Parent:
- 6:e95598c44a7f
added nokia display, disabled queue (save quite some flash space)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mva111 | 0:52895a475820 | 1 | #include "mbed.h" |
mva111 | 0:52895a475820 | 2 | #include "hvcontrol.cpp" |
mva111 | 0:52895a475820 | 3 | #include "detection.cpp" |
OliverKeller | 7:6a0958c2be7e | 4 | //#include <queue> |
OliverKeller | 7:6a0958c2be7e | 5 | #include "NOKIA_5110.h" |
mva111 | 0:52895a475820 | 6 | |
mva111 | 5:9c7c88f8f800 | 7 | //set the frequency of the oscillators below |
OliverKeller | 7:6a0958c2be7e | 8 | int f1 = 3600; //3500; |
OliverKeller | 7:6a0958c2be7e | 9 | int f2 = 3497; |
mva111 | 5:9c7c88f8f800 | 10 | |
mva111 | 5:9c7c88f8f800 | 11 | //set the coincidence times in us below |
OliverKeller | 7:6a0958c2be7e | 12 | int coincidence_wait = 50; //150; |
OliverKeller | 7:6a0958c2be7e | 13 | bool buzzer = 0; |
mva111 | 5:9c7c88f8f800 | 14 | |
mva111 | 5:9c7c88f8f800 | 15 | /* NO USER CONFIGURABLE OPTIONS BELOW |
mva111 | 5:9c7c88f8f800 | 16 | */ |
mva111 | 5:9c7c88f8f800 | 17 | |
mva111 | 0:52895a475820 | 18 | //typically around 2 min data |
mva111 | 0:52895a475820 | 19 | //assuming normal background |
OliverKeller | 7:6a0958c2be7e | 20 | #define DETECTION_MEMORY_LIMIT 32 //128 |
mva111 | 0:52895a475820 | 21 | |
mva111 | 0:52895a475820 | 22 | //doesn't log the GM hits with a timestamp |
mva111 | 0:52895a475820 | 23 | //only counts them when set to 1 |
OliverKeller | 7:6a0958c2be7e | 24 | #define DETECT_MUONS_ONLY 1 |
mva111 | 5:9c7c88f8f800 | 25 | |
mva111 | 0:52895a475820 | 26 | bool mdet = 0; |
OliverKeller | 7:6a0958c2be7e | 27 | /*volatile*/ int muon_total; |
OliverKeller | 7:6a0958c2be7e | 28 | /*volatile*/ int gm1_total; |
OliverKeller | 7:6a0958c2be7e | 29 | /*volatile*/ int gm2_total; |
OliverKeller | 7:6a0958c2be7e | 30 | int minutes = 0; //global minutes counter |
mva111 | 0:52895a475820 | 31 | |
mva111 | 0:52895a475820 | 32 | //storing a detections in a FIFO queue |
OliverKeller | 7:6a0958c2be7e | 33 | //queue<Detection> detections; |
mva111 | 0:52895a475820 | 34 | |
mva111 | 0:52895a475820 | 35 | //High voltage controls |
mva111 | 0:52895a475820 | 36 | HVControl hv1(PA_3, PA_0); |
mva111 | 0:52895a475820 | 37 | HVControl hv2(PB_1, PA_1); |
mva111 | 0:52895a475820 | 38 | |
OliverKeller | 7:6a0958c2be7e | 39 | //Serial rpi(PA_9,PA_10); |
mva111 | 0:52895a475820 | 40 | |
mva111 | 0:52895a475820 | 41 | Timer coincidence_timer; |
mva111 | 0:52895a475820 | 42 | Timer main_t; |
mva111 | 0:52895a475820 | 43 | |
mva111 | 0:52895a475820 | 44 | Serial pc(USBTX, USBRX); |
mva111 | 0:52895a475820 | 45 | // Ticker debug; |
mva111 | 0:52895a475820 | 46 | Ticker hv1monitor; |
mva111 | 0:52895a475820 | 47 | Ticker hv2monitor; |
OliverKeller | 7:6a0958c2be7e | 48 | //Ticker memory_checker; |
mva111 | 0:52895a475820 | 49 | |
mva111 | 0:52895a475820 | 50 | DigitalOut led(LED1); |
mva111 | 0:52895a475820 | 51 | DigitalOut GM1_led(PA_12); |
mva111 | 0:52895a475820 | 52 | DigitalOut GM2_led(PA_8); |
mva111 | 0:52895a475820 | 53 | DigitalOut C_led(PA_11); |
mva111 | 0:52895a475820 | 54 | DigitalOut Buzzer(PF_0); |
mva111 | 0:52895a475820 | 55 | |
mva111 | 0:52895a475820 | 56 | InterruptIn GM1(PB_0); |
mva111 | 0:52895a475820 | 57 | InterruptIn GM2(PF_1); |
mva111 | 0:52895a475820 | 58 | |
mva111 | 0:52895a475820 | 59 | //global variables for voltages |
mva111 | 0:52895a475820 | 60 | volatile float v1 = 0; |
mva111 | 0:52895a475820 | 61 | volatile float v2 = 0; |
mva111 | 0:52895a475820 | 62 | |
mva111 | 0:52895a475820 | 63 | //ui functions |
OliverKeller | 7:6a0958c2be7e | 64 | void reset_counters (void) |
OliverKeller | 7:6a0958c2be7e | 65 | { |
mva111 | 0:52895a475820 | 66 | muon_total = 0; |
mva111 | 0:52895a475820 | 67 | gm1_total = 0; |
mva111 | 0:52895a475820 | 68 | gm2_total = 0; |
OliverKeller | 7:6a0958c2be7e | 69 | } |
OliverKeller | 7:6a0958c2be7e | 70 | |
OliverKeller | 7:6a0958c2be7e | 71 | void muon_buzz(void) |
OliverKeller | 7:6a0958c2be7e | 72 | { |
mva111 | 0:52895a475820 | 73 | C_led = 1; |
OliverKeller | 7:6a0958c2be7e | 74 | |
OliverKeller | 7:6a0958c2be7e | 75 | if(buzzer) { |
OliverKeller | 7:6a0958c2be7e | 76 | for(int i = 0; i < 32; i++) { |
OliverKeller | 7:6a0958c2be7e | 77 | Buzzer = !Buzzer; |
OliverKeller | 7:6a0958c2be7e | 78 | wait(0.002); |
OliverKeller | 7:6a0958c2be7e | 79 | } |
OliverKeller | 7:6a0958c2be7e | 80 | } else { |
OliverKeller | 7:6a0958c2be7e | 81 | wait(0.05); |
mva111 | 0:52895a475820 | 82 | } |
OliverKeller | 7:6a0958c2be7e | 83 | C_led = 0; |
OliverKeller | 7:6a0958c2be7e | 84 | } |
OliverKeller | 7:6a0958c2be7e | 85 | |
OliverKeller | 7:6a0958c2be7e | 86 | void GM1_buzz(void) |
OliverKeller | 7:6a0958c2be7e | 87 | { |
mva111 | 0:52895a475820 | 88 | GM1_led = 1; |
OliverKeller | 7:6a0958c2be7e | 89 | if(buzzer) { |
OliverKeller | 7:6a0958c2be7e | 90 | for(int i = 0; i < 16; i++) { |
OliverKeller | 7:6a0958c2be7e | 91 | Buzzer = !Buzzer; |
OliverKeller | 7:6a0958c2be7e | 92 | wait(0.001); |
OliverKeller | 7:6a0958c2be7e | 93 | } |
OliverKeller | 7:6a0958c2be7e | 94 | } else { |
OliverKeller | 7:6a0958c2be7e | 95 | wait(0.05); |
mva111 | 0:52895a475820 | 96 | } |
OliverKeller | 7:6a0958c2be7e | 97 | GM1_led = 0; |
OliverKeller | 7:6a0958c2be7e | 98 | } |
OliverKeller | 7:6a0958c2be7e | 99 | |
OliverKeller | 7:6a0958c2be7e | 100 | void GM2_buzz(void) |
OliverKeller | 7:6a0958c2be7e | 101 | { |
mva111 | 0:52895a475820 | 102 | GM2_led = 1; |
OliverKeller | 7:6a0958c2be7e | 103 | if(buzzer) { |
OliverKeller | 7:6a0958c2be7e | 104 | for(int i = 0; i < 16; i++) { |
OliverKeller | 7:6a0958c2be7e | 105 | Buzzer = !Buzzer; |
OliverKeller | 7:6a0958c2be7e | 106 | wait(0.001); |
OliverKeller | 7:6a0958c2be7e | 107 | } |
OliverKeller | 7:6a0958c2be7e | 108 | } else { |
OliverKeller | 7:6a0958c2be7e | 109 | wait(0.05); |
mva111 | 0:52895a475820 | 110 | } |
OliverKeller | 7:6a0958c2be7e | 111 | GM2_led = 0; |
OliverKeller | 7:6a0958c2be7e | 112 | } |
OliverKeller | 7:6a0958c2be7e | 113 | |
OliverKeller | 7:6a0958c2be7e | 114 | |
mva111 | 0:52895a475820 | 115 | //adds a detection onto the queue |
OliverKeller | 7:6a0958c2be7e | 116 | void add_detection(int channel, float time) |
OliverKeller | 7:6a0958c2be7e | 117 | { |
OliverKeller | 7:6a0958c2be7e | 118 | //Detection* det = new Detection(channel, time); |
OliverKeller | 7:6a0958c2be7e | 119 | //detections.push(*det); |
OliverKeller | 7:6a0958c2be7e | 120 | //delete det; |
OliverKeller | 7:6a0958c2be7e | 121 | } |
OliverKeller | 7:6a0958c2be7e | 122 | |
mva111 | 0:52895a475820 | 123 | //callback for GM1 detection |
OliverKeller | 7:6a0958c2be7e | 124 | void GM1_hit(void) |
OliverKeller | 7:6a0958c2be7e | 125 | { |
mva111 | 0:52895a475820 | 126 | coincidence_timer.start(); |
OliverKeller | 7:6a0958c2be7e | 127 | while(coincidence_timer.read_us() < coincidence_wait) { |
OliverKeller | 7:6a0958c2be7e | 128 | if(GM2 == 0 && !mdet) { |
OliverKeller | 7:6a0958c2be7e | 129 | add_detection(3, main_t.read_us()); |
mva111 | 0:52895a475820 | 130 | muon_buzz(); |
mva111 | 0:52895a475820 | 131 | muon_total++; |
mva111 | 6:e95598c44a7f | 132 | gm2_total++; |
mva111 | 0:52895a475820 | 133 | mdet = 1; |
OliverKeller | 7:6a0958c2be7e | 134 | } |
mva111 | 0:52895a475820 | 135 | wait(1e-7); |
OliverKeller | 7:6a0958c2be7e | 136 | } |
mva111 | 0:52895a475820 | 137 | coincidence_timer.stop(); |
mva111 | 0:52895a475820 | 138 | coincidence_timer.reset(); |
mva111 | 0:52895a475820 | 139 | if(mdet == 0) GM1_buzz(); |
mva111 | 0:52895a475820 | 140 | if ( !DETECT_MUONS_ONLY ) add_detection(1, main_t.read()); |
mva111 | 0:52895a475820 | 141 | gm1_total++; |
mva111 | 0:52895a475820 | 142 | mdet = 0; |
OliverKeller | 7:6a0958c2be7e | 143 | } |
mva111 | 0:52895a475820 | 144 | |
mva111 | 0:52895a475820 | 145 | //callback for GM2 detection |
OliverKeller | 7:6a0958c2be7e | 146 | void GM2_hit(void) |
OliverKeller | 7:6a0958c2be7e | 147 | { |
OliverKeller | 7:6a0958c2be7e | 148 | coincidence_timer.start(); |
OliverKeller | 7:6a0958c2be7e | 149 | while(coincidence_timer.read_us() < coincidence_wait) { |
OliverKeller | 7:6a0958c2be7e | 150 | if(GM1 == 0 && !mdet) { |
mva111 | 0:52895a475820 | 151 | add_detection(3, main_t.read()); |
mva111 | 0:52895a475820 | 152 | muon_buzz(); |
mva111 | 0:52895a475820 | 153 | muon_total++; |
mva111 | 6:e95598c44a7f | 154 | gm1_total++; |
mva111 | 0:52895a475820 | 155 | mdet = 1; |
OliverKeller | 7:6a0958c2be7e | 156 | } |
mva111 | 0:52895a475820 | 157 | wait(1e-7); |
OliverKeller | 7:6a0958c2be7e | 158 | } |
mva111 | 0:52895a475820 | 159 | coincidence_timer.stop(); |
OliverKeller | 7:6a0958c2be7e | 160 | coincidence_timer.reset(); |
mva111 | 0:52895a475820 | 161 | if(mdet == 0) GM2_buzz(); |
mva111 | 0:52895a475820 | 162 | if ( !DETECT_MUONS_ONLY ) add_detection(2, main_t.read()); |
mva111 | 0:52895a475820 | 163 | gm2_total++; |
mva111 | 0:52895a475820 | 164 | mdet = 0; |
OliverKeller | 7:6a0958c2be7e | 165 | } |
OliverKeller | 7:6a0958c2be7e | 166 | |
mva111 | 0:52895a475820 | 167 | // high voltage software monitors |
OliverKeller | 7:6a0958c2be7e | 168 | void hv1monitor_(void) |
OliverKeller | 7:6a0958c2be7e | 169 | { |
OliverKeller | 7:6a0958c2be7e | 170 | if(hv1.measure()) { |
OliverKeller | 7:6a0958c2be7e | 171 | if(v1 - hv1.get_voltage() > 100) { |
OliverKeller | 7:6a0958c2be7e | 172 | hv1.shutdown(); //unusual voltage drop detected |
OliverKeller | 7:6a0958c2be7e | 173 | } |
OliverKeller | 7:6a0958c2be7e | 174 | } else { |
OliverKeller | 7:6a0958c2be7e | 175 | hv1.shutdown(); |
OliverKeller | 7:6a0958c2be7e | 176 | } |
mva111 | 0:52895a475820 | 177 | v1 = hv1.get_voltage(); |
OliverKeller | 7:6a0958c2be7e | 178 | } |
mva111 | 0:52895a475820 | 179 | |
OliverKeller | 7:6a0958c2be7e | 180 | void hv2monitor_(void) |
OliverKeller | 7:6a0958c2be7e | 181 | { |
OliverKeller | 7:6a0958c2be7e | 182 | if(hv2.measure()) { |
OliverKeller | 7:6a0958c2be7e | 183 | if(v2 - hv2.get_voltage() > 100) { |
OliverKeller | 7:6a0958c2be7e | 184 | hv2.shutdown(); //unusual voltage drop detected |
OliverKeller | 7:6a0958c2be7e | 185 | } |
OliverKeller | 7:6a0958c2be7e | 186 | } else { |
OliverKeller | 7:6a0958c2be7e | 187 | hv2.shutdown(); |
OliverKeller | 7:6a0958c2be7e | 188 | } |
mva111 | 0:52895a475820 | 189 | v2 = hv2.get_voltage(); |
OliverKeller | 7:6a0958c2be7e | 190 | } |
mva111 | 0:52895a475820 | 191 | |
mva111 | 0:52895a475820 | 192 | //discarding older items if buffer gets too big |
OliverKeller | 7:6a0958c2be7e | 193 | //void memory_checker_(void) |
OliverKeller | 7:6a0958c2be7e | 194 | //{ |
OliverKeller | 7:6a0958c2be7e | 195 | // if ( detections.size() > (DETECTION_MEMORY_LIMIT - (DETECTION_MEMORY_LIMIT/8)) ) { |
OliverKeller | 7:6a0958c2be7e | 196 | // while ( detections.size() > (DETECTION_MEMORY_LIMIT - (DETECTION_MEMORY_LIMIT/4)) ) { |
OliverKeller | 7:6a0958c2be7e | 197 | // detections.pop(); |
OliverKeller | 7:6a0958c2be7e | 198 | // } |
OliverKeller | 7:6a0958c2be7e | 199 | // } |
OliverKeller | 7:6a0958c2be7e | 200 | //} |
mva111 | 0:52895a475820 | 201 | |
OliverKeller | 7:6a0958c2be7e | 202 | char* itoa(int value, char* result, int base) |
OliverKeller | 7:6a0958c2be7e | 203 | { |
OliverKeller | 7:6a0958c2be7e | 204 | // check that the base if valid |
OliverKeller | 7:6a0958c2be7e | 205 | if ( base < 2 || base > 36 ) { |
OliverKeller | 7:6a0958c2be7e | 206 | *result = '\0'; |
OliverKeller | 7:6a0958c2be7e | 207 | return result; |
OliverKeller | 7:6a0958c2be7e | 208 | } |
OliverKeller | 7:6a0958c2be7e | 209 | |
OliverKeller | 7:6a0958c2be7e | 210 | char* ptr = result, *ptr1 = result, tmp_char; |
OliverKeller | 7:6a0958c2be7e | 211 | int tmp_value; |
OliverKeller | 7:6a0958c2be7e | 212 | |
OliverKeller | 7:6a0958c2be7e | 213 | do { |
OliverKeller | 7:6a0958c2be7e | 214 | tmp_value = value; |
OliverKeller | 7:6a0958c2be7e | 215 | value /= base; |
OliverKeller | 7:6a0958c2be7e | 216 | *ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz"[35 + (tmp_value - value * base)]; |
OliverKeller | 7:6a0958c2be7e | 217 | } while ( value ); |
OliverKeller | 7:6a0958c2be7e | 218 | |
OliverKeller | 7:6a0958c2be7e | 219 | // Apply negative sign |
OliverKeller | 7:6a0958c2be7e | 220 | if ( tmp_value < 0 ) |
OliverKeller | 7:6a0958c2be7e | 221 | *ptr++ = '-'; |
OliverKeller | 7:6a0958c2be7e | 222 | *ptr-- = '\0'; |
OliverKeller | 7:6a0958c2be7e | 223 | |
OliverKeller | 7:6a0958c2be7e | 224 | while ( ptr1 < ptr ) { |
OliverKeller | 7:6a0958c2be7e | 225 | tmp_char = *ptr; |
OliverKeller | 7:6a0958c2be7e | 226 | *ptr-- = *ptr1; |
OliverKeller | 7:6a0958c2be7e | 227 | *ptr1++ = tmp_char; |
OliverKeller | 7:6a0958c2be7e | 228 | } |
OliverKeller | 7:6a0958c2be7e | 229 | |
OliverKeller | 7:6a0958c2be7e | 230 | return result; |
OliverKeller | 7:6a0958c2be7e | 231 | } |
OliverKeller | 7:6a0958c2be7e | 232 | |
OliverKeller | 7:6a0958c2be7e | 233 | int main() |
OliverKeller | 7:6a0958c2be7e | 234 | { |
OliverKeller | 7:6a0958c2be7e | 235 | //start main timer |
OliverKeller | 7:6a0958c2be7e | 236 | pc.baud(230400); |
OliverKeller | 7:6a0958c2be7e | 237 | main_t.start(); |
OliverKeller | 7:6a0958c2be7e | 238 | LcdPins myPins; |
OliverKeller | 7:6a0958c2be7e | 239 | |
OliverKeller | 7:6a0958c2be7e | 240 | myPins.rst = PA_6; |
OliverKeller | 7:6a0958c2be7e | 241 | myPins.sce = PA_4; |
OliverKeller | 7:6a0958c2be7e | 242 | myPins.dc = PB_4; |
OliverKeller | 7:6a0958c2be7e | 243 | myPins.mosi = PA_7;//SPI_MOSI; |
OliverKeller | 7:6a0958c2be7e | 244 | myPins.miso = NC; |
OliverKeller | 7:6a0958c2be7e | 245 | myPins.sclk = PA_5;//SPI_SCK; |
mva111 | 0:52895a475820 | 246 | |
OliverKeller | 7:6a0958c2be7e | 247 | // Start the LCD |
OliverKeller | 7:6a0958c2be7e | 248 | NokiaLcd myLcd( myPins ); |
OliverKeller | 7:6a0958c2be7e | 249 | myLcd.InitLcd(); // LCD is reset and DDRAM is cleared |
OliverKeller | 7:6a0958c2be7e | 250 | myLcd.DrawString("MUON HUNTER V2"); |
OliverKeller | 7:6a0958c2be7e | 251 | myLcd.SetXY(0,1); |
OliverKeller | 7:6a0958c2be7e | 252 | myLcd.DrawString("TIME "); |
OliverKeller | 7:6a0958c2be7e | 253 | myLcd.SetXY(0,3); |
OliverKeller | 7:6a0958c2be7e | 254 | myLcd.DrawString("MUON COUNT"); |
OliverKeller | 7:6a0958c2be7e | 255 | myLcd.SetXY(0,4); |
OliverKeller | 7:6a0958c2be7e | 256 | myLcd.DrawString("GM1 COUNT"); |
OliverKeller | 7:6a0958c2be7e | 257 | myLcd.SetXY(0,5); |
OliverKeller | 7:6a0958c2be7e | 258 | myLcd.DrawString("GM2 COUNT"); |
OliverKeller | 7:6a0958c2be7e | 259 | |
OliverKeller | 7:6a0958c2be7e | 260 | hv1.set_frequency(f1); |
OliverKeller | 7:6a0958c2be7e | 261 | hv2.set_frequency(f2); |
OliverKeller | 7:6a0958c2be7e | 262 | GM1.fall(&GM1_hit); |
OliverKeller | 7:6a0958c2be7e | 263 | GM2.fall(&GM2_hit); |
mva111 | 0:52895a475820 | 264 | |
OliverKeller | 7:6a0958c2be7e | 265 | //tickers to monitor the high voltage |
OliverKeller | 7:6a0958c2be7e | 266 | hv1monitor.attach(&hv1monitor_, 0.1); |
OliverKeller | 7:6a0958c2be7e | 267 | hv2monitor.attach(&hv2monitor_, 0.1); |
OliverKeller | 7:6a0958c2be7e | 268 | |
OliverKeller | 7:6a0958c2be7e | 269 | char number[10]; |
OliverKeller | 7:6a0958c2be7e | 270 | |
OliverKeller | 7:6a0958c2be7e | 271 | //ticker to monitor memory usage |
OliverKeller | 7:6a0958c2be7e | 272 | //memory_checker.attach(&memory_checker_, 0.2); |
OliverKeller | 7:6a0958c2be7e | 273 | while(1) { |
mva111 | 4:87037e41c888 | 274 | |
OliverKeller | 7:6a0958c2be7e | 275 | myLcd.SetXY(5*6,1); |
OliverKeller | 7:6a0958c2be7e | 276 | unsigned int seconds = (int) main_t.read(); |
OliverKeller | 7:6a0958c2be7e | 277 | //int minutes = (seconds/60); |
OliverKeller | 7:6a0958c2be7e | 278 | if (seconds >= 60) { |
OliverKeller | 7:6a0958c2be7e | 279 | main_t.reset(); |
OliverKeller | 7:6a0958c2be7e | 280 | minutes++; |
OliverKeller | 7:6a0958c2be7e | 281 | } |
OliverKeller | 7:6a0958c2be7e | 282 | if (minutes < 10) |
OliverKeller | 7:6a0958c2be7e | 283 | myLcd.DrawChar('0'); |
OliverKeller | 7:6a0958c2be7e | 284 | itoa(minutes, number, 10); |
OliverKeller | 7:6a0958c2be7e | 285 | myLcd.DrawString(number); |
OliverKeller | 7:6a0958c2be7e | 286 | myLcd.DrawChar(':'); |
OliverKeller | 7:6a0958c2be7e | 287 | if ((seconds%60) < 10) |
OliverKeller | 7:6a0958c2be7e | 288 | myLcd.DrawChar('0'); |
OliverKeller | 7:6a0958c2be7e | 289 | itoa(seconds%60, number,10); |
OliverKeller | 7:6a0958c2be7e | 290 | myLcd.DrawString(number); |
OliverKeller | 7:6a0958c2be7e | 291 | |
OliverKeller | 7:6a0958c2be7e | 292 | myLcd.SetXY(11*6,3); |
OliverKeller | 7:6a0958c2be7e | 293 | itoa(muon_total, number, 10); |
OliverKeller | 7:6a0958c2be7e | 294 | myLcd.DrawString(number); |
OliverKeller | 7:6a0958c2be7e | 295 | |
OliverKeller | 7:6a0958c2be7e | 296 | myLcd.SetXY(11*6,4); |
OliverKeller | 7:6a0958c2be7e | 297 | itoa(gm1_total, number, 10); |
OliverKeller | 7:6a0958c2be7e | 298 | myLcd.DrawString(number); |
OliverKeller | 7:6a0958c2be7e | 299 | |
OliverKeller | 7:6a0958c2be7e | 300 | myLcd.SetXY(11*6,5); |
OliverKeller | 7:6a0958c2be7e | 301 | itoa(gm2_total, number, 10); |
OliverKeller | 7:6a0958c2be7e | 302 | myLcd.DrawString(number); |
OliverKeller | 7:6a0958c2be7e | 303 | |
OliverKeller | 7:6a0958c2be7e | 304 | |
OliverKeller | 7:6a0958c2be7e | 305 | // while(!detections.empty()){ |
OliverKeller | 7:6a0958c2be7e | 306 | // Detection temp = detections.front(); |
OliverKeller | 7:6a0958c2be7e | 307 | // |
OliverKeller | 7:6a0958c2be7e | 308 | // pc.printf("Ch: %d, Time: %.2fs, V1: %.1fV, V2: %.1fV \n\r", temp.channel, temp.time, v1, v2); |
OliverKeller | 7:6a0958c2be7e | 309 | // pc.printf("Total GM1: %d, Total GM2: %d, Total Coinc: %d \n\r \n\r", gm1_total, gm2_total, muon_total); |
OliverKeller | 7:6a0958c2be7e | 310 | // detections.pop(); |
OliverKeller | 7:6a0958c2be7e | 311 | // } |
OliverKeller | 7:6a0958c2be7e | 312 | |
OliverKeller | 7:6a0958c2be7e | 313 | pc.printf("%.fs, GM1: %d, GM2: %d, Muons: %d \n\r", main_t.read(), gm1_total, gm2_total, muon_total); |
OliverKeller | 7:6a0958c2be7e | 314 | pc.printf("V1: %.1fV, V2: %.1fV \n\r", v1, v2); |
mva111 | 1:549e331aefab | 315 | wait(1); |
OliverKeller | 7:6a0958c2be7e | 316 | } |
mva111 | 0:52895a475820 | 317 | } |