zoukankan      html  css  js  c++  java
  • 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板内存太小,名字和单位都不能放,只是显示了数据

  • 相关阅读:
    javamail.providers not found
    vue.js实现购物车功能2.0版本
    vue.js实现购物车功能
    iframe高度自适应
    C语言 自定义字符串拼接函数
    php安装
    Apache安装
    python:爬虫初体验
    c:forEach 显示下拉框并回显
    数据结构 --- 线性表学习(php模拟)
  • 原文地址:https://www.cnblogs.com/nightnine/p/6661428.html
Copyright © 2011-2022 走看看