netudenntui

Dependencies:   mbed SDFileSystem

Committer:
mitinori
Date:
Wed Nov 27 08:39:48 2019 +0000
Revision:
0:184cd74fc1d8
netudenntui

Who changed what in which revision?

UserRevisionLine numberNew 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()