valve measurement board

Dependencies:   mbed ads1115_test SDFileSystem

Committer:
Yamasaki Taro
Date:
Tue Feb 23 02:13:21 2021 +0900
Branch:
PressureResponse
Revision:
1:655abe8ab309
Parent:
0:cb9da8306a40
Child:
2:824e174ef9ea
Add sender of message to controler

Who changed what in which revision?

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