码迷,mamicode.com
首页 > 其他好文 > 详细

PMS5003ST+Arduino Nano OLED屏显示

时间:2017-04-03 11:40:02      阅读:905      评论:0      收藏:0      [点我收藏+]

标签:lease   set   内存   arduino   void   位置   ==   bsp   logo   

整合OLED显示和PMS5003报数

#include <Arduino.h>
#include <pms.h>
//////////////////////////////////
#include <SPI.h>  
#include <Wire.h>  
#include <Adafruit_GFX.h>  
#include <Adafruit_SSD1306.h> 
////////////////////////////////////////
#define OLED_RESET 4  
Adafruit_SSD1306 display(OLED_RESET); 
//////////////////////////////////
#if defined PMS_DYNAMIC
Pms5003 *_pms;
#define pms (*_pms)
#else
Pms5003 pms;
#endif
#define LOGO16_GLCD_HEIGHT 16 //定义显示高度  
#define LOGO16_GLCD_WIDTH  16 //定义显示宽度 
#if (SSD1306_LCDHEIGHT != 64)  
#error("Height incorrect, please fix Adafruit_SSD1306.h!");  
#endif   
////////////////////////////////////////
auto lastRead = millis();

void setup( void ) {
    Serial.begin( 115200 );
    while ( !Serial ) { };
    display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)  
    display.clearDisplay();
#if defined PMS_DYNAMIC
    _pms = new Pms5003();
#else
    pms.begin();
#endif
}

////////////////////////////////////////

void loop( void ) {
   
    ///////////////////////////////
    const int n = Pms5003::Reserved;
    Pms5003::pmsData data[ n ];

    Pms5003::PmsStatus status = pms.read( data, n );
     
    switch ( status ) {
        case Pms5003::OK:
        {
            display.clearDisplay();
    display.setCursor(0,0);             //设置字体的起始位置 
     display.setTextColor(WHITE);        //设置字体白色  
    //英文字符显示  
    display.setTextSize(1);             //设置字体大小      
            auto newRead = millis();
            lastRead = newRead;

            for ( size_t i = Pms5003::PM1dot0; i < n; ++i ) {
                display.print("<");
                if(i == n-3)
                {
                  display.print( float(data[ i ]/1000) );
                 }  
                if(i == n-2 || i == n-1)
                  {
                      display.print( float(data[ i ]/10)); 
                   }
                else
                {
                  display.print(data[ i ]);//输出字符并换行
                }
                  display.print("> ");
            }
            break;
        }
        case Pms5003::noData:
            break;
    };
    delay(500);
     display.display();                  //把缓存的都显示
}

由于nano板内存太小,名字和单位都不能放,只是显示了数据

技术分享

 

PMS5003ST+Arduino Nano OLED屏显示

标签:lease   set   内存   arduino   void   位置   ==   bsp   logo   

原文地址:http://www.cnblogs.com/nightnine/p/6661428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!