valve measurement board

Dependencies:   mbed ads1115_test SDFileSystem

main.cpp

Committer:
Yamasaki Taro
Date:
2021-03-04
Branch:
PressureResponse
Revision:
6:5b01aef71fc3
Parent:
4:83855f14a087
Child:
7:088f88b9fffc

File content as of revision 6:5b01aef71fc3:

#include "mbed.h"
#include "SoftwareSerial.h"

#include "SDFileSystem.h"

#include "Adafruit_ADS1015.h"

#define ADS1115_ADDR 0b1001000

#define TEMP_LSB 0.0625f

//Serial pc(USBTX, USBRX, 115200);
//
Serial wireless(p28,p27);

SoftwareSerial valve_controler(p18,p19);//tx,rx

I2C i2c(p9, p10);

Adafruit_ADS1115 ads1115(&i2c, ADS1115_ADDR);

SDFileSystem sd(p5, p6, p7, p8, "sd");

SPI TempK(p5, p6, p7);

DigitalOut led1(LED1);

DigitalOut ss1(p19);
DigitalOut ss2(p20);

Timer timer;
Timer sd_timer;

FILE *fp;

char file_name[64];

int press_bit1, press_bit2;
float temp1, temp2;

int main()
{
    timer.start();
    wireless.baud(115200);
    valve_controler.baud(9600);

    uint16_t data[2];
    ads1115.setGain(GAIN_TWOTHIRDS);
    TempK.format(16, 0);
    TempK.frequency(5000000);

    char file_name_format[] = "/sd/IZU2020_VALVE_MEASUREMENT_%d.dat";
    int file_number = 1;
    while(1) {
        sprintf(file_name, file_name_format, file_number);
        fp = fopen(file_name, "r");
        if(fp != NULL) {
            fclose(fp);
            file_number++;
        } else {
            sprintf(file_name, file_name_format, file_number);
            break;
        }
    }
    fp = fopen(file_name, "w");
    sd_timer.start();

    int dt = 0;
    while(1) {

        press_bit1 = ads1115.readADC_SingleEnded(1);
        press_bit2 = ads1115.readADC_SingleEnded(3);

        ss1 = 0;
        data[0] = TempK.write(0x00);
        data[1] = TempK.write(0x00);
        ss1 = 1;
        data[0] &= 0xfffc;
        temp1 = (float)((int16_t)data[0]) * TEMP_LSB;

        ss2 = 0;
        data[0] = TempK.write(0x00);
        data[1] = TempK.write(0x00);
        ss2 = 1;
        data[0] &= 0xfffc;
        temp2 = (float)((int16_t)data[0]) * TEMP_LSB;

        //pc.printf("%d\t%d\t%d\t%f\t%f\r\n", timer.read_ms(), press_bit1, press_bit2, temp1, temp2);
	int time = timer.read_ms();
	if(time - dt >= 100){
		wireless.printf("Tank Pressure is %d now.\r\n",press_bit1);
		dt = time;
	}
	if(valve_controler.readable() > 0 ){
		if((char)valve_controler.getc() == '?'){
			valve_controler.printf("%d",press_bit1);
		}

	}
        fprintf(fp, "%d\t%d\t%d\t%f\t%f\r\n", time, press_bit1, press_bit2, temp1, temp2);

        if(sd_timer.read_ms() > 20*1000) {
            if(fp) {
                fclose(fp);
                fp = fopen(file_name, "a");
            }
        }
    }
}