极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12436|回复: 0

新手求助

[复制链接]
发表于 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[250];
        static unsigned char ucRxCnt = 0;
        long  pmcf10=0;
        long  pmcf25=0;
        long  pmcf100=0;
        long  pmat10=0;
        long  pmat25=0;
        long  pmat100=0;
        long  pmcount03=0;
        long  pmcount05=0;
        long  pmcount10=0;
        long  pmcount25=0;
        long  pmcount50=0;
        long  pmcount100=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[250];
        static unsigned char ucRxCnt = 0;
        long  pmcf10=0;
        long  pmcf25=0;
        long  pmcf100=0;
        long  pmat10=0;
        long  pmat25=0;
        long  pmat100=0;
        long  pmcount03=0;
        long  pmcount05=0;
        long  pmcount10=0;
        long  pmcount25=0;
        long  pmcount50=0;
        long  pmcount100=0;

       
        ucRxBuffer[ucRxCnt++]=ucData;

        if (ucRxBuffer[0]!=0x42&&ucRxBuffer[1]!=0x4D)
        {
                ucRxCnt=0;
             return ucRxCnt;
                        }
        if (ucRxCnt<32) {return ucRxCnt;}
        else
        {
          for (int i=0;i<32;i++)
  {Serial.print(ucRxBuffer[i]);Serial.print("  ");}
  Serial.println("");       
  pmcf10=(float)ucRxBuffer[4]*256+(float)ucRxBuffer[5];Serial.print("PM1.0_CF1:");Serial.print(pmcf10);Serial.print("   ");       
  pmcf25=(float)ucRxBuffer[6]*256+(float)ucRxBuffer[7];Serial.print("PM2.5_CF1:");Serial.print(pmcf25);Serial.print("   ");
  pmcf100=(float)ucRxBuffer[8]*256+(float)ucRxBuffer[9];Serial.print("PM10_CF1:");Serial.print(pmcf100);Serial.println("   ");
  pmat10=(float)ucRxBuffer[10]*256+(float)ucRxBuffer[11];  Serial.print("PM1.0_AT:");Serial.print(pmat10);Serial.print("   ");
  pmat25=(float)ucRxBuffer[12]*256+(float)ucRxBuffer[13];  Serial.print("PM2.5_AT:");Serial.print(pmat25);Serial.print("   ");
  pmat100=(float)ucRxBuffer[14]*256+(float)ucRxBuffer[15];  Serial.print("PM10_AT:");Serial.print(pmat100);Serial.println("   ");
  pmcount03=(float)ucRxBuffer[16]*256+(float)ucRxBuffer[17];  Serial.print("PMcount0.3:");Serial.print(pmcount03);Serial.print("   ");
  pmcount05=(float)ucRxBuffer[18]*256+(float)ucRxBuffer[19];  Serial.print("PMcount0.5:");Serial.print(pmcount05);Serial.print("   ");
  pmcount10=(float)ucRxBuffer[20]*256+(float)ucRxBuffer[21];  Serial.print("PMcount1.0:");Serial.print(pmcount10);Serial.println("   ");
  pmcount25=(float)ucRxBuffer[22]*256+(float)ucRxBuffer[23];  Serial.print("PMcount2.5:");Serial.print(pmcount25);Serial.print("   ");
  pmcount50=(float)ucRxBuffer[24]*256+(float)ucRxBuffer[25];  Serial.print("PMcount5.0:");Serial.print(pmcount50);Serial.print("   ");
  pmcount100=(float)ucRxBuffer[26]*256+(float)ucRxBuffer[27];  Serial.print("PMcount10:");Serial.print(pmcount100);Serial.println("   ");
Serial.println(" *****************************************************************  ");
Serial.println("   ");

        ucRxCnt=0;
        return ucRxCnt;
        }
  char temp[5];
  dtostrf(pmcount25,5,2,temp);
  strcat(temp,"PM2.5");
  oled.clear();
  oled.drawstring(22,4,temp);
  oled.display();
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 06:13 , Processed in 0.033391 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表