valve measurement board
Dependencies: mbed ads1115_test SDFileSystem
main.cpp@1:655abe8ab309, 2021-02-23 (annotated)
- 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?
User | Revision | Line number | New 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 | } |