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

时间: 2024-10-27 00:57:20

PMS5003ST+Arduino Nano OLED屏显示的相关文章

图形化编程娱乐于教,Kittenblock arduino实例,液晶屏显示

跟很多学生聊过,很多学生不是不努力,只是找不到感觉.有一点不可否认,同样在一个教室上课,同样是一个老师讲授,学习效果迥然不同.关键的问题在于,带入感,我能给出的建议,就是咬咬牙,坚持住,没有学不会的知识.会陆续分享图形化编程的经验,希望能够做成一个专题.如果您觉得有用,就给点个赞吧.涉及的软件包括Kittenblock.arduino. 程序解读:数码管计时器,通过延迟时间为一秒,变量加1,完成记录时间 知识点:液晶屏显示,arduino,执行器,结构 重点:液晶屏显示 涉及的软件:Kitten

arduino驱动oled

OLED一款小巧的显示屏,感觉可以做出很可爱的东西. 这次实验的这款是128X64的OLED屏幕 , 芯片是SSD1306,请确认自家模块芯片型号,不然对不上号啊 使用IIC的方法,简单实验显示示例程序. (请确认你手头上的模块可以IIC连接,若干不支持那只能SPI方式接线) 先实现连接与显示,之后再进行更深入的应用. 任意门: Arduino Uno 驱动OLED进阶 显示中英文字 Arduino Uno 驱动OLED进阶 显示图片 Arduino Uno 驱动OLED进阶 显示几何动画 编译

Arduino Nano + WIZ550io = 简易上网

我爱Arduino Nano – 这是一个非常好外形小巧却功能齐全的Arduino Uno.然而.当我去将它连接到互联网,全部的干净利落小巧也消失在大尺寸的以太网盾底下了. 只是,我近期发现了一个更好的,更紧凑的方式给我的nano连接到互联网 – 通过使用WIZnet公司小巧得多(且更廉价)的WIZ550io模块! 假设你想方便连接,你能够找到一个可连接该模块和Arduino Uno的适配器板,但我想保持小巧的子板.通过我的Nano把它们直接连接在一起.然而.假设你没有适配板,你能够利用同样的方

STM32学习笔记——OLED屏

STM32学习笔记--OLED屏 OLED屏的特点: 1.  模块有单色和双色可选,单色为纯蓝色,双色为黄蓝双色(本人选用双色): 2.  显示尺寸为0.96寸 3.  分辨率为128*64 4.  多种接口方式,该模块提供了总共 5 种接口包括: 6800. 8080 两种并行接口方式. 3线或4线的SPI接口,IIC接口方式 5.  不需要高压,直接接3.3V就可以工作:(可以与stm32的引脚直接相接) OLED图片: OLED引脚介绍: CS:OLED片选信号 RST:OLED复位端口

为OLED屏增加GUI支持5:图片控件

本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN10 开发环境:MDK5.13 MCU:STM32F103 说明: 本文定义了图片控件.OLED屏是单色屏,所以本图片控件支持的是单色BMP图像. 将普通图像转换为单色图片可以用工具BmpCvt.exe.将转换后的BMP图像转换为hex文件,可以用Bin2C.exe.这两个工具都是emwin自带工具. 源代码: 转换后的hex文件再整理成如下的示例格式: battery0.c /*

Xcode 设置图片全屏显示

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.// UIImage *image = [UIImage imageNamed:@"initial_page_bg.jpg" ]; UIImageView *imageView = [[UIImageView alloc]initWithImage:image

Linux 命令 - watch: 反复执行命令,全屏显示输出

watch 命令周期性地执行命令,全屏显示输出.可以通过 watch 命令反复执行某一程序来监视它的输出变化. 命令格式 watch [-dhvt] [-n <seconds>] [--differences[=cumulative]] [--help] [--interval=<seconds>] [--no-title] [--version] <command> 命令参数 -n, --interval 指定间隔时间.默认情况下,watch 每隔 2 秒执行一次命令

Android全屏显示(代码实现)

// 去掉窗口标题 requestWindowFeature(Window.FEATURE_NO_TITLE); // 全屏显示 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 注:写在activity里

Fullscreen API 全屏显示网页

第一次看到应用 Fullscreen API 全屏显示网页,是 FaceBook 中的照片放大.作为一个比较新的 API,目前只有 Safari.Chrome 和 FireFox 三种浏览器支持该特性.因为尚未发布正式版的标准,所以必须使用浏览器特定的方法,也就是应用添加前缀(webit/moz)的方法. 这个 API 不仅能够使整个页面全屏显示,也可以使页面中的某个元素全屏显示.它的设计初衷是为了全屏显示 HTML5 视频和游戏,以便更全面的替代 flash 功能.尽管还有很多有待完善的地方,