max32630
Dependencies: OLED USBDevice max32630fthr
Fork of FTHR_OLED by
Diff: main.cpp
- 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 +}