【DFRobot 云雀气象仪评测】Arduino无线智能空气监测系统搭建-04全彩OLED显示获取数据
[复制链接]
本帖最后由 eew_TKwwQ7 于 2023-12-3 23:09 编辑
一、实现功能
将DFRobot 云雀气象仪连接到Arduino开发板上,实时显示云雀气象仪采集到的数据,需要用到的硬件有:
改模块采用SPI接口,可使用Arduino对应Adafruit_SSD1331、SPI库进行驱动,模块分辨率为96*64,个性化显示数据够用了,为了便于操作OLED直接插入开发板上,单片机直驱供电(工作电流小于30mA,可以直接驱动供电)
序号 |
引脚 |
名称 |
ARDUINO引脚 |
1 |
GND |
电源地 |
/ |
2 |
VCC |
电源正 |
Pin13 |
3 |
SCX |
时钟线 |
Pin12 |
4 |
SDA |
数据线 |
Pin11 |
5 |
RES |
复位线 |
Pin10 |
6 |
DC |
数据/命令 |
Pin9 |
7 |
CS |
片选 |
Pin8 |
二、程序代码
#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
#define BLACK 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"));
}
三、显示效果
以上就是全彩OLED显示获取数据内容
WeChat_20231203230552
|