max32630

Dependencies:   OLED USBDevice max32630fthr

Fork of FTHR_OLED by Greg Steiert

Revision:
12:53ca22948a98
Parent:
11:bf8283c27606
Child:
13:b39926d89b1f
--- a/main.cpp	Wed Sep 27 04:41:40 2017 +0000
+++ b/main.cpp	Wed Sep 27 14:28:10 2017 +0000
@@ -16,9 +16,9 @@
 DigitalOut ledbarClk(P5_3);
 DigitalOut ledbardat(P5_4);
 DigitalOut ledbarlatch(P5_5);
+DigitalOut ledEnable(P5_6);
+int airBufferPrcess( float a, float b);
 void shirftDate(unsigned int date);
-int airBufferPrcess(unsigned int a,unsigned int b);
-
 /* Analog inputs 0 and 1 have internal dividers to allow measuring 5V signals  
  * The dividers are selected by using inputs AIN_5 and AIN_5 respectively.
  * The full scale range for AIN0-3 is 1.2V
@@ -35,10 +35,10 @@
     unsigned int pm25;
     unsigned int pm1;
     unsigned int pm10;
+    unsigned int airDisplayDate;
+    //unsigned int alcoholDate,fireAirDate;
 
-    unsigned int airDisplayDate;
-
-    daplink.printf("start \r\n");
+    //daplink.printf("start \r\n");
     pmSerial.baud(9600);
 
     Thread::wait(50);  // Give the supplies time to settle before initializing the display
@@ -47,7 +47,7 @@
     //OLED.printf("HelloWorld \r");
     //OLED.display();
 
-    daplink.printf("OLED init over \r\n");
+    //daplink.printf("OLED init over \r\n");
     while(1) {
         Thread::wait(250);
         
@@ -63,18 +63,18 @@
                 unsigned int exptsum = (incomeByte[30]<<8) + incomeByte[31];
                 for(int i = 0; i < 30; i++){
                     calcsum += incomeByte[i];
-                    daplink.printf("income[%d],%d\n",i,incomeByte[i]);
+                   // daplink.printf("income[%d],%d\n",i,incomeByte[i]);
                 }
                 if( calcsum == exptsum)
                 {
-                   daplink.printf("check ok \n");
+                   //daplink.printf("check ok \n");
                    pm1 = incomeByte[10] + incomeByte[11];
                    pm25 = incomeByte[12] + incomeByte[13];
                    pm10 = incomeByte[14] + incomeByte[15];
 
-                   daplink.printf("pm1:%d\n",pm1);
-                   daplink.printf("pm2.5:%d\n",pm25);
-                   daplink.printf("pm10:%d\n",pm10);
+                   //daplink.printf("pm1:%d\n",pm1);
+                   //daplink.printf("pm2.5:%d\n",pm25);
+                   //daplink.printf("pm10:%d\n",pm10);
 
                 }
         
@@ -83,19 +83,33 @@
         Thread::wait(10);
         OLED.clearDisplay();
         OLED.setTextCursor(0,0);
-        OLED.printf("MAX32630FTHR OLED\n");
-        OLED.printf("fireAir: %1.2f\n", (6.0f * fireAir) );  // fireAir inputs 4
-        OLED.printf("alcohol: %1.2f\n", (1.2f * alcohol) );  // alcohol inputs 5
-        OLED.printf("PM2.5: %d \n", pm25 );  // alcohol inputs 5
+        OLED.printf("Car air memter \n");
+        OLED.printf("CO: %1.2f\n", (6.0f * fireAir) );  // fireAir inputs 4
+        OLED.printf("alcohol: %1.2f\n", (6.0f * alcohol) );  // alcohol inputs 5
+        OLED.printf("PM2.5: %d \n", pm25 );  //
+        OLED.printf("PM10 : %d \n", pm10 );  // 
+        OLED.printf("PM1  : %d \n", pm1 );  // 
         OLED.display();
-        airDisplayDate = airBufferPrcess( fireAir, alcohol );
-        shirftDate(airDisplayDate);
+        daplink.printf("CO     : %1.2f\n", (6.0f * fireAir) );
+        daplink.printf("alcohol: %1.2f\n", (6.0f * alcohol) );
+                
+        airDisplayDate = airBufferPrcess( (6.0f * fireAir), (6.0f *alcohol) );
+        daplink.printf("date for shirtf:%d\n",airDisplayDate);
+        ledEnable = 1;
+        ledEnable = 0;
+        //shirftDate( ~airDisplayDate );
+        shirftDate( 0x00ffff);
         
-        while((pm25 > 100)||(fireAir > 0x08)||(alcohol > 0x08)){
+        while((pm25 > 100)||(fireAir > 1)||(alcohol > 1)){
             
             OLED.clearDisplay();
-            Thread::wait(500);
-            OLED.printf("ERROR");
+            Thread::wait(50);
+            OLED.printf("ERROR \n");
+            OLED.printf("ERROR \n");
+            OLED.printf("ERROR \n");
+            OLED.printf("ERROR \n");
+            OLED.printf("ERROR \n");
+            OLED.printf("ERROR \n");
             OLED.display();
             Thread::wait(500);            
             }
@@ -104,48 +118,54 @@
     }
 }
 
-
-
-
-
 /*传入LB数据,共24位取低位24*/
 /*低20位用于两个LED bar*/
 void shirftDate(unsigned int date){
-    for( int i = 0; i < 20; i++ ){
-        if( date & 0x200 ){
-            ledbardat = 1;
-            
+    unsigned int _date = date;
+    //_date &= 0xfffff;
+    for( int i = 24; i > 0; i-- ){
+        if( _date  & (0x01 << i ) ){
+            ledbardat = 1;            
         }else{
             ledbardat = 0;
         }
-
+       // daplink.printf("date ledbardat:%d\n",ledbardat);
+        ledbarClk = 0;
+        Thread::wait(0.5);
         ledbarClk = 1;
-        ledbarClk = 0;
-        date <<= 1;
     }
-    /*补充4位空白*/
-    for(int i=4;i>0;i--){
-            ledbardat = 0;
-            ledbarClk = 1;
-            ledbarClk = 0;
-    }
+    // /*补充4位空白*/
+    // for(int i= 0; i < 4 ; i++){
+    //         ledbardat = 0;
+    //         ledbarClk = 1;
+    //         Thread::wait(0.5);
+    //         ledbarClk = 0;
+    // }
 
+    ledbarlatch = 0;
+    Thread::wait(0.5);
     ledbarlatch = 1;
 
 }
+
 //空气模拟数据处理,a,b分别表示 CO与acohol;
 //采用对数级浓度增加对应一位,
-int airBufferPrcess(unsigned int a,unsigned int b)
+int airBufferPrcess( float a, float b)
 {
+    unsigned int _a , _b;
+     _a = (unsigned int)( a / 0.1);
+     _b = (unsigned int)( b / 0.1);
+     daplink.printf("airDisplayDate:%d\n",_a);
+     daplink.printf("airDisplayDate:%d\n",_b);
     unsigned int _ProcessDate[3]={1,1,0};
     for(int i=0;i<10;i++){
-        a >>= 1;
-        b >>= 1;
-        if(a){
+        _a >>= 1;
+        _b >>= 1;
+        if(_a > 0){
             _ProcessDate[0] <<= 1;
             _ProcessDate[0]++;
         }
-        if(b){
+        if(_b > 0){
             _ProcessDate[1] <<= 1;
             _ProcessDate[1]++;
         }
@@ -154,4 +174,4 @@
     }
 
     return _ProcessDate[2];
-}
\ No newline at end of file
+}