netudenntui

Dependencies:   mbed SDFileSystem

Revision:
0:184cd74fc1d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Nov 27 08:39:48 2019 +0000
@@ -0,0 +1,204 @@
+#include "mbed.h"
+#include "max6675.h"
+#include "max6675_2.h"
+#include "SDFileSystem.h"
+#include <time.h>
+#include <stdio.h>
+ 
+DigitalOut led_1(LED1);
+DigitalOut led_2(LED2);
+DigitalOut led_3(LED3);
+DigitalOut led_4(LED4);
+SPI spi(p11,p12,p13);
+max6675 max(spi,p18);
+SPI spi_2(p11,p12,p13);
+max6675_2 max_2(spi_2,p21);
+AnalogIn LM61(p15);
+SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board
+Serial pc(USBTX,USBRX);
+DigitalIn swi_1(p23);   //p5~p30のどれでも良い
+DigitalIn swi_2(p22);   //p5~p30のどれでも良い
+
+void led()
+{
+   led_1 = 1;
+   led_2 = 1;
+   led_3 = 1;
+   led_4 = 1;
+   wait(.2);
+   
+   led_1 = 0;
+   led_2 = 0;
+   led_3 = 0;
+   led_4 = 0;
+   wait(.2);
+   
+   led_1 = 1;
+   led_2 = 1;
+   led_3 = 1;
+   led_4 = 1;
+   wait(.2);
+   
+   led_1 = 0;
+   led_2 = 0;
+   led_3 = 0;
+   led_4 = 0;
+   wait(.2);
+}
+ 
+int main() 
+{  
+   int r = 9;  //平均する値の個数
+   double w_h = .42; //加熱waitの時間
+   double w_c = .417; //冷却waitの時間
+   clock_t start_h;
+   clock_t start_c;
+   float tempC, sum, sum_2, ave, ave_2;
+   int i, j;   //平均化処理に使用
+   swi_1.mode(PullUp);
+   swi_2.mode(PullUp);
+    
+   mkdir("/sd/mydir", 0777);
+   printf("test start!\n");
+   
+  
+   if( swi_1 == 1 && swi_2 == 0 )  //スイッチをマイコン側に倒したとき
+     {
+       printf("\n\n\nheating start\n\n\n");
+      
+       led();
+       
+       while (1)
+        {
+           start_h = clock();
+             printf("%f\n", (double)start_h/CLOCKS_PER_SEC);
+           
+            max.select();                       
+            max_2.deselect_2();
+ 
+          //平均化処理      
+          
+            sum = 0;
+            ave = 0;
+            i = 0;
+           for( i = 0; i < r; i++)            
+             {
+              float temp = max.read_temp();
+              sum += temp;
+             }   
+            
+            ave = sum / r;
+            printf("\n\rT: %f",ave );
+            
+            
+           
+            max.deselect();
+            max_2.select_2();
+             
+        //平均化処理  
+            sum_2 = 0;
+            ave_2 = 0;
+            j = 0;
+           for( j = 0; j < r; j++)            
+           {
+              float temp_2 = max_2.read_temp_2();
+              sum_2 += temp_2;
+           }   
+            
+            ave_2 = sum_2 / r;
+            printf("\n\rT: %f",ave_2 );
+            
+          
+             //conversion to degrees C - from sensor output voltage per LM61 data sheet
+            tempC = ((LM61*3.3)-0.600)*100.0;
+           
+            printf("\nC: %5.2F \n\n\n\r", tempC);
+              
+            FILE *fp = fopen("/sd/mydir/test_heating.csv", "a");
+            if(fp == NULL) 
+               { error("Could not open file for write\n");
+               }
+        
+           fprintf(fp, "t=,%f,,,T_1,%f,,,T_2,%f,,tempC,%f\n",(double)start_h/CLOCKS_PER_SEC, ave, ave_2, tempC);
+           fclose(fp); 
+           wait(w_h);
+        }//while_h
+    
+     }//if_h
+     
+     
+     if( swi_1 == 0 && swi_2 == 1 ) //スイッチをマイコンの逆側に倒したとき
+      {   
+         printf("\n\n\ncolling start\n\n\n");
+         
+         led();
+         
+        while (1)
+         {
+            start_c = clock();
+            printf("%f\n", (double)start_c/CLOCKS_PER_SEC);
+   //        double sum_time = start_h/CLOCKS_PER_SEC + start_c/CLOCKS_PER_SEC;
+   //         printf("%f\n", sum_time);
+          
+           
+            max.select();                       
+            max_2.deselect_2();
+ 
+          //平均化処理      
+          
+            sum = 0;
+            ave = 0;
+            i = 0;
+           for( i = 0; i < r; i++)            
+             {
+              float temp = max.read_temp();
+              sum += temp;
+             }   
+            
+            ave = sum / r;
+            printf("\n\rT: %f",ave );
+            
+            
+           
+            max.deselect();
+            max_2.select_2();
+             
+        //平均化処理  
+            sum_2 = 0;
+            ave_2 = 0;
+            j = 0;
+           for( j = 0; j < r; j++)            
+           {
+              float temp_2 = max_2.read_temp_2();
+              sum_2 += temp_2;
+           }   
+            
+            ave_2 = sum_2 / r;
+            printf("\n\rT: %f",ave_2 );
+            
+          
+             //conversion to degrees C - from sensor output voltage per LM61 data sheet
+            tempC = ((LM61*3.3)-0.600)*100.0;
+           
+            printf("\nC: %5.2F \n\n\n\r", tempC);
+              
+            FILE *fp = fopen("/sd/mydir/test_cooling.csv", "a");
+            if(fp == NULL) 
+               { error("Could not open file for write\n");
+               }
+        
+           fprintf(fp, "t=,%f,,,T_1,%f,,,T_2,%f,,tempC,%f\n",(double)start_c/CLOCKS_PER_SEC, ave, ave_2, tempC);
+           fclose(fp); 
+           wait(w_c);
+        }//while_c
+    
+     }//if_c
+     
+     
+      if( swi_1 == 1 && swi_2 == 1 )  // スイッチを倒さない時(真ん中の時)
+         { 
+           led();
+           printf("\n\n\nsotp\n\n\n");
+         }
+         
+} //main()