整合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( );
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(,); //设置字体的起始位置
display.setTextColor(WHITE); //设置字体白色
//英文字符显示
display.setTextSize(); //设置字体大小
auto newRead = millis();
lastRead = newRead; for ( size_t i = Pms5003::PM1dot0; i < n; ++i ) {
display.print("<");
if(i == n-)
{
display.print( float(data[ i ]/) );
}
if(i == n- || i == n-)
{
display.print( float(data[ i ]/));
}
else
{
display.print(data[ i ]);//输出字符并换行
}
display.print("> ");
}
break;
}
case Pms5003::noData:
break;
};
delay();
display.display(); //把缓存的都显示
}
由于nano板内存太小,名字和单位都不能放,只是显示了数据