Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: OLED USBDevice max32630fthr
Fork of FTHR_OLED by
Revision 12:53ca22948a98, committed 2017-09-27
- Comitter:
- feilang
- Date:
- Wed Sep 27 14:28:10 2017 +0000
- Parent:
- 11:bf8283c27606
- Child:
- 13:b39926d89b1f
- Commit message:
- none
Changed in this revision
| Adafruit_FeatherOLED.lib | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/Adafruit_FeatherOLED.lib Wed Sep 27 04:41:40 2017 +0000 +++ b/Adafruit_FeatherOLED.lib Wed Sep 27 14:28:10 2017 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/switches/code/Adafruit_FeatherOLED/#a267f00528be +https://developer.mbed.org/users/switches/code/Adafruit_FeatherOLED/#5a9708927d23
--- 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
+}
