黄先生有点帅 发表于 2015-7-25 10:24:20

新手求助

我买了攀藤PM2.5传感器,现在想让检测到的PM2.5,PM10的值显示在OLED上,可是我弄的代码显示不了,麻烦各位大神帮帮忙,跪谢大神!



#include <Wire.h>
#include <SSD1306.h>


#define OLED_CLK 9
#define OLED_MOSI 8
#define OLED_RESET 7
#define OLED_DC 6

SSD1306 oled(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, -1);
//#include <WCLHPM25.h>
/*
Test on Uno R3.
M3C   UnoR3
TX <---> 0(Rx)
*/
        static unsigned char ucRxBuffer;
        static unsigned char ucRxCnt = 0;
        longpmcf10=0;
        longpmcf25=0;
        longpmcf100=0;
        longpmat10=0;
        longpmat25=0;
        longpmat100=0;
        longpmcount03=0;
        longpmcount05=0;
        longpmcount10=0;
        longpmcount25=0;
        longpmcount50=0;
        longpmcount100=0;
void setup()
{
Serial.begin(9600);
   oled.ssd1306_init(SSD1306_SWITCHCAPVCC);
oled.clear();
oled.display();
}

void loop()
{
//int received data. Data was received in serialEvent;

   while (Serial.available())
{
    CopeSerialData(Serial.read());
}

Serial.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
delay(5000);
}

char CopeSerialData(unsigned char ucData)
{
        static unsigned char ucRxBuffer;
        static unsigned char ucRxCnt = 0;
        longpmcf10=0;
        longpmcf25=0;
        longpmcf100=0;
        longpmat10=0;
        longpmat25=0;
        longpmat100=0;
        longpmcount03=0;
        longpmcount05=0;
        longpmcount10=0;
        longpmcount25=0;
        longpmcount50=0;
        longpmcount100=0;

       
        ucRxBuffer=ucData;

        if (ucRxBuffer!=0x42&&ucRxBuffer!=0x4D)
        {
                ucRxCnt=0;
             return ucRxCnt;
                        }
        if (ucRxCnt<32) {return ucRxCnt;}
        else
        {
          for (int i=0;i<32;i++)
{Serial.print(ucRxBuffer);Serial.print("");}
Serial.println("");       
pmcf10=(float)ucRxBuffer*256+(float)ucRxBuffer;Serial.print("PM1.0_CF1:");Serial.print(pmcf10);Serial.print("   ");       
pmcf25=(float)ucRxBuffer*256+(float)ucRxBuffer;Serial.print("PM2.5_CF1:");Serial.print(pmcf25);Serial.print("   ");
pmcf100=(float)ucRxBuffer*256+(float)ucRxBuffer;Serial.print("PM10_CF1:");Serial.print(pmcf100);Serial.println("   ");
pmat10=(float)ucRxBuffer*256+(float)ucRxBuffer;Serial.print("PM1.0_AT:");Serial.print(pmat10);Serial.print("   ");
pmat25=(float)ucRxBuffer*256+(float)ucRxBuffer;Serial.print("PM2.5_AT:");Serial.print(pmat25);Serial.print("   ");
pmat100=(float)ucRxBuffer*256+(float)ucRxBuffer;Serial.print("PM10_AT:");Serial.print(pmat100);Serial.println("   ");
pmcount03=(float)ucRxBuffer*256+(float)ucRxBuffer;Serial.print("PMcount0.3:");Serial.print(pmcount03);Serial.print("   ");
pmcount05=(float)ucRxBuffer*256+(float)ucRxBuffer;Serial.print("PMcount0.5:");Serial.print(pmcount05);Serial.print("   ");
pmcount10=(float)ucRxBuffer*256+(float)ucRxBuffer;Serial.print("PMcount1.0:");Serial.print(pmcount10);Serial.println("   ");
pmcount25=(float)ucRxBuffer*256+(float)ucRxBuffer;Serial.print("PMcount2.5:");Serial.print(pmcount25);Serial.print("   ");
pmcount50=(float)ucRxBuffer*256+(float)ucRxBuffer;Serial.print("PMcount5.0:");Serial.print(pmcount50);Serial.print("   ");
pmcount100=(float)ucRxBuffer*256+(float)ucRxBuffer;Serial.print("PMcount10:");Serial.print(pmcount100);Serial.println("   ");
Serial.println(" *****************************************************************");
Serial.println("   ");

        ucRxCnt=0;
        return ucRxCnt;
        }
char temp;
dtostrf(pmcount25,5,2,temp);
strcat(temp,"PM2.5");
oled.clear();
oled.drawstring(22,4,temp);
oled.display();
}
页: [1]
查看完整版本: 新手求助