valve measurement board

Dependencies:   mbed ads1115_test SDFileSystem

Committer:
Yamasaki Taro
Date:
Thu Mar 04 23:33:33 2021 +0900
Branch:
PressureResponse
Revision:
7:088f88b9fffc
Parent:
6:5b01aef71fc3
Child:
8:75b05055a94b
Fixed typo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tanahashi 0:cb9da8306a40 1 #include "mbed.h"
Yamasaki Taro 4:83855f14a087 2 #include "SoftwareSerial.h"
Yamasaki Taro 1:655abe8ab309 3
tanahashi 0:cb9da8306a40 4 #include "SDFileSystem.h"
tanahashi 0:cb9da8306a40 5
tanahashi 0:cb9da8306a40 6 #include "Adafruit_ADS1015.h"
tanahashi 0:cb9da8306a40 7
tanahashi 0:cb9da8306a40 8 #define ADS1115_ADDR 0b1001000
tanahashi 0:cb9da8306a40 9
tanahashi 0:cb9da8306a40 10 #define TEMP_LSB 0.0625f
tanahashi 0:cb9da8306a40 11
tanahashi 0:cb9da8306a40 12 //Serial pc(USBTX, USBRX, 115200);
Yamasaki Taro 2:824e174ef9ea 13 //
Yamasaki Taro 2:824e174ef9ea 14 Serial wireless(p28,p27);
tanahashi 0:cb9da8306a40 15
Yamasaki Taro 7:088f88b9fffc 16 SoftwareSerial valve_controler(p18,p19,"");//tx,rx
Yamasaki Taro 1:655abe8ab309 17
tanahashi 0:cb9da8306a40 18 I2C i2c(p9, p10);
tanahashi 0:cb9da8306a40 19
tanahashi 0:cb9da8306a40 20 Adafruit_ADS1115 ads1115(&i2c, ADS1115_ADDR);
tanahashi 0:cb9da8306a40 21
tanahashi 0:cb9da8306a40 22 SDFileSystem sd(p5, p6, p7, p8, "sd");
tanahashi 0:cb9da8306a40 23
tanahashi 0:cb9da8306a40 24 SPI TempK(p5, p6, p7);
tanahashi 0:cb9da8306a40 25
tanahashi 0:cb9da8306a40 26 DigitalOut led1(LED1);
tanahashi 0:cb9da8306a40 27
tanahashi 0:cb9da8306a40 28 DigitalOut ss1(p19);
tanahashi 0:cb9da8306a40 29 DigitalOut ss2(p20);
tanahashi 0:cb9da8306a40 30
tanahashi 0:cb9da8306a40 31 Timer timer;
tanahashi 0:cb9da8306a40 32 Timer sd_timer;
tanahashi 0:cb9da8306a40 33
tanahashi 0:cb9da8306a40 34 FILE *fp;
tanahashi 0:cb9da8306a40 35
tanahashi 0:cb9da8306a40 36 char file_name[64];
tanahashi 0:cb9da8306a40 37
tanahashi 0:cb9da8306a40 38 int press_bit1, press_bit2;
tanahashi 0:cb9da8306a40 39 float temp1, temp2;
tanahashi 0:cb9da8306a40 40
tanahashi 0:cb9da8306a40 41 int main()
tanahashi 0:cb9da8306a40 42 {
tanahashi 0:cb9da8306a40 43 timer.start();
Yamasaki Taro 3:a8e9c68ea80b 44 wireless.baud(115200);
Yamasaki Taro 1:655abe8ab309 45 valve_controler.baud(9600);
Yamasaki Taro 1:655abe8ab309 46
tanahashi 0:cb9da8306a40 47 uint16_t data[2];
tanahashi 0:cb9da8306a40 48 ads1115.setGain(GAIN_TWOTHIRDS);
tanahashi 0:cb9da8306a40 49 TempK.format(16, 0);
tanahashi 0:cb9da8306a40 50 TempK.frequency(5000000);
tanahashi 0:cb9da8306a40 51
tanahashi 0:cb9da8306a40 52 char file_name_format[] = "/sd/IZU2020_VALVE_MEASUREMENT_%d.dat";
tanahashi 0:cb9da8306a40 53 int file_number = 1;
tanahashi 0:cb9da8306a40 54 while(1) {
tanahashi 0:cb9da8306a40 55 sprintf(file_name, file_name_format, file_number);
tanahashi 0:cb9da8306a40 56 fp = fopen(file_name, "r");
tanahashi 0:cb9da8306a40 57 if(fp != NULL) {
tanahashi 0:cb9da8306a40 58 fclose(fp);
tanahashi 0:cb9da8306a40 59 file_number++;
tanahashi 0:cb9da8306a40 60 } else {
tanahashi 0:cb9da8306a40 61 sprintf(file_name, file_name_format, file_number);
tanahashi 0:cb9da8306a40 62 break;
tanahashi 0:cb9da8306a40 63 }
tanahashi 0:cb9da8306a40 64 }
tanahashi 0:cb9da8306a40 65 fp = fopen(file_name, "w");
tanahashi 0:cb9da8306a40 66 sd_timer.start();
tanahashi 0:cb9da8306a40 67
Yamasaki Taro 1:655abe8ab309 68 int dt = 0;
tanahashi 0:cb9da8306a40 69 while(1) {
tanahashi 0:cb9da8306a40 70
tanahashi 0:cb9da8306a40 71 press_bit1 = ads1115.readADC_SingleEnded(1);
tanahashi 0:cb9da8306a40 72 press_bit2 = ads1115.readADC_SingleEnded(3);
tanahashi 0:cb9da8306a40 73
tanahashi 0:cb9da8306a40 74 ss1 = 0;
tanahashi 0:cb9da8306a40 75 data[0] = TempK.write(0x00);
tanahashi 0:cb9da8306a40 76 data[1] = TempK.write(0x00);
tanahashi 0:cb9da8306a40 77 ss1 = 1;
tanahashi 0:cb9da8306a40 78 data[0] &= 0xfffc;
tanahashi 0:cb9da8306a40 79 temp1 = (float)((int16_t)data[0]) * TEMP_LSB;
tanahashi 0:cb9da8306a40 80
tanahashi 0:cb9da8306a40 81 ss2 = 0;
tanahashi 0:cb9da8306a40 82 data[0] = TempK.write(0x00);
tanahashi 0:cb9da8306a40 83 data[1] = TempK.write(0x00);
tanahashi 0:cb9da8306a40 84 ss2 = 1;
tanahashi 0:cb9da8306a40 85 data[0] &= 0xfffc;
tanahashi 0:cb9da8306a40 86 temp2 = (float)((int16_t)data[0]) * TEMP_LSB;
tanahashi 0:cb9da8306a40 87
tanahashi 0:cb9da8306a40 88 //pc.printf("%d\t%d\t%d\t%f\t%f\r\n", timer.read_ms(), press_bit1, press_bit2, temp1, temp2);
Yamasaki Taro 1:655abe8ab309 89 int time = timer.read_ms();
Yamasaki Taro 1:655abe8ab309 90 if(time - dt >= 100){
Yamasaki Taro 2:824e174ef9ea 91 wireless.printf("Tank Pressure is %d now.\r\n",press_bit1);
Yamasaki Taro 1:655abe8ab309 92 dt = time;
Yamasaki Taro 1:655abe8ab309 93 }
Yamasaki Taro 4:83855f14a087 94 if(valve_controler.readable() > 0 ){
Yamasaki Taro 4:83855f14a087 95 if((char)valve_controler.getc() == '?'){
Yamasaki Taro 4:83855f14a087 96 valve_controler.printf("%d",press_bit1);
Yamasaki Taro 4:83855f14a087 97 }
Yamasaki Taro 4:83855f14a087 98
Yamasaki Taro 4:83855f14a087 99 }
Yamasaki Taro 1:655abe8ab309 100 fprintf(fp, "%d\t%d\t%d\t%f\t%f\r\n", time, press_bit1, press_bit2, temp1, temp2);
tanahashi 0:cb9da8306a40 101
tanahashi 0:cb9da8306a40 102 if(sd_timer.read_ms() > 20*1000) {
tanahashi 0:cb9da8306a40 103 if(fp) {
tanahashi 0:cb9da8306a40 104 fclose(fp);
tanahashi 0:cb9da8306a40 105 fp = fopen(file_name, "a");
tanahashi 0:cb9da8306a40 106 }
tanahashi 0:cb9da8306a40 107 }
tanahashi 0:cb9da8306a40 108 }
Yamasaki Taro 1:655abe8ab309 109 }