【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> </p>
<p> </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> </p>
<div>全彩OLED屏幕资料:</div>
<p> </p>
<p><span style="font-size:18px;"><strong>二、程序代码</strong></span></p>
<p> </p>
<pre>
<code>
#include "DFRobot_LarkWeatherStation.h"
#include <Wire.h>
#include <Arduino.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>
#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,&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> </p>
<p><strong><span style="font-size:18px;">三、显示效果</span></strong></p>
<p> </p>
<p> </p>
<p>以上就是全彩OLED显示获取数据内容</p>
<p>2d23728b09fbbc33d67c73ea9b202109</p>
<p>屏有点小了,这个传感器参数挺多的,怎么也得全显示了 </p>
秦天qintian0303 发表于 2023-12-4 09:44
屏有点小了,这个传感器参数挺多的,怎么也得全显示了
<p>后面用labview电脑上位机显示:pleased:</p><br/> eew_TKwwQ7 发表于 2023-12-4 10:08
后面用labview电脑上位机显示
<p>那是另外的应用了,最好弄个可以离线查看的 </p>
页:
[1]