eew_TKwwQ7 发表于 2023-11-29 23:58

【DFRobot 云雀气象仪评测】Arduino无线智能空气监测系统搭建-04全彩OLED显示获取数据

本帖最后由 eew_TKwwQ7 于 2023-12-3 23:09 编辑

<p><span style="font-size:18px;"><strong>一、实现功能</strong></span></p>

<p>将DFRobot 云雀气象仪连接到Arduino开发板上,实时显示云雀气象仪采集到的数据,需要用到的硬件有:</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>改模块采用SPI接口,可使用Arduino对应Adafruit_SSD1331、SPI库进行驱动,模块分辨率为96*64,个性化显示数据够用了,为了便于操作OLED直接插入开发板上,单片机直驱供电(工作电流小于30mA,可以直接驱动供电)</p>

<table align="center" border="1" cellpadding="1" cellspacing="1">
        <tbody>
                <tr>
                        <td>序号</td>
                        <td>引脚</td>
                        <td>名称</td>
                        <td>ARDUINO引脚</td>
                </tr>
                <tr>
                        <td>1</td>
                        <td>GND</td>
                        <td>电源地</td>
                        <td>/</td>
                </tr>
                <tr>
                        <td>2</td>
                        <td>VCC</td>
                        <td>电源正</td>
                        <td>Pin13</td>
                </tr>
                <tr>
                        <td>3</td>
                        <td>SCX</td>
                        <td>时钟线</td>
                        <td>Pin12</td>
                </tr>
                <tr>
                        <td>4</td>
                        <td>SDA</td>
                        <td>数据线</td>
                        <td>Pin11</td>
                </tr>
                <tr>
                        <td>5</td>
                        <td>RES</td>
                        <td>复位线</td>
                        <td>Pin10</td>
                </tr>
                <tr>
                        <td>6</td>
                        <td>DC</td>
                        <td>数据/命令</td>
                        <td>Pin9</td>
                </tr>
                <tr>
                        <td>7</td>
                        <td>CS</td>
                        <td>片选</td>
                        <td>Pin8</td>
                </tr>
        </tbody>
</table>

<p>&nbsp;</p>

<div>全彩OLED屏幕资料:</div>

<p>&nbsp;</p>

<p><span style="font-size:18px;"><strong>二、程序代码</strong></span></p>

<p> &nbsp;</p>

<pre>
<code>
#include "DFRobot_LarkWeatherStation.h"
#include &lt;Wire.h&gt;
#include &lt;Arduino.h&gt;
#include &lt;Adafruit_GFX.h&gt;
#include &lt;Adafruit_SSD1331.h&gt;
#include &lt;SPI.h&gt;

#define DEVICE_ADDR                  0x42

#define MODESWITCH      /*UART:*/0 /*I2C: 0*/

#define sclk   12//SCL
#define mosi    11//SDA
#define cs      8// CS
#define rst    10//RES
#define dc   9//DC
// Color definitions
#defineBLACK          0x0000
#define BLUE            0x001F
#define RED             0xF800
#define GREEN         0x07E0
#define CYAN            0x07FF
#define MAGENTA         0xF81F
#define YELLOW          0xFFE0
#define WHITE         0xFFFF


Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, mosi, sclk, rst);

DFRobot_LarkWeatherStation_I2C atm(DEVICE_ADDR,&amp;Wire);
void setup(void){
Serial.begin(115200);
atm.begin();

pinMode(13, OUTPUT);//OLED供电
digitalWrite(13,HIGH);//OLED供电
display.begin();//OLED初始化
display.fillScreen(BLACK);//OLED清屏
}

void loop(void){
    Serial.println("----------------------------");
    Serial.print(atm.getValue("Temp"));
    Serial.println(atm.getUnit("Temp"));
    Serial.print(atm.getValue("Humi"));
    Serial.println(atm.getUnit("Humi"));
    Serial.print(atm.getValue("Speed"));
    Serial.println(atm.getUnit("Speed"));
    Serial.println(atm.getValue("Dir"));
    Serial.print(atm.getValue("Altitude"));
    Serial.println(atm.getUnit("Altitude"));
    Serial.print(atm.getValue("Pressure"));
    Serial.println(atm.getUnit("Pressure"));
    Serial.println("----------------------------");
    Serial.println(atm.getInformation(true));
    delay(100);

display.setCursor(0, 0);display.setTextColor(BLACK);display.setTextSize(2);display.println("DFROBOT");
display.setCursor(0, 16);display.setTextColor(BLACK);display.setTextSize(1);display.print("Temp:"); display.print(atm.getValue("Temp"));
display.setCursor(0, 24);display.setTextColor(BLACK);display.setTextSize(1);display.print("Humi:"); display.print(atm.getValue("Humi"));
display.setCursor(0, 32);display.setTextColor(BLACK);display.setTextSize(1);display.print("Speed:"); display.print(atm.getValue("Speed"));
display.setCursor(0, 40);display.setTextColor(BLACK);display.setTextSize(1);display.print("Dir:"); display.print(atm.getValue("Dir"));
display.setCursor(0, 48);display.setTextColor(BLACK);display.setTextSize(1);display.print("Altitude:"); display.print(atm.getValue("Altitude"));
display.setCursor(0, 56);display.setTextColor(BLACK);display.setTextSize(1);display.print("Pressure:"); display.print(atm.getValue("Pressure"));




display.setCursor(0, 0);display.setTextColor(RED);display.setTextSize(2);display.println("DFROBOT");
display.setCursor(0, 16);display.setTextColor(YELLOW);display.setTextSize(1);display.print("Temp:"); display.print(atm.getValue("Temp"));
display.setCursor(0, 24);display.setTextColor(BLUE);display.setTextSize(1);display.print("Humi:"); display.print(atm.getValue("Humi"));
display.setCursor(0, 32);display.setTextColor(GREEN);display.setTextSize(1);display.print("Speed:"); display.print(atm.getValue("Speed"));
display.setCursor(0, 40);display.setTextColor(CYAN);display.setTextSize(1);display.print("Dir:"); display.print(atm.getValue("Dir"));
display.setCursor(0, 48);display.setTextColor(MAGENTA);display.setTextSize(1);display.print("Altitude:"); display.print(atm.getValue("Altitude"));
display.setCursor(0, 56);display.setTextColor(WHITE);display.setTextSize(1);display.print("Pressure:"); display.print(atm.getValue("Pressure"));


}</code></pre>

<p>&nbsp;</p>

<p><strong><span style="font-size:18px;">三、显示效果</span></strong></p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>以上就是全彩OLED显示获取数据内容</p>

<p>2d23728b09fbbc33d67c73ea9b202109</p>

秦天qintian0303 发表于 2023-12-4 09:44

<p>屏有点小了,这个传感器参数挺多的,怎么也得全显示了&nbsp;&nbsp;</p>

eew_TKwwQ7 发表于 2023-12-4 10:08

秦天qintian0303 发表于 2023-12-4 09:44
屏有点小了,这个传感器参数挺多的,怎么也得全显示了&nbsp;&nbsp;

<p>后面用labview电脑上位机显示:pleased:</p><br/>

秦天qintian0303 发表于 2023-12-4 11:42

eew_TKwwQ7 发表于 2023-12-4 10:08
后面用labview电脑上位机显示

<p>那是另外的应用了,最好弄个可以离线查看的&nbsp;&nbsp;</p>
页: [1]
查看完整版本: 【DFRobot 云雀气象仪评测】Arduino无线智能空气监测系统搭建-04全彩OLED显示获取数据