A code to drive a 3sensor reading unit for monitoring the operation opf a closed circuit rebreather (CCR) with 3 electrogalvanic sensors. Also uses a DS1307 for realtime clock and an MPX5700 to read the depth (mounted inside the breathing loop to keep it 'dry'). circuit diagrams available on rebreather world.
Dependencies: DS1307 TextOLED mbed
Rebmon_main.cpp@0:52d05d950581, 2012-08-01 (annotated)
- Committer:
- pegcjs
- Date:
- Wed Aug 01 15:04:18 2012 +0000
- Revision:
- 0:52d05d950581
- Child:
- 1:9cff4feccbce
just started writing
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pegcjs | 0:52d05d950581 | 1 | //lpc1124lcddemo |
pegcjs | 0:52d05d950581 | 2 | #include "ds1307.h" |
pegcjs | 0:52d05d950581 | 3 | #include "mbed.h" |
pegcjs | 0:52d05d950581 | 4 | #include "TextLCD.h" |
pegcjs | 0:52d05d950581 | 5 | |
pegcjs | 0:52d05d950581 | 6 | //pin assignments and declarations |
pegcjs | 0:52d05d950581 | 7 | // LCD display |
pegcjs | 0:52d05d950581 | 8 | TextLCD g_lcd(p26, p25, p24, p23, p22, p21); // RS, E, DB4, DB5, DB6, DB7 |
pegcjs | 0:52d05d950581 | 9 | |
pegcjs | 0:52d05d950581 | 10 | //onboard leds |
pegcjs | 0:52d05d950581 | 11 | DigitalOut led1(LED1); |
pegcjs | 0:52d05d950581 | 12 | DigitalOut led2(LED2); |
pegcjs | 0:52d05d950581 | 13 | |
pegcjs | 0:52d05d950581 | 14 | // warning leds |
pegcjs | 0:52d05d950581 | 15 | DigitalOut red(p34); |
pegcjs | 0:52d05d950581 | 16 | DigitalOut green(p33); |
pegcjs | 0:52d05d950581 | 17 | DigitalOut blue(p30); |
pegcjs | 0:52d05d950581 | 18 | |
pegcjs | 0:52d05d950581 | 19 | // switches and buttons |
pegcjs | 0:52d05d950581 | 20 | DigitalIn CAL(p36); |
pegcjs | 0:52d05d950581 | 21 | DigitalIn SW1(p35); |
pegcjs | 0:52d05d950581 | 22 | |
pegcjs | 0:52d05d950581 | 23 | // log data storage |
pegcjs | 0:52d05d950581 | 24 | LocalFileSystem local("local"); |
pegcjs | 0:52d05d950581 | 25 | |
pegcjs | 0:52d05d950581 | 26 | // adc inputs for sensors |
pegcjs | 0:52d05d950581 | 27 | AnalogIn depin(p20); |
pegcjs | 0:52d05d950581 | 28 | AnalogIn EG1(p19); |
pegcjs | 0:52d05d950581 | 29 | AnalogIn EG2(p18); |
pegcjs | 0:52d05d950581 | 30 | AnalogIn Vbatt(p17); |
pegcjs | 0:52d05d950581 | 31 | |
pegcjs | 0:52d05d950581 | 32 | // realtime clock |
pegcjs | 0:52d05d950581 | 33 | DS1307 my1307(p28,p27); // start DS1307 class and give it pins for connections of the DS1307 device |
pegcjs | 0:52d05d950581 | 34 | |
pegcjs | 0:52d05d950581 | 35 | // variables for realtime clock |
pegcjs | 0:52d05d950581 | 36 | int sec = 0; |
pegcjs | 0:52d05d950581 | 37 | int min = 0; |
pegcjs | 0:52d05d950581 | 38 | int hours = 0; |
pegcjs | 0:52d05d950581 | 39 | int day = 0; |
pegcjs | 0:52d05d950581 | 40 | int date = 0; |
pegcjs | 0:52d05d950581 | 41 | int month = 0; |
pegcjs | 0:52d05d950581 | 42 | int year = 0; |
pegcjs | 0:52d05d950581 | 43 | |
pegcjs | 0:52d05d950581 | 44 | |
pegcjs | 0:52d05d950581 | 45 | int main() { |
pegcjs | 0:52d05d950581 | 46 | // get time to log a startup time |
pegcjs | 0:52d05d950581 | 47 | my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year); |
pegcjs | 0:52d05d950581 | 48 | int starttime=year*365*24*60*60+month*30*24*60*60+day*24*60*60+hours*60*60+min*60+sec; //simple timestamp = # seconds since midnight jan 1st 2000 if all months were 30 days. |
pegcjs | 0:52d05d950581 | 49 | |
pegcjs | 0:52d05d950581 | 50 | |
pegcjs | 0:52d05d950581 | 51 | int seconds; |
pegcjs | 0:52d05d950581 | 52 | float depth; |
pegcjs | 0:52d05d950581 | 53 | |
pegcjs | 0:52d05d950581 | 54 | // setup local file to store data in |
pegcjs | 0:52d05d950581 | 55 | FILE *fp = fopen("/local/out.txt", "a"); // Open "out.txt" on the local file system for writing |
pegcjs | 0:52d05d950581 | 56 | |
pegcjs | 0:52d05d950581 | 57 | |
pegcjs | 0:52d05d950581 | 58 | |
pegcjs | 0:52d05d950581 | 59 | |
pegcjs | 0:52d05d950581 | 60 | g_lcd.cls(); |
pegcjs | 0:52d05d950581 | 61 | |
pegcjs | 0:52d05d950581 | 62 | g_lcd.locate(0, 0); |
pegcjs | 0:52d05d950581 | 63 | g_lcd.printf( "Hello world!"); |
pegcjs | 0:52d05d950581 | 64 | |
pegcjs | 0:52d05d950581 | 65 | while (1) { |
pegcjs | 0:52d05d950581 | 66 | g_lcd.locate(0, 1); |
pegcjs | 0:52d05d950581 | 67 | my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year); |
pegcjs | 0:52d05d950581 | 68 | seconds=day*24*60*60+hours*60*60+min*60+sec; // seconds since the start of this month.... |
pegcjs | 0:52d05d950581 | 69 | |
pegcjs | 0:52d05d950581 | 70 | if (led1==0) led1=1; |
pegcjs | 0:52d05d950581 | 71 | else led1=0; |
pegcjs | 0:52d05d950581 | 72 | g_lcd.printf( "%.2d:%.2d:%.2d", hours,min,sec); |
pegcjs | 0:52d05d950581 | 73 | |
pegcjs | 0:52d05d950581 | 74 | iCounter++; |
pegcjs | 0:52d05d950581 | 75 | depth=depin/0.020; |
pegcjs | 0:52d05d950581 | 76 | if (iCounter <=60) { |
pegcjs | 0:52d05d950581 | 77 | fprintf(fp, "%d\t%e\n",seconds,depth); |
pegcjs | 0:52d05d950581 | 78 | g_lcd.locate(0,0); |
pegcjs | 0:52d05d950581 | 79 | g_lcd.printf("Writing data "); |
pegcjs | 0:52d05d950581 | 80 | } else { |
pegcjs | 0:52d05d950581 | 81 | g_lcd.locate(0,0); |
pegcjs | 0:52d05d950581 | 82 | g_lcd.printf("Closed file "); |
pegcjs | 0:52d05d950581 | 83 | } |
pegcjs | 0:52d05d950581 | 84 | if (iCounter==61) { |
pegcjs | 0:52d05d950581 | 85 | fclose(fp); |
pegcjs | 0:52d05d950581 | 86 | } |
pegcjs | 0:52d05d950581 | 87 | g_lcd.locate(9,1); |
pegcjs | 0:52d05d950581 | 88 | g_lcd.printf("%3.1f",depth); |
pegcjs | 0:52d05d950581 | 89 | wait(1.0); |
pegcjs | 0:52d05d950581 | 90 | } |
pegcjs | 0:52d05d950581 | 91 | } |