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
Diff: Rebmon_main.cpp
- Revision:
- 0:52d05d950581
- Child:
- 1:9cff4feccbce
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Rebmon_main.cpp Wed Aug 01 15:04:18 2012 +0000 @@ -0,0 +1,91 @@ +//lpc1124lcddemo +#include "ds1307.h" +#include "mbed.h" +#include "TextLCD.h" + +//pin assignments and declarations +// LCD display +TextLCD g_lcd(p26, p25, p24, p23, p22, p21); // RS, E, DB4, DB5, DB6, DB7 + +//onboard leds +DigitalOut led1(LED1); +DigitalOut led2(LED2); + +// warning leds +DigitalOut red(p34); +DigitalOut green(p33); +DigitalOut blue(p30); + +// switches and buttons +DigitalIn CAL(p36); +DigitalIn SW1(p35); + +// log data storage +LocalFileSystem local("local"); + +// adc inputs for sensors +AnalogIn depin(p20); +AnalogIn EG1(p19); +AnalogIn EG2(p18); +AnalogIn Vbatt(p17); + +// realtime clock +DS1307 my1307(p28,p27); // start DS1307 class and give it pins for connections of the DS1307 device + +// variables for realtime clock +int sec = 0; +int min = 0; +int hours = 0; +int day = 0; +int date = 0; +int month = 0; +int year = 0; + + +int main() { + // get time to log a startup time + my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year); + 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. + + + int seconds; + float depth; + +// setup local file to store data in + FILE *fp = fopen("/local/out.txt", "a"); // Open "out.txt" on the local file system for writing + + + + +g_lcd.cls(); + +g_lcd.locate(0, 0); +g_lcd.printf( "Hello world!"); + +while (1) { + g_lcd.locate(0, 1); + my1307.gettime( &sec, &min, &hours, &day, &date, &month, &year); + seconds=day*24*60*60+hours*60*60+min*60+sec; // seconds since the start of this month.... + + if (led1==0) led1=1; + else led1=0; + g_lcd.printf( "%.2d:%.2d:%.2d", hours,min,sec); + + iCounter++; + depth=depin/0.020; + if (iCounter <=60) { + fprintf(fp, "%d\t%e\n",seconds,depth); + g_lcd.locate(0,0); + g_lcd.printf("Writing data "); + } else { + g_lcd.locate(0,0); + g_lcd.printf("Closed file "); + } + if (iCounter==61) { + fclose(fp); + } + g_lcd.locate(9,1); + g_lcd.printf("%3.1f",depth); + wait(1.0); +} +}