netudenntui
Dependencies: mbed SDFileSystem
main.cpp@0:184cd74fc1d8, 2019-11-27 (annotated)
- Committer:
- mitinori
- Date:
- Wed Nov 27 08:39:48 2019 +0000
- Revision:
- 0:184cd74fc1d8
netudenntui
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mitinori | 0:184cd74fc1d8 | 1 | #include "mbed.h" |
mitinori | 0:184cd74fc1d8 | 2 | #include "max6675.h" |
mitinori | 0:184cd74fc1d8 | 3 | #include "max6675_2.h" |
mitinori | 0:184cd74fc1d8 | 4 | #include "SDFileSystem.h" |
mitinori | 0:184cd74fc1d8 | 5 | #include <time.h> |
mitinori | 0:184cd74fc1d8 | 6 | #include <stdio.h> |
mitinori | 0:184cd74fc1d8 | 7 | |
mitinori | 0:184cd74fc1d8 | 8 | DigitalOut led_1(LED1); |
mitinori | 0:184cd74fc1d8 | 9 | DigitalOut led_2(LED2); |
mitinori | 0:184cd74fc1d8 | 10 | DigitalOut led_3(LED3); |
mitinori | 0:184cd74fc1d8 | 11 | DigitalOut led_4(LED4); |
mitinori | 0:184cd74fc1d8 | 12 | SPI spi(p11,p12,p13); |
mitinori | 0:184cd74fc1d8 | 13 | max6675 max(spi,p18); |
mitinori | 0:184cd74fc1d8 | 14 | SPI spi_2(p11,p12,p13); |
mitinori | 0:184cd74fc1d8 | 15 | max6675_2 max_2(spi_2,p21); |
mitinori | 0:184cd74fc1d8 | 16 | AnalogIn LM61(p15); |
mitinori | 0:184cd74fc1d8 | 17 | SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board |
mitinori | 0:184cd74fc1d8 | 18 | Serial pc(USBTX,USBRX); |
mitinori | 0:184cd74fc1d8 | 19 | DigitalIn swi_1(p23); //p5~p30のどれでも良い |
mitinori | 0:184cd74fc1d8 | 20 | DigitalIn swi_2(p22); //p5~p30のどれでも良い |
mitinori | 0:184cd74fc1d8 | 21 | |
mitinori | 0:184cd74fc1d8 | 22 | void led() |
mitinori | 0:184cd74fc1d8 | 23 | { |
mitinori | 0:184cd74fc1d8 | 24 | led_1 = 1; |
mitinori | 0:184cd74fc1d8 | 25 | led_2 = 1; |
mitinori | 0:184cd74fc1d8 | 26 | led_3 = 1; |
mitinori | 0:184cd74fc1d8 | 27 | led_4 = 1; |
mitinori | 0:184cd74fc1d8 | 28 | wait(.2); |
mitinori | 0:184cd74fc1d8 | 29 | |
mitinori | 0:184cd74fc1d8 | 30 | led_1 = 0; |
mitinori | 0:184cd74fc1d8 | 31 | led_2 = 0; |
mitinori | 0:184cd74fc1d8 | 32 | led_3 = 0; |
mitinori | 0:184cd74fc1d8 | 33 | led_4 = 0; |
mitinori | 0:184cd74fc1d8 | 34 | wait(.2); |
mitinori | 0:184cd74fc1d8 | 35 | |
mitinori | 0:184cd74fc1d8 | 36 | led_1 = 1; |
mitinori | 0:184cd74fc1d8 | 37 | led_2 = 1; |
mitinori | 0:184cd74fc1d8 | 38 | led_3 = 1; |
mitinori | 0:184cd74fc1d8 | 39 | led_4 = 1; |
mitinori | 0:184cd74fc1d8 | 40 | wait(.2); |
mitinori | 0:184cd74fc1d8 | 41 | |
mitinori | 0:184cd74fc1d8 | 42 | led_1 = 0; |
mitinori | 0:184cd74fc1d8 | 43 | led_2 = 0; |
mitinori | 0:184cd74fc1d8 | 44 | led_3 = 0; |
mitinori | 0:184cd74fc1d8 | 45 | led_4 = 0; |
mitinori | 0:184cd74fc1d8 | 46 | wait(.2); |
mitinori | 0:184cd74fc1d8 | 47 | } |
mitinori | 0:184cd74fc1d8 | 48 | |
mitinori | 0:184cd74fc1d8 | 49 | int main() |
mitinori | 0:184cd74fc1d8 | 50 | { |
mitinori | 0:184cd74fc1d8 | 51 | int r = 9; //平均する値の個数 |
mitinori | 0:184cd74fc1d8 | 52 | double w_h = .42; //加熱waitの時間 |
mitinori | 0:184cd74fc1d8 | 53 | double w_c = .417; //冷却waitの時間 |
mitinori | 0:184cd74fc1d8 | 54 | clock_t start_h; |
mitinori | 0:184cd74fc1d8 | 55 | clock_t start_c; |
mitinori | 0:184cd74fc1d8 | 56 | float tempC, sum, sum_2, ave, ave_2; |
mitinori | 0:184cd74fc1d8 | 57 | int i, j; //平均化処理に使用 |
mitinori | 0:184cd74fc1d8 | 58 | swi_1.mode(PullUp); |
mitinori | 0:184cd74fc1d8 | 59 | swi_2.mode(PullUp); |
mitinori | 0:184cd74fc1d8 | 60 | |
mitinori | 0:184cd74fc1d8 | 61 | mkdir("/sd/mydir", 0777); |
mitinori | 0:184cd74fc1d8 | 62 | printf("test start!\n"); |
mitinori | 0:184cd74fc1d8 | 63 | |
mitinori | 0:184cd74fc1d8 | 64 | |
mitinori | 0:184cd74fc1d8 | 65 | if( swi_1 == 1 && swi_2 == 0 ) //スイッチをマイコン側に倒したとき |
mitinori | 0:184cd74fc1d8 | 66 | { |
mitinori | 0:184cd74fc1d8 | 67 | printf("\n\n\nheating start\n\n\n"); |
mitinori | 0:184cd74fc1d8 | 68 | |
mitinori | 0:184cd74fc1d8 | 69 | led(); |
mitinori | 0:184cd74fc1d8 | 70 | |
mitinori | 0:184cd74fc1d8 | 71 | while (1) |
mitinori | 0:184cd74fc1d8 | 72 | { |
mitinori | 0:184cd74fc1d8 | 73 | start_h = clock(); |
mitinori | 0:184cd74fc1d8 | 74 | printf("%f\n", (double)start_h/CLOCKS_PER_SEC); |
mitinori | 0:184cd74fc1d8 | 75 | |
mitinori | 0:184cd74fc1d8 | 76 | max.select(); |
mitinori | 0:184cd74fc1d8 | 77 | max_2.deselect_2(); |
mitinori | 0:184cd74fc1d8 | 78 | |
mitinori | 0:184cd74fc1d8 | 79 | //平均化処理 |
mitinori | 0:184cd74fc1d8 | 80 | |
mitinori | 0:184cd74fc1d8 | 81 | sum = 0; |
mitinori | 0:184cd74fc1d8 | 82 | ave = 0; |
mitinori | 0:184cd74fc1d8 | 83 | i = 0; |
mitinori | 0:184cd74fc1d8 | 84 | for( i = 0; i < r; i++) |
mitinori | 0:184cd74fc1d8 | 85 | { |
mitinori | 0:184cd74fc1d8 | 86 | float temp = max.read_temp(); |
mitinori | 0:184cd74fc1d8 | 87 | sum += temp; |
mitinori | 0:184cd74fc1d8 | 88 | } |
mitinori | 0:184cd74fc1d8 | 89 | |
mitinori | 0:184cd74fc1d8 | 90 | ave = sum / r; |
mitinori | 0:184cd74fc1d8 | 91 | printf("\n\rT: %f",ave ); |
mitinori | 0:184cd74fc1d8 | 92 | |
mitinori | 0:184cd74fc1d8 | 93 | |
mitinori | 0:184cd74fc1d8 | 94 | |
mitinori | 0:184cd74fc1d8 | 95 | max.deselect(); |
mitinori | 0:184cd74fc1d8 | 96 | max_2.select_2(); |
mitinori | 0:184cd74fc1d8 | 97 | |
mitinori | 0:184cd74fc1d8 | 98 | //平均化処理 |
mitinori | 0:184cd74fc1d8 | 99 | sum_2 = 0; |
mitinori | 0:184cd74fc1d8 | 100 | ave_2 = 0; |
mitinori | 0:184cd74fc1d8 | 101 | j = 0; |
mitinori | 0:184cd74fc1d8 | 102 | for( j = 0; j < r; j++) |
mitinori | 0:184cd74fc1d8 | 103 | { |
mitinori | 0:184cd74fc1d8 | 104 | float temp_2 = max_2.read_temp_2(); |
mitinori | 0:184cd74fc1d8 | 105 | sum_2 += temp_2; |
mitinori | 0:184cd74fc1d8 | 106 | } |
mitinori | 0:184cd74fc1d8 | 107 | |
mitinori | 0:184cd74fc1d8 | 108 | ave_2 = sum_2 / r; |
mitinori | 0:184cd74fc1d8 | 109 | printf("\n\rT: %f",ave_2 ); |
mitinori | 0:184cd74fc1d8 | 110 | |
mitinori | 0:184cd74fc1d8 | 111 | |
mitinori | 0:184cd74fc1d8 | 112 | //conversion to degrees C - from sensor output voltage per LM61 data sheet |
mitinori | 0:184cd74fc1d8 | 113 | tempC = ((LM61*3.3)-0.600)*100.0; |
mitinori | 0:184cd74fc1d8 | 114 | |
mitinori | 0:184cd74fc1d8 | 115 | printf("\nC: %5.2F \n\n\n\r", tempC); |
mitinori | 0:184cd74fc1d8 | 116 | |
mitinori | 0:184cd74fc1d8 | 117 | FILE *fp = fopen("/sd/mydir/test_heating.csv", "a"); |
mitinori | 0:184cd74fc1d8 | 118 | if(fp == NULL) |
mitinori | 0:184cd74fc1d8 | 119 | { error("Could not open file for write\n"); |
mitinori | 0:184cd74fc1d8 | 120 | } |
mitinori | 0:184cd74fc1d8 | 121 | |
mitinori | 0:184cd74fc1d8 | 122 | fprintf(fp, "t=,%f,,,T_1,%f,,,T_2,%f,,tempC,%f\n",(double)start_h/CLOCKS_PER_SEC, ave, ave_2, tempC); |
mitinori | 0:184cd74fc1d8 | 123 | fclose(fp); |
mitinori | 0:184cd74fc1d8 | 124 | wait(w_h); |
mitinori | 0:184cd74fc1d8 | 125 | }//while_h |
mitinori | 0:184cd74fc1d8 | 126 | |
mitinori | 0:184cd74fc1d8 | 127 | }//if_h |
mitinori | 0:184cd74fc1d8 | 128 | |
mitinori | 0:184cd74fc1d8 | 129 | |
mitinori | 0:184cd74fc1d8 | 130 | if( swi_1 == 0 && swi_2 == 1 ) //スイッチをマイコンの逆側に倒したとき |
mitinori | 0:184cd74fc1d8 | 131 | { |
mitinori | 0:184cd74fc1d8 | 132 | printf("\n\n\ncolling start\n\n\n"); |
mitinori | 0:184cd74fc1d8 | 133 | |
mitinori | 0:184cd74fc1d8 | 134 | led(); |
mitinori | 0:184cd74fc1d8 | 135 | |
mitinori | 0:184cd74fc1d8 | 136 | while (1) |
mitinori | 0:184cd74fc1d8 | 137 | { |
mitinori | 0:184cd74fc1d8 | 138 | start_c = clock(); |
mitinori | 0:184cd74fc1d8 | 139 | printf("%f\n", (double)start_c/CLOCKS_PER_SEC); |
mitinori | 0:184cd74fc1d8 | 140 | // double sum_time = start_h/CLOCKS_PER_SEC + start_c/CLOCKS_PER_SEC; |
mitinori | 0:184cd74fc1d8 | 141 | // printf("%f\n", sum_time); |
mitinori | 0:184cd74fc1d8 | 142 | |
mitinori | 0:184cd74fc1d8 | 143 | |
mitinori | 0:184cd74fc1d8 | 144 | max.select(); |
mitinori | 0:184cd74fc1d8 | 145 | max_2.deselect_2(); |
mitinori | 0:184cd74fc1d8 | 146 | |
mitinori | 0:184cd74fc1d8 | 147 | //平均化処理 |
mitinori | 0:184cd74fc1d8 | 148 | |
mitinori | 0:184cd74fc1d8 | 149 | sum = 0; |
mitinori | 0:184cd74fc1d8 | 150 | ave = 0; |
mitinori | 0:184cd74fc1d8 | 151 | i = 0; |
mitinori | 0:184cd74fc1d8 | 152 | for( i = 0; i < r; i++) |
mitinori | 0:184cd74fc1d8 | 153 | { |
mitinori | 0:184cd74fc1d8 | 154 | float temp = max.read_temp(); |
mitinori | 0:184cd74fc1d8 | 155 | sum += temp; |
mitinori | 0:184cd74fc1d8 | 156 | } |
mitinori | 0:184cd74fc1d8 | 157 | |
mitinori | 0:184cd74fc1d8 | 158 | ave = sum / r; |
mitinori | 0:184cd74fc1d8 | 159 | printf("\n\rT: %f",ave ); |
mitinori | 0:184cd74fc1d8 | 160 | |
mitinori | 0:184cd74fc1d8 | 161 | |
mitinori | 0:184cd74fc1d8 | 162 | |
mitinori | 0:184cd74fc1d8 | 163 | max.deselect(); |
mitinori | 0:184cd74fc1d8 | 164 | max_2.select_2(); |
mitinori | 0:184cd74fc1d8 | 165 | |
mitinori | 0:184cd74fc1d8 | 166 | //平均化処理 |
mitinori | 0:184cd74fc1d8 | 167 | sum_2 = 0; |
mitinori | 0:184cd74fc1d8 | 168 | ave_2 = 0; |
mitinori | 0:184cd74fc1d8 | 169 | j = 0; |
mitinori | 0:184cd74fc1d8 | 170 | for( j = 0; j < r; j++) |
mitinori | 0:184cd74fc1d8 | 171 | { |
mitinori | 0:184cd74fc1d8 | 172 | float temp_2 = max_2.read_temp_2(); |
mitinori | 0:184cd74fc1d8 | 173 | sum_2 += temp_2; |
mitinori | 0:184cd74fc1d8 | 174 | } |
mitinori | 0:184cd74fc1d8 | 175 | |
mitinori | 0:184cd74fc1d8 | 176 | ave_2 = sum_2 / r; |
mitinori | 0:184cd74fc1d8 | 177 | printf("\n\rT: %f",ave_2 ); |
mitinori | 0:184cd74fc1d8 | 178 | |
mitinori | 0:184cd74fc1d8 | 179 | |
mitinori | 0:184cd74fc1d8 | 180 | //conversion to degrees C - from sensor output voltage per LM61 data sheet |
mitinori | 0:184cd74fc1d8 | 181 | tempC = ((LM61*3.3)-0.600)*100.0; |
mitinori | 0:184cd74fc1d8 | 182 | |
mitinori | 0:184cd74fc1d8 | 183 | printf("\nC: %5.2F \n\n\n\r", tempC); |
mitinori | 0:184cd74fc1d8 | 184 | |
mitinori | 0:184cd74fc1d8 | 185 | FILE *fp = fopen("/sd/mydir/test_cooling.csv", "a"); |
mitinori | 0:184cd74fc1d8 | 186 | if(fp == NULL) |
mitinori | 0:184cd74fc1d8 | 187 | { error("Could not open file for write\n"); |
mitinori | 0:184cd74fc1d8 | 188 | } |
mitinori | 0:184cd74fc1d8 | 189 | |
mitinori | 0:184cd74fc1d8 | 190 | fprintf(fp, "t=,%f,,,T_1,%f,,,T_2,%f,,tempC,%f\n",(double)start_c/CLOCKS_PER_SEC, ave, ave_2, tempC); |
mitinori | 0:184cd74fc1d8 | 191 | fclose(fp); |
mitinori | 0:184cd74fc1d8 | 192 | wait(w_c); |
mitinori | 0:184cd74fc1d8 | 193 | }//while_c |
mitinori | 0:184cd74fc1d8 | 194 | |
mitinori | 0:184cd74fc1d8 | 195 | }//if_c |
mitinori | 0:184cd74fc1d8 | 196 | |
mitinori | 0:184cd74fc1d8 | 197 | |
mitinori | 0:184cd74fc1d8 | 198 | if( swi_1 == 1 && swi_2 == 1 ) // スイッチを倒さない時(真ん中の時) |
mitinori | 0:184cd74fc1d8 | 199 | { |
mitinori | 0:184cd74fc1d8 | 200 | led(); |
mitinori | 0:184cd74fc1d8 | 201 | printf("\n\n\nsotp\n\n\n"); |
mitinori | 0:184cd74fc1d8 | 202 | } |
mitinori | 0:184cd74fc1d8 | 203 | |
mitinori | 0:184cd74fc1d8 | 204 | } //main() |