PMS5003ST+Arduino Nano OLED屏显示

整合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板内存太小,名字和单位都不能放,只是显示了数据

 

转载于:https://www.cnblogs.com/nightnine/p/6661428.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值