This is the device firmware for the controlBoard in the DIY 3D Printable Raspberry Pi Raman Spectrometer. For more information please visit: http://hackaday.io/project/1279

Dependencies:   mbed

Committer:
flatcat
Date:
Fri Aug 15 10:38:50 2014 +0000
Revision:
0:14942e263231
http://hackaday.io/project/1279

Who changed what in which revision?

UserRevisionLine numberNew contents of line
flatcat 0:14942e263231 1 #include "mbed.h"
flatcat 0:14942e263231 2 #include "DS18B20.h"
flatcat 0:14942e263231 3 #include "OneWireDefs.h"
flatcat 0:14942e263231 4
flatcat 0:14942e263231 5 #define THERMOMETER DS18B20
flatcat 0:14942e263231 6
flatcat 0:14942e263231 7 #define msg_cuvette_tray 0x10
flatcat 0:14942e263231 8 #define msg_cuvette_temp 0x11
flatcat 0:14942e263231 9 #define msg_cuvette_status 0x12
flatcat 0:14942e263231 10 #define msg_cuvette_tray_pos 0x13
flatcat 0:14942e263231 11 #define msg_cuvette_pelt_status 0x14
flatcat 0:14942e263231 12 #define msg_cuvette_stepper 0x15
flatcat 0:14942e263231 13
flatcat 0:14942e263231 14 #define msg_filter_wheel 0x20
flatcat 0:14942e263231 15 #define msg_filter_pos 0x21
flatcat 0:14942e263231 16
flatcat 0:14942e263231 17 #define msg_laser_temp 0x30
flatcat 0:14942e263231 18 #define msg_laser_power_status 0x31
flatcat 0:14942e263231 19 #define msg_laser_ttl_status 0x32
flatcat 0:14942e263231 20 #define msg_laser_good_status 0x33
flatcat 0:14942e263231 21 #define msg_laser_color 0x34
flatcat 0:14942e263231 22 #define msg_uv_index 0x35
flatcat 0:14942e263231 23
flatcat 0:14942e263231 24 #define msg_ccd_pelt_status 0x40
flatcat 0:14942e263231 25
flatcat 0:14942e263231 26 #define msg_shutter_servo_pos 0x50
flatcat 0:14942e263231 27 #define msg_shutter_status 0x51
flatcat 0:14942e263231 28
flatcat 0:14942e263231 29 #define msg_board_ID 0x60
flatcat 0:14942e263231 30 #define msg_board_serial 0x61
flatcat 0:14942e263231 31 #define msg_board_status 0x62
flatcat 0:14942e263231 32 #define msg_board_time 0x63
flatcat 0:14942e263231 33 #define msg_board_model 0x64
flatcat 0:14942e263231 34 #define msg_board_version 0x65
flatcat 0:14942e263231 35 #define req_reboot 0x66
flatcat 0:14942e263231 36
flatcat 0:14942e263231 37 #define msg_ambient_temp 0x70
flatcat 0:14942e263231 38 #define req_baro 0x71
flatcat 0:14942e263231 39 #define req_humidity 0x72
flatcat 0:14942e263231 40
flatcat 0:14942e263231 41 #define cmd_cuvette 0xA0
flatcat 0:14942e263231 42 #define tray_open 0xA1
flatcat 0:14942e263231 43 #define tray_close 0xA2
flatcat 0:14942e263231 44 #define cuvette_peltier 0xA3
flatcat 0:14942e263231 45 #define req_cuvette_status 0xA4
flatcat 0:14942e263231 46 #define req_cuvette_temp 0xA5
flatcat 0:14942e263231 47 #define req_cuvette_pelt_status 0xA6
flatcat 0:14942e263231 48 #define req_cuvette_tray_pos 0xA7
flatcat 0:14942e263231 49
flatcat 0:14942e263231 50 #define cmd_filter_wheel 0xB0
flatcat 0:14942e263231 51 #define filter_select 0xB1
flatcat 0:14942e263231 52 #define filter_reset 0xB2
flatcat 0:14942e263231 53 #define req_filter_ID 0xB3
flatcat 0:14942e263231 54 #define req_filter_status 0xB4
flatcat 0:14942e263231 55 #define req_filter_count 0xB5
flatcat 0:14942e263231 56 #define req_filter_pos 0xB6
flatcat 0:14942e263231 57
flatcat 0:14942e263231 58 #define cmd_laser 0xC0
flatcat 0:14942e263231 59 #define laser_power 0xC1
flatcat 0:14942e263231 60 #define laser_ttl 0xC2
flatcat 0:14942e263231 61 #define req_laser_good_status 0xC3
flatcat 0:14942e263231 62 #define req_laser_color 0xC4
flatcat 0:14942e263231 63 #define req_laser_temp 0xC5
flatcat 0:14942e263231 64 #define req_uv_index 0xC6
flatcat 0:14942e263231 65
flatcat 0:14942e263231 66 #define cmd_ccd_peltier 0xD0
flatcat 0:14942e263231 67 #define cmd_ccd_pelt_power 0xD1
flatcat 0:14942e263231 68 #define cmd_cuvette_peltier 0xD2
flatcat 0:14942e263231 69 #define cmd_cuvette_pelt_power 0xD3
flatcat 0:14942e263231 70 #define req_pelt_cool 0xD4
flatcat 0:14942e263231 71 #define req_pelt_heat 0xD5
flatcat 0:14942e263231 72 #define req_pelt_off 0xD6
flatcat 0:14942e263231 73
flatcat 0:14942e263231 74 #define cmd_shutter_servo 0xE0
flatcat 0:14942e263231 75 #define shutter_open 0xE1
flatcat 0:14942e263231 76 #define shutter_close 0xE2
flatcat 0:14942e263231 77 #define shutter_deflect 0xE3
flatcat 0:14942e263231 78 #define shutter_alternate 0xE4
flatcat 0:14942e263231 79 #define req_shutter_state 0xE5
flatcat 0:14942e263231 80 #define req_shutter_status 0xE6
flatcat 0:14942e263231 81
flatcat 0:14942e263231 82 #define packet_start 0xF0
flatcat 0:14942e263231 83 #define packet_ack 0xF1
flatcat 0:14942e263231 84 #define packet_flag 0xF2
flatcat 0:14942e263231 85 #define packet_end 0xF3
flatcat 0:14942e263231 86 #define packet_err 0xF4
flatcat 0:14942e263231 87 #define cmd_err 0xF5
flatcat 0:14942e263231 88 #define req_err 0xF6
flatcat 0:14942e263231 89 #define brd_err 0xF7
flatcat 0:14942e263231 90
flatcat 0:14942e263231 91 #define env_err 0x80
flatcat 0:14942e263231 92 #define cuvette_err 0x81
flatcat 0:14942e263231 93 #define laser_err 0x82
flatcat 0:14942e263231 94 #define filter_err 0x83
flatcat 0:14942e263231 95 #define ccd_pelt_err 0x84
flatcat 0:14942e263231 96 #define cuvette_pelt_err 0x85
flatcat 0:14942e263231 97 #define shutter_err 0x86
flatcat 0:14942e263231 98 #define board_err 0x87
flatcat 0:14942e263231 99
flatcat 0:14942e263231 100 DigitalIn button(USER_BUTTON);
flatcat 0:14942e263231 101 DigitalOut grnLED(LED1);
flatcat 0:14942e263231 102 DigitalOut cuvette_IN1(PC_14);
flatcat 0:14942e263231 103 DigitalOut cuvette_IN2(PC_15);
flatcat 0:14942e263231 104 DigitalOut cuvette_IN3(PH_0);
flatcat 0:14942e263231 105 DigitalOut cuvette_IN4(PH_1);
flatcat 0:14942e263231 106 DigitalOut filter_IN1(PA_4);
flatcat 0:14942e263231 107 DigitalOut filter_IN2(PB_0);
flatcat 0:14942e263231 108 DigitalOut filter_IN3(PC_1);
flatcat 0:14942e263231 109 DigitalOut filter_IN4(PC_0);
flatcat 0:14942e263231 110 PwmOut cuvettePeltA(PB_13); // in4
flatcat 0:14942e263231 111 PwmOut cuvettePeltB(PB_14); // in3
flatcat 0:14942e263231 112 PwmOut ccdPeltA(PB_1); // in2
flatcat 0:14942e263231 113 PwmOut ccdPeltB(PB_15); // in1
flatcat 0:14942e263231 114 AnalogIn peltCurrent(PC_5);
flatcat 0:14942e263231 115
flatcat 0:14942e263231 116 const int mDelay=1;
flatcat 0:14942e263231 117 double temp;
flatcat 0:14942e263231 118 int z;
flatcat 0:14942e263231 119 int trayOpen;
flatcat 0:14942e263231 120 THERMOMETER device(PC_8);
flatcat 0:14942e263231 121 Serial raspi(USBTX, USBRX);
flatcat 0:14942e263231 122
flatcat 0:14942e263231 123 typedef union bytes {
flatcat 0:14942e263231 124 double d ;
flatcat 0:14942e263231 125 char c[8];
flatcat 0:14942e263231 126 } bytes;
flatcat 0:14942e263231 127
flatcat 0:14942e263231 128 void printDoubleToHex(double d)
flatcat 0:14942e263231 129 {
flatcat 0:14942e263231 130 bytes b;
flatcat 0:14942e263231 131 b.d = d;
flatcat 0:14942e263231 132 raspi.printf("%f -> %x %x %x %x %x %x %x %x\r\n", b.d, b.c[0], b.c[1], b.c[2], b.c[3], b.c[4], b.c[5], b.c[6], b.c[7]);
flatcat 0:14942e263231 133 }
flatcat 0:14942e263231 134
flatcat 0:14942e263231 135 void printHexToDouble(char *arr)
flatcat 0:14942e263231 136 {
flatcat 0:14942e263231 137 bytes b;
flatcat 0:14942e263231 138 for (int i=0; i<8; ++i)
flatcat 0:14942e263231 139 b.c[i] = arr[i];
flatcat 0:14942e263231 140 raspi.printf("received hex: %x %x %x %x %x %x %x %x \r\n", b.c[0], b.c[1], b.c[2], b.c[3], b.c[4], b.c[5], b.c[6], b.c[7]);
flatcat 0:14942e263231 141 raspi.printf("convert to: %f\r\n", b.d);
flatcat 0:14942e263231 142 }
flatcat 0:14942e263231 143
flatcat 0:14942e263231 144 void readTemp(int deviceNum)
flatcat 0:14942e263231 145 {
flatcat 0:14942e263231 146 temp = device.readTemperature(deviceNum);
flatcat 0:14942e263231 147 if (deviceNum == 0) {
flatcat 0:14942e263231 148 // raspi.printf("Cuvette Temperature: %f\r\n", temp);
flatcat 0:14942e263231 149 // const char begin[2]= {packet_flag, packet_start};
flatcat 0:14942e263231 150 // raspi.printf(begin);
flatcat 0:14942e263231 151 printDoubleToHex(temp);
flatcat 0:14942e263231 152 // const char stop[2]= {packet_flag, packet_end};
flatcat 0:14942e263231 153 // raspi.printf(stop);
flatcat 0:14942e263231 154 }
flatcat 0:14942e263231 155 if (deviceNum == 1) {
flatcat 0:14942e263231 156 // raspi.printf("Laser Emitter Temperature: %f\r\n", temp);
flatcat 0:14942e263231 157 // const char begin[2]= {packet_flag, packet_start};
flatcat 0:14942e263231 158 // raspi.printf(begin);
flatcat 0:14942e263231 159 printDoubleToHex(temp);
flatcat 0:14942e263231 160 // const char stop[2]= {packet_flag, packet_end};
flatcat 0:14942e263231 161 // raspi.printf(stop);
flatcat 0:14942e263231 162 }
flatcat 0:14942e263231 163 // raspi.printf("Device %d is %f",deviceNum, temp);
flatcat 0:14942e263231 164 wait(0.5);
flatcat 0:14942e263231 165 }
flatcat 0:14942e263231 166
flatcat 0:14942e263231 167 int openTray()
flatcat 0:14942e263231 168 {
flatcat 0:14942e263231 169 while (z < 500) {
flatcat 0:14942e263231 170 z++;
flatcat 0:14942e263231 171 grnLED = 1;
flatcat 0:14942e263231 172 wait_ms(1);
flatcat 0:14942e263231 173 cuvette_IN1 = 0;
flatcat 0:14942e263231 174 cuvette_IN2= 0;
flatcat 0:14942e263231 175 cuvette_IN3= 0;
flatcat 0:14942e263231 176 cuvette_IN4= 1;
flatcat 0:14942e263231 177 wait_ms(mDelay);
flatcat 0:14942e263231 178
flatcat 0:14942e263231 179 cuvette_IN1= 0;
flatcat 0:14942e263231 180 cuvette_IN2= 0;
flatcat 0:14942e263231 181 cuvette_IN3= 1;
flatcat 0:14942e263231 182 cuvette_IN4= 1;
flatcat 0:14942e263231 183 wait_ms(mDelay);
flatcat 0:14942e263231 184
flatcat 0:14942e263231 185 cuvette_IN1= 0;
flatcat 0:14942e263231 186 cuvette_IN2= 0;
flatcat 0:14942e263231 187 cuvette_IN3= 1;
flatcat 0:14942e263231 188 cuvette_IN4= 0;
flatcat 0:14942e263231 189 wait_ms(mDelay);
flatcat 0:14942e263231 190
flatcat 0:14942e263231 191 cuvette_IN1= 0;
flatcat 0:14942e263231 192 cuvette_IN2= 1;
flatcat 0:14942e263231 193 cuvette_IN3= 1;
flatcat 0:14942e263231 194 cuvette_IN4= 0;
flatcat 0:14942e263231 195 wait_ms(mDelay);
flatcat 0:14942e263231 196
flatcat 0:14942e263231 197 cuvette_IN1= 0;
flatcat 0:14942e263231 198 cuvette_IN2= 1;
flatcat 0:14942e263231 199 cuvette_IN3= 0;
flatcat 0:14942e263231 200 cuvette_IN4= 0;
flatcat 0:14942e263231 201 wait_ms(mDelay);
flatcat 0:14942e263231 202
flatcat 0:14942e263231 203 cuvette_IN1= 1;
flatcat 0:14942e263231 204 cuvette_IN2= 1;
flatcat 0:14942e263231 205 cuvette_IN3= 0;
flatcat 0:14942e263231 206 cuvette_IN4= 0;
flatcat 0:14942e263231 207 wait_ms(mDelay);
flatcat 0:14942e263231 208
flatcat 0:14942e263231 209 cuvette_IN1= 1;
flatcat 0:14942e263231 210 cuvette_IN2= 0;
flatcat 0:14942e263231 211 cuvette_IN3= 0;
flatcat 0:14942e263231 212 cuvette_IN4= 0;
flatcat 0:14942e263231 213 wait_ms(mDelay);
flatcat 0:14942e263231 214
flatcat 0:14942e263231 215 cuvette_IN1= 1;
flatcat 0:14942e263231 216 cuvette_IN2= 0;
flatcat 0:14942e263231 217 cuvette_IN3= 0;
flatcat 0:14942e263231 218 cuvette_IN4= 1;
flatcat 0:14942e263231 219 wait_ms(mDelay);
flatcat 0:14942e263231 220
flatcat 0:14942e263231 221 cuvette_IN1= 0;
flatcat 0:14942e263231 222 cuvette_IN2= 0;
flatcat 0:14942e263231 223 cuvette_IN3= 0;
flatcat 0:14942e263231 224 cuvette_IN4= 0;
flatcat 0:14942e263231 225 }
flatcat 0:14942e263231 226 trayOpen = 1;
flatcat 0:14942e263231 227 z = 0;
flatcat 0:14942e263231 228 return(0);
flatcat 0:14942e263231 229 }
flatcat 0:14942e263231 230
flatcat 0:14942e263231 231 int closeTray()
flatcat 0:14942e263231 232 {
flatcat 0:14942e263231 233 while (z < 500) {
flatcat 0:14942e263231 234 z++;
flatcat 0:14942e263231 235 grnLED = 1;
flatcat 0:14942e263231 236 wait_ms(1);
flatcat 0:14942e263231 237 cuvette_IN1= 1;
flatcat 0:14942e263231 238 cuvette_IN2= 0;
flatcat 0:14942e263231 239 cuvette_IN3= 0;
flatcat 0:14942e263231 240 cuvette_IN4= 1;
flatcat 0:14942e263231 241 wait_ms(mDelay);
flatcat 0:14942e263231 242
flatcat 0:14942e263231 243 cuvette_IN1= 1;
flatcat 0:14942e263231 244 cuvette_IN2= 0;
flatcat 0:14942e263231 245 cuvette_IN3= 0;
flatcat 0:14942e263231 246 cuvette_IN4= 0;
flatcat 0:14942e263231 247 wait_ms(mDelay);
flatcat 0:14942e263231 248
flatcat 0:14942e263231 249 cuvette_IN1= 1;
flatcat 0:14942e263231 250 cuvette_IN2= 1;
flatcat 0:14942e263231 251 cuvette_IN3= 0;
flatcat 0:14942e263231 252 cuvette_IN4= 0;
flatcat 0:14942e263231 253 wait_ms(mDelay);
flatcat 0:14942e263231 254
flatcat 0:14942e263231 255 cuvette_IN1= 0;
flatcat 0:14942e263231 256 cuvette_IN2= 1;
flatcat 0:14942e263231 257 cuvette_IN3= 0;
flatcat 0:14942e263231 258 cuvette_IN4= 0;
flatcat 0:14942e263231 259 wait_ms(mDelay);
flatcat 0:14942e263231 260
flatcat 0:14942e263231 261 cuvette_IN1= 0;
flatcat 0:14942e263231 262 cuvette_IN2= 1;
flatcat 0:14942e263231 263 cuvette_IN3= 1;
flatcat 0:14942e263231 264 cuvette_IN4= 0;
flatcat 0:14942e263231 265 wait_ms(mDelay);
flatcat 0:14942e263231 266
flatcat 0:14942e263231 267 cuvette_IN1= 0;
flatcat 0:14942e263231 268 cuvette_IN2= 0;
flatcat 0:14942e263231 269 cuvette_IN3= 1;
flatcat 0:14942e263231 270 cuvette_IN4= 0;
flatcat 0:14942e263231 271 wait_ms(mDelay);
flatcat 0:14942e263231 272
flatcat 0:14942e263231 273 cuvette_IN1= 0;
flatcat 0:14942e263231 274 cuvette_IN2= 0;
flatcat 0:14942e263231 275 cuvette_IN3= 1;
flatcat 0:14942e263231 276 cuvette_IN4= 1;
flatcat 0:14942e263231 277 wait_ms(mDelay);
flatcat 0:14942e263231 278
flatcat 0:14942e263231 279 cuvette_IN1= 0;
flatcat 0:14942e263231 280 cuvette_IN2= 0;
flatcat 0:14942e263231 281 cuvette_IN3= 0;
flatcat 0:14942e263231 282 cuvette_IN4= 1;
flatcat 0:14942e263231 283 wait_ms(mDelay);
flatcat 0:14942e263231 284
flatcat 0:14942e263231 285 cuvette_IN1= 0;
flatcat 0:14942e263231 286 cuvette_IN2= 0;
flatcat 0:14942e263231 287 cuvette_IN3= 0;
flatcat 0:14942e263231 288 cuvette_IN4= 0;
flatcat 0:14942e263231 289 }
flatcat 0:14942e263231 290 trayOpen = 0;
flatcat 0:14942e263231 291 z = 0;
flatcat 0:14942e263231 292 return(0);
flatcat 0:14942e263231 293 }
flatcat 0:14942e263231 294
flatcat 0:14942e263231 295 int filterForward()
flatcat 0:14942e263231 296 {
flatcat 0:14942e263231 297 while (z < 500) {
flatcat 0:14942e263231 298 z++;
flatcat 0:14942e263231 299 grnLED = 1;
flatcat 0:14942e263231 300 wait_ms(1);
flatcat 0:14942e263231 301 filter_IN1 = 0;
flatcat 0:14942e263231 302 filter_IN2= 0;
flatcat 0:14942e263231 303 filter_IN3= 0;
flatcat 0:14942e263231 304 filter_IN4= 1;
flatcat 0:14942e263231 305 wait_ms(mDelay);
flatcat 0:14942e263231 306
flatcat 0:14942e263231 307 filter_IN1= 0;
flatcat 0:14942e263231 308 filter_IN2= 0;
flatcat 0:14942e263231 309 filter_IN3= 1;
flatcat 0:14942e263231 310 filter_IN4= 1;
flatcat 0:14942e263231 311 wait_ms(mDelay);
flatcat 0:14942e263231 312
flatcat 0:14942e263231 313 filter_IN1= 0;
flatcat 0:14942e263231 314 filter_IN2= 0;
flatcat 0:14942e263231 315 filter_IN3= 1;
flatcat 0:14942e263231 316 filter_IN4= 0;
flatcat 0:14942e263231 317 wait_ms(mDelay);
flatcat 0:14942e263231 318
flatcat 0:14942e263231 319 filter_IN1= 0;
flatcat 0:14942e263231 320 filter_IN2= 1;
flatcat 0:14942e263231 321 filter_IN3= 1;
flatcat 0:14942e263231 322 filter_IN4= 0;
flatcat 0:14942e263231 323 wait_ms(mDelay);
flatcat 0:14942e263231 324
flatcat 0:14942e263231 325 filter_IN1= 0;
flatcat 0:14942e263231 326 filter_IN2= 1;
flatcat 0:14942e263231 327 filter_IN3= 0;
flatcat 0:14942e263231 328 filter_IN4= 0;
flatcat 0:14942e263231 329 wait_ms(mDelay);
flatcat 0:14942e263231 330
flatcat 0:14942e263231 331 filter_IN1= 1;
flatcat 0:14942e263231 332 filter_IN2= 1;
flatcat 0:14942e263231 333 filter_IN3= 0;
flatcat 0:14942e263231 334 filter_IN4= 0;
flatcat 0:14942e263231 335 wait_ms(mDelay);
flatcat 0:14942e263231 336
flatcat 0:14942e263231 337 filter_IN1= 1;
flatcat 0:14942e263231 338 filter_IN2= 0;
flatcat 0:14942e263231 339 filter_IN3= 0;
flatcat 0:14942e263231 340 filter_IN4= 0;
flatcat 0:14942e263231 341 wait_ms(mDelay);
flatcat 0:14942e263231 342
flatcat 0:14942e263231 343 filter_IN1= 1;
flatcat 0:14942e263231 344 filter_IN2= 0;
flatcat 0:14942e263231 345 filter_IN3= 0;
flatcat 0:14942e263231 346 filter_IN4= 1;
flatcat 0:14942e263231 347 wait_ms(mDelay);
flatcat 0:14942e263231 348
flatcat 0:14942e263231 349 filter_IN1= 0;
flatcat 0:14942e263231 350 filter_IN2= 0;
flatcat 0:14942e263231 351 filter_IN3= 0;
flatcat 0:14942e263231 352 filter_IN4= 0;
flatcat 0:14942e263231 353 }
flatcat 0:14942e263231 354 z = 0;
flatcat 0:14942e263231 355 return(0);
flatcat 0:14942e263231 356 }
flatcat 0:14942e263231 357 int filterBack()
flatcat 0:14942e263231 358 {
flatcat 0:14942e263231 359 while (z < 500) {
flatcat 0:14942e263231 360 z++;
flatcat 0:14942e263231 361 grnLED = 0;
flatcat 0:14942e263231 362 wait_ms(1);
flatcat 0:14942e263231 363 filter_IN1= 1;
flatcat 0:14942e263231 364 filter_IN2= 0;
flatcat 0:14942e263231 365 filter_IN3= 0;
flatcat 0:14942e263231 366 filter_IN4= 1;
flatcat 0:14942e263231 367 wait_ms(mDelay);
flatcat 0:14942e263231 368
flatcat 0:14942e263231 369 filter_IN1= 1;
flatcat 0:14942e263231 370 filter_IN2= 0;
flatcat 0:14942e263231 371 filter_IN3= 0;
flatcat 0:14942e263231 372 filter_IN4= 0;
flatcat 0:14942e263231 373 wait_ms(mDelay);
flatcat 0:14942e263231 374
flatcat 0:14942e263231 375 filter_IN1= 1;
flatcat 0:14942e263231 376 filter_IN2= 1;
flatcat 0:14942e263231 377 filter_IN3= 0;
flatcat 0:14942e263231 378 filter_IN4= 0;
flatcat 0:14942e263231 379 wait_ms(mDelay);
flatcat 0:14942e263231 380
flatcat 0:14942e263231 381 filter_IN1= 0;
flatcat 0:14942e263231 382 filter_IN2= 1;
flatcat 0:14942e263231 383 filter_IN3= 0;
flatcat 0:14942e263231 384 filter_IN4= 0;
flatcat 0:14942e263231 385 wait_ms(mDelay);
flatcat 0:14942e263231 386
flatcat 0:14942e263231 387 filter_IN1= 0;
flatcat 0:14942e263231 388 filter_IN2= 1;
flatcat 0:14942e263231 389 filter_IN3= 1;
flatcat 0:14942e263231 390 filter_IN4= 0;
flatcat 0:14942e263231 391 wait_ms(mDelay);
flatcat 0:14942e263231 392
flatcat 0:14942e263231 393 filter_IN1= 0;
flatcat 0:14942e263231 394 filter_IN2= 0;
flatcat 0:14942e263231 395 filter_IN3= 1;
flatcat 0:14942e263231 396 filter_IN4= 0;
flatcat 0:14942e263231 397 wait_ms(mDelay);
flatcat 0:14942e263231 398
flatcat 0:14942e263231 399 filter_IN1= 0;
flatcat 0:14942e263231 400 filter_IN2= 0;
flatcat 0:14942e263231 401 filter_IN3= 1;
flatcat 0:14942e263231 402 filter_IN4= 1;
flatcat 0:14942e263231 403 wait_ms(mDelay);
flatcat 0:14942e263231 404
flatcat 0:14942e263231 405 filter_IN1= 0;
flatcat 0:14942e263231 406 filter_IN2= 0;
flatcat 0:14942e263231 407 filter_IN3= 0;
flatcat 0:14942e263231 408 filter_IN4= 1;
flatcat 0:14942e263231 409 wait_ms(mDelay);
flatcat 0:14942e263231 410
flatcat 0:14942e263231 411 filter_IN1= 0;
flatcat 0:14942e263231 412 filter_IN2= 0;
flatcat 0:14942e263231 413 filter_IN3= 0;
flatcat 0:14942e263231 414 filter_IN4= 0;
flatcat 0:14942e263231 415 }
flatcat 0:14942e263231 416 z = 0;
flatcat 0:14942e263231 417 return(0);
flatcat 0:14942e263231 418 }
flatcat 0:14942e263231 419
flatcat 0:14942e263231 420 int cuvettePeltCycle(){
flatcat 0:14942e263231 421 cuvettePeltA = 0;
flatcat 0:14942e263231 422 cuvettePeltB = 0;
flatcat 0:14942e263231 423 wait(3);
flatcat 0:14942e263231 424 cuvettePeltA = 1;
flatcat 0:14942e263231 425 cuvettePeltB = 1;
flatcat 0:14942e263231 426 wait(3);
flatcat 0:14942e263231 427 cuvettePeltA = 1;
flatcat 0:14942e263231 428 cuvettePeltB = 0;
flatcat 0:14942e263231 429 wait(3);
flatcat 0:14942e263231 430 cuvettePeltA = 0;
flatcat 0:14942e263231 431 cuvettePeltB = 1;
flatcat 0:14942e263231 432 wait(3);
flatcat 0:14942e263231 433 cuvettePeltA = 0;
flatcat 0:14942e263231 434 cuvettePeltB = 0;
flatcat 0:14942e263231 435 return 0;
flatcat 0:14942e263231 436 }
flatcat 0:14942e263231 437
flatcat 0:14942e263231 438 int err;
flatcat 0:14942e263231 439 char* command;
flatcat 0:14942e263231 440 int packetFlag = 0;
flatcat 0:14942e263231 441 int main()
flatcat 0:14942e263231 442 {
flatcat 0:14942e263231 443 trayOpen = 0;
flatcat 0:14942e263231 444 raspi.baud(921600);
flatcat 0:14942e263231 445
flatcat 0:14942e263231 446 cuvettePeltCycle();
flatcat 0:14942e263231 447
flatcat 0:14942e263231 448 wait(10);
flatcat 0:14942e263231 449 // raspi.printf("meridianScientific_ramanSpectrometer_controlBoard_V0\r\n");
flatcat 0:14942e263231 450
flatcat 0:14942e263231 451 while (!device.initialize()); // keep calling until it works
flatcat 0:14942e263231 452
flatcat 0:14942e263231 453 int deviceCount = device.getDeviceCount();
flatcat 0:14942e263231 454 // raspi.printf("Located %d sensors\n\r",deviceCount);
flatcat 0:14942e263231 455
flatcat 0:14942e263231 456 z = 0;
flatcat 0:14942e263231 457 device.setResolution(twelveBit);
flatcat 0:14942e263231 458 while(1) {
flatcat 0:14942e263231 459 // for (int i = 0; i < deviceCount; i++) {
flatcat 0:14942e263231 460 // readTemp(i);
flatcat 0:14942e263231 461 // }
flatcat 0:14942e263231 462 if (raspi.readable()) { // check if serial port is reaadable
flatcat 0:14942e263231 463 switch (raspi.getc()) { // retrieve a character from serial
flatcat 0:14942e263231 464 case packet_start: // case for packet start flag
flatcat 0:14942e263231 465 switch (raspi.getc()) { // set condition for listening to another character
flatcat 0:14942e263231 466 case packet_flag: // case for packet flag
flatcat 0:14942e263231 467 packetFlag = 1; // turn the flag on
flatcat 0:14942e263231 468 while (packetFlag == 1) { // start a loop that runs while the flag is on
flatcat 0:14942e263231 469 switch (raspi.getc()) { // set another condition for listening to another character
flatcat 0:14942e263231 470 case cmd_laser: // case for cmd_laser
flatcat 0:14942e263231 471 grnLED = 1; // turn the led on
flatcat 0:14942e263231 472 raspi.printf("%x", cmd_laser); // return cmd_laser to the raspi
flatcat 0:14942e263231 473 switch (raspi.getc()) { // set another condition for listening to another character
flatcat 0:14942e263231 474 case req_laser_temp: // case for req_laser_temp
flatcat 0:14942e263231 475 raspi.printf("%x\r\n", req_laser_temp); // return req_laser_temp to the raspi
flatcat 0:14942e263231 476 readTemp(0); // read the temperature for device 0 which is the laser temp sensor
flatcat 0:14942e263231 477 grnLED = 0; // turn led off
flatcat 0:14942e263231 478 continue; // continue through loop
flatcat 0:14942e263231 479 default: // default if nothing matches
flatcat 0:14942e263231 480 break; // break from loop
flatcat 0:14942e263231 481 }
flatcat 0:14942e263231 482 case cmd_cuvette: // case for cmd_cuvette
flatcat 0:14942e263231 483 grnLED = 1; // turn led on
flatcat 0:14942e263231 484 raspi.printf("%x", cmd_cuvette); // return cmd_cuvette to raspi
flatcat 0:14942e263231 485 switch (raspi.getc()) { // set condition for listening to another character
flatcat 0:14942e263231 486 case req_cuvette_temp: // case for req_cuvette_temp
flatcat 0:14942e263231 487 raspi.printf("%x\r\n", req_cuvette_temp); // return req_cuvette_temp to raspi
flatcat 0:14942e263231 488 readTemp(1); // read the temperature for device 1 which is the cuvette temp sensor
flatcat 0:14942e263231 489 grnLED = 0; // turn the led off
flatcat 0:14942e263231 490 continue; // continue through the loop
flatcat 0:14942e263231 491 case tray_open: // case for tray_open
flatcat 0:14942e263231 492 raspi.printf("%x\r\n", tray_open); // return tray_open to raspi
flatcat 0:14942e263231 493 if (trayOpen == 0) { // check to see if the tray is closed
flatcat 0:14942e263231 494 openTray(); // if not, open tray
flatcat 0:14942e263231 495 } else { // otherwise
flatcat 0:14942e263231 496 raspi.printf("%x\r\n", cuvette_err); // send a cuvette error to the raspi
flatcat 0:14942e263231 497 }
flatcat 0:14942e263231 498 grnLED = 0; // turn led off
flatcat 0:14942e263231 499 continue; // continue through the loop
flatcat 0:14942e263231 500 case tray_close: // case for tray close
flatcat 0:14942e263231 501 raspi.printf("%x\r\n", tray_close); // return tray_close to raspi
flatcat 0:14942e263231 502 if (trayOpen == 1) { // check to see if tray is open
flatcat 0:14942e263231 503 closeTray(); // if not, close tray
flatcat 0:14942e263231 504 } else { // otherwise
flatcat 0:14942e263231 505 raspi.printf("%x\r\n", cuvette_err); // send a cuvette error to the raspi
flatcat 0:14942e263231 506 }
flatcat 0:14942e263231 507 grnLED = 0; // turn led off
flatcat 0:14942e263231 508 continue; // continue through loop
flatcat 0:14942e263231 509 default: // default if nothing matches
flatcat 0:14942e263231 510 break; // break from loop
flatcat 0:14942e263231 511 }
flatcat 0:14942e263231 512 case cmd_filter_wheel: // case for cmd_filter_wheel
flatcat 0:14942e263231 513 grnLED = 1; // turn led on
flatcat 0:14942e263231 514 raspi.printf("%x", cmd_filter_wheel); // return cmd_filter_wheel to raspi
flatcat 0:14942e263231 515 switch (raspi.getc()) { // set condidition for listening to another character
flatcat 0:14942e263231 516 case filter_select: // case for filter_select
flatcat 0:14942e263231 517 raspi.printf("%x\r\n", filter_select); // return filter_select to raspi
flatcat 0:14942e263231 518 filterForward(); // move filter wheel forward one filter
flatcat 0:14942e263231 519 filterBack(); // move filter wheel reverse one filter (this is just to test the commands)
flatcat 0:14942e263231 520 grnLED = 0; // turn led off
flatcat 0:14942e263231 521 continue; // continue through loop
flatcat 0:14942e263231 522 default: // default if nothing matches
flatcat 0:14942e263231 523 break; // break from loop
flatcat 0:14942e263231 524 }
flatcat 0:14942e263231 525 case cmd_cuvette_peltier:
flatcat 0:14942e263231 526 grnLED = 1; // turn led on
flatcat 0:14942e263231 527 raspi.printf("%x", cmd_cuvette_peltier); // return cmd_ccd_peltier to raspi
flatcat 0:14942e263231 528 switch (raspi.getc()) { // set condidition for listening to another character
flatcat 0:14942e263231 529 case cmd_cuvette_pelt_power:
flatcat 0:14942e263231 530 switch (raspi.getc()) { // set condidition for listening to another character
flatcat 0:14942e263231 531 case 0x00: // case for cmd_ccd_peltier OFF
flatcat 0:14942e263231 532 raspi.printf("%x\r\n", cmd_cuvette_pelt_power); // return filter_select to raspi
flatcat 0:14942e263231 533 cuvettePeltA = 0; // set PWM A to zero
flatcat 0:14942e263231 534 cuvettePeltB = 0; // set PWM B to zero
flatcat 0:14942e263231 535 grnLED = 0; // turn led off
flatcat 0:14942e263231 536 break;
flatcat 0:14942e263231 537 case 0x01: // case for cmd_cuvette_peltier COOL
flatcat 0:14942e263231 538 raspi.printf("%x\r\n", cmd_cuvette_pelt_power); // return filter_select to raspi
flatcat 0:14942e263231 539 cuvettePeltA = 0.5; // set PWM A to 0.5
flatcat 0:14942e263231 540 cuvettePeltB = 0; // set PWM B to zero
flatcat 0:14942e263231 541 grnLED = 0; // turn led off
flatcat 0:14942e263231 542 break;
flatcat 0:14942e263231 543 case 0x02: // case for cmd_cuvette_peltier HEAT
flatcat 0:14942e263231 544 raspi.printf("%x\r\n", cmd_cuvette_pelt_power); // return filter_select to raspi
flatcat 0:14942e263231 545 cuvettePeltA = 0; // set PWM A to 0.5
flatcat 0:14942e263231 546 cuvettePeltB = 0.5; // set PWM B to zero
flatcat 0:14942e263231 547 grnLED = 0; // turn led off
flatcat 0:14942e263231 548 break;
flatcat 0:14942e263231 549 default:
flatcat 0:14942e263231 550 break;
flatcat 0:14942e263231 551 }
flatcat 0:14942e263231 552 continue;
flatcat 0:14942e263231 553 default:
flatcat 0:14942e263231 554 break;
flatcat 0:14942e263231 555 }
flatcat 0:14942e263231 556 case cmd_ccd_peltier:
flatcat 0:14942e263231 557 grnLED = 1; // turn led on
flatcat 0:14942e263231 558 raspi.printf("%x", cmd_ccd_peltier); // return cmd_ccd_peltier to raspi
flatcat 0:14942e263231 559 switch (raspi.getc()) { // set condidition for listening to another character
flatcat 0:14942e263231 560 case cmd_ccd_pelt_power:
flatcat 0:14942e263231 561 switch (raspi.getc()) { // set condidition for listening to another character
flatcat 0:14942e263231 562 case 0x00: // case for cmd_ccd_peltier OFF
flatcat 0:14942e263231 563 raspi.printf("%x\r\n", cmd_ccd_pelt_power); // return filter_select to raspi
flatcat 0:14942e263231 564 ccdPeltA = 0; // set PWM A to zero
flatcat 0:14942e263231 565 ccdPeltB = 0; // set PWM B to zero
flatcat 0:14942e263231 566 grnLED = 0; // turn led off
flatcat 0:14942e263231 567 break;
flatcat 0:14942e263231 568 case 0x01: // case for cmd_ccd_peltier COOL
flatcat 0:14942e263231 569 raspi.printf("%x\r\n", cmd_ccd_pelt_power); // return filter_select to raspi
flatcat 0:14942e263231 570 ccdPeltA = 0.5; // set PWM A to 0.5
flatcat 0:14942e263231 571 ccdPeltB = 0; // set PWM B to zero
flatcat 0:14942e263231 572 grnLED = 0; // turn led off
flatcat 0:14942e263231 573 break;
flatcat 0:14942e263231 574 case 0x02: // case for cmd_ccd_peltier HEAT
flatcat 0:14942e263231 575 raspi.printf("%x\r\n", cmd_ccd_pelt_power); // return filter_select to raspi
flatcat 0:14942e263231 576 ccdPeltA = 0; // set PWM A to 0.5
flatcat 0:14942e263231 577 ccdPeltB = 0.5; // set PWM B to zero
flatcat 0:14942e263231 578 grnLED = 0; // turn led off
flatcat 0:14942e263231 579 break;
flatcat 0:14942e263231 580 default:
flatcat 0:14942e263231 581 break;
flatcat 0:14942e263231 582 }
flatcat 0:14942e263231 583 continue;
flatcat 0:14942e263231 584 default:
flatcat 0:14942e263231 585 break;
flatcat 0:14942e263231 586 } case packet_end: // case for packed_end
flatcat 0:14942e263231 587 packetFlag = 0; // set the packetFlag to 0
flatcat 0:14942e263231 588 break; // break from loop
flatcat 0:14942e263231 589 default: // default if nothing matches
flatcat 0:14942e263231 590 break; // break from loop
flatcat 0:14942e263231 591 }
flatcat 0:14942e263231 592 }
flatcat 0:14942e263231 593 default: // defailt if nothing matches
flatcat 0:14942e263231 594 break; // break from loop
flatcat 0:14942e263231 595 }
flatcat 0:14942e263231 596 default: // default if nothing matches
flatcat 0:14942e263231 597 break; // break from loop
flatcat 0:14942e263231 598 }
flatcat 0:14942e263231 599 }
flatcat 0:14942e263231 600 }
flatcat 0:14942e263231 601 }