新手求助
我买了攀藤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]