Arduino-OLED-四度显示
double Fahrenheit(double celsius) { ; } //摄氏温度度转化为华氏温度 double Kelvin(double celsius) { return celsius + 273.15; } //摄氏温度转化为开氏温度 // 露点(点在此温度时,空气饱和并产生露珠) // 参考: http://wahiduddin.net/calc/density_algorithms.htm double dewPoint(double celsius, double humidity) { double A0= 373.15/(273.15 + celsius); ); SUM += 5.02808 * log10(A0); SUM += -, (-/A0)))-) ; SUM += ,(-)))-) ; SUM += log10(1013.246); , SUM-) * humidity; double T = log(VP/0.61078); // temp var return (241.88 * T) / (17.558-T); } // 快速计算露点,速度是5倍dewPoint() // 参考: http://en.wikipedia.org/wiki/Dew_point double dewPointFast(double celsius, double humidity) { double a = 17.271; double b = 237.7; ); double Td = (b * temp) / (a - temp); return Td; } static const unsigned char PROGMEM str_1[] = { 0x00,0x08,0x43,0xFC,0x32,0x08,0x12,0x08, 0x83,0xF8,0x62,0x08,0x22,0x08,0x0B,0xF8, 0x10,0x00,0x27,0xFC,0xE4,0xA4,0x24,0xA4, 0x24,0xA4,0x24,0xA4,0x2F,0xFE,0x20,0x00, };//温 static const unsigned char PROGMEM str_2[] = { 0x01,0x00,0x00,0x84,0x3F,0xFE,0x22,0x20, 0x22,0x28,0x3F,0xFC,0x22,0x20,0x23,0xE0, 0x20,0x00,0x2F,0xF0,0x22,0x20,0x21,0x40, 0x20,0x80,0x43,0x60,0x8C,0x1E,0x30,0x04, }; // 度 static const unsigned char PROGMEM str_3[] = { 0x00,0x08,0x47,0xFC,0x34,0x08,0x14,0x08, 0x87,0xF8,0x64,0x08,0x24,0x08,0x0F,0xF8, 0x11,0x20,0x21,0x20,0xE9,0x24,0x25,0x28, 0x23,0x30,0x21,0x24,0x3F,0xFE,0x20,0x00, }; //湿 #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <dht11.h> #include <DS3231.h> #include <LiquidCrystal_I2C.h> #include <RTClib.h> dht11 DHT11; #define DHT11PIN 2 #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); #define LOGO16_GLCD_HEIGHT 16 //定义显示高度 #define LOGO16_GLCD_WIDTH 16 //定义显示宽度 #if (SSD1306_LCDHEIGHT != 64) #error("Height incorrect, please fix Adafruit_SSD1306.h!"); #endif void printDateTime(DateTime dateTime); //创建实例 RTC_DS1307 RTC; DS3231 Clock; bool Century=false; bool h12; bool PM; uint8_t bell[] = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4}; ]; ], Str_month[], Str_date[], Str_DoW[], Str_hour[], Str_minute[], Str_second[]; String recivedStr="";//接收到的字符串 ;//接收到的字符个数 void setup() { Serial.begin(); Wire.begin(); // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64) //OLED 的I2C位置 // init done display.clearDisplay(); //////////////// // Serial.println("Please enter the time: year[2]month[2]date[2]DoW[2]hour[2]minute[2]second[2]"); // Serial.println("example: 2014-12-3 Wednesday 14:15:15 enter:14120303141515");//1703072154 //英文字符显示 //display.setTextSize(1); //设置字体大小 //display.setTextColor(WHITE); //设置字体颜色白色 //display.setCursor(0,0); //设置字体的起始位置 //display.println(" zhongbest.com");//输出字符并换行 //display.display(); //把缓存的都显示 //初始化实时时钟 RTC.begin(); } void loop() { int chk = DHT11.read(DHT11PIN); // Serial.print("Read sensor: "); // switch (chk) // { // case DHTLIB_OK: // Serial.println("OK"); // break; // case DHTLIB_ERROR_CHECKSUM: // Serial.println("Checksum error"); // break; // case DHTLIB_ERROR_TIMEOUT: // Serial.println("Time out error"); // break; // default: // Serial.println("Unknown error"); // break; // } display.clearDisplay(); //英文字符显示 display.setTextSize(); //设置字体大小 display.setTextColor(WHITE); //设置字体颜色白色 display.setCursor(,); //设置字体的起始位置 // display.print("Humidity(%):"); // display.println((float)DHT11.humidity, 2); // display.print("Temperature(oC):"); // display.print("Temperature(oF):"); // display.println(Fahrenheit(DHT11.temperature), 2); // // display.print("Temperature(K):"); // display.println(Kelvin(DHT11.temperature), 2); // // display.print("Dew Point(oC):"); // display.println(dewPoint(DHT11.temperature, DHT11.humidity)); // // display.print("Dew PointFast(oC):"); // display.println(dewPointFast(DHT11.temperature, DHT11.humidity)); //中文字符显示 display.drawBitmap(, , str_1, , , ); //在坐标X:26 Y:16的位置显示中文字符中 display.drawBitmap(, , str_2, , , ); //在坐标X:42 Y:16的位置显示中文字符贝 display.setCursor(,); //设置字体的起始位置 display.setTextSize(); //设置字体大小 display.print(":"); display.println((); display.drawBitmap(, , str_3, , , ); //在坐标X:26 Y:16的位置显示中文字符中 display.drawBitmap(, , str_2, , , ); //在坐标X:42 Y:16的位置显示中文字符贝 display.setCursor(,); //设置字体的起始位置 display.setTextSize(); //设置字体大小 display.print(":"); display.println((); int val; val=analogRead(); // Serial.println(val,DEC); display.setCursor(,); //设置字体的起始位置 display.print("MQ-2: "); display.println(val,DEC); // display.setCursor(0,60); display.print("-------------------"); DateTime now = RTC.now(); //通过串口传送当前的日期和时间 printDateTime(now); /////////////////////////////////////////////////////////// )//读取字符串 { recivedStr += char(Serial.read()); // delay(2); recivedNum = recivedNum+; } ) { //year[2]month[2]date[2]DoW[2]hour[2]minute[2]second[2] String strtemp = ""; strtemp = recivedStr.substring(,); int years = strtemp.toInt(); RTC.set(RTC_YEAR,years);//设置年 strtemp = recivedStr.substring(,); int months = strtemp.toInt(); RTC.set(RTC_MONTH,months);//设置月 strtemp = recivedStr.substring(,); int days = strtemp.toInt(); RTC.set(RTC_DAY,days);//设置日 strtemp = recivedStr.substring(,); int hours = strtemp.toInt(); RTC.set(RTC_HOUR,hours);//设置小时 strtemp = recivedStr.substring(,); int minutes = strtemp.toInt(); RTC.set(RTC_MINUTE,minutes);//设置分钟 strtemp = recivedStr.substring(,); int seconds = strtemp.toInt(); RTC.set(RTC_SECOND,seconds);//设置秒 recivedNum = ; } display.display(); //把缓存的都显示 delay(); } void printDateTime(DateTime dateTime) { //传送年份 display.setCursor(,); //设置字体的起始位置 display.print(dateTime.year(), DEC); display.print('/'); //传送月份 display.print(dateTime.month(), DEC); display.print('/'); //传送月份中的第几天 display.print(dateTime.day(), DEC); display.print(' '); //传送小时 display.print(dateTime.hour(), DEC); display.print(':'); //传送分钟 display.print(dateTime.minute(), DEC); display.print(':'); //传送秒 display.print(dateTime.second(), DEC); display.display(); //把缓存的都显示 }
模块:
OLED12864显示屏:
模块针脚 Arduino针脚
VCC ----> 3.3V
GND ----> GND
SCL ----> A5
SDA ----> A4
烟雾传感器MQ-2:
VCC ----> 5V
GND ----> GND
A0 ----> A0
温湿度传感器DHT11:
+ ------> 5V
OUT ------> 2
- ------> GND
时钟模块DS1307:
SCL -------> A5
SDA -------> A4
VCC -------> 5V
GND -------> GND
Arduino-OLED-四度显示的更多相关文章
- 用STM32玩OLED(显示文字、图片、动图gif等)
目录 用STM32玩OLED(显示文字.图片.动图gif等) 1. 显示字符串 2. 显示中文 3. 显示图片 4. 显示动图 5. 总结测试 用STM32玩OLED(显示文字.图片.动图gif等) ...
- PMS5003ST+Arduino Nano OLED屏显示
整合OLED显示和PMS5003报数 #include <Arduino.h> #include <pms.h> /////////////////////////////// ...
- 东芝开发板驱动OLED模块显示LOGO图片
前言 在之前的两篇评测文章: 使用系统定时器SysTick实现精确延时微秒和毫秒函数 东芝MCU实现位带操作 介绍了系统SysTick实现精确延时,GPIO的输入输出使用,并实现了位带方式操作GPIO ...
- 树莓派使用 OLED 屏显示图片及文字
树莓派默认是不带显示屏的,如果想要查看系统的一些信息,需要使用电脑登录到树莓派,或者通过 HDMI 连接外接显示器查看.这样做总是有点麻烦,我们可以通过外接一个 OLED 屏来显示一些关键参数或者图片 ...
- 用Arduino显示颜色序列(u8g2,OLED)
目录 用Arduino显示颜色序列(u8g2,OLED) 用Arduino显示颜色序列(u8g2,OLED) 提前祝大家新年快乐! 主控:Arduino Mega 2560 硬件:126×64 OLE ...
- Arduino和C51开发OLED显示屏
技术:51单片机.Arduino.OLED显示屏.U8glib 概述 OLED显示屏常常用作为智能产品的显示设备,本文简单介绍OLED显示屏的使用方法. 详细 代码下载:http://www.de ...
- ESP8266开发之旅 应用篇② OLED显示天气屏
1.前言 这一篇,博主将教大家怎么去实现一个简易版本的天气助手. 先来一个博主已经实现功能的图片,如下: 1.1 知识储备 本篇需要用到以下知识点: 运用到ArduinoJso ...
- arduino驱动oled
OLED一款小巧的显示屏,感觉可以做出很可爱的东西. 这次实验的这款是128X64的OLED屏幕 , 芯片是SSD1306,请确认自家模块芯片型号,不然对不上号啊 使用IIC的方法,简单实验显示示例程 ...
- 基于STM32的脉搏心率检测仪(OLED可以实时显示脉冲波形)
—设计完整,功能可全部实现,有完整报告文档说明.程序以及pcb文件— 可作为:课程设计,STM32实践学习,电子制作等 设计所实现的功能: 利用STM32的AD采集功能实时采集心率传感器信号输出引脚输 ...
- MicroPython之TPYBoard v102开发板控制OLED显示中文
转载请以链接形式注明文章来源,公众号:MicroPython玩家汇 0x00前言 之前看到一篇文章是关于TPYBoardv102控制OLED屏显示的,看到之后就想尝试一下使用OLED屏来显示中文.最近 ...
随机推荐
- Assembly之instruction之CMP
CMP[.W] Compare source and destinationCMP.B Compare source and destination Syntax CMP src,dst or ...
- css属性代码大全总结(一)
一 CSS文字属性: color : #999999; /*文字颜色*/ font-family : 宋体,sans-serif; /*文字字体*/ font-size : 9pt; /*文字大小*/ ...
- Join 语句
select * from books as A join (select * from Orders) as B on A.BookId = B.BookId select A.BookId,Aut ...
- PAT_A1152#Google Recruitment
Source: PAT A1152 Google Recruitment (20 分) Description: In July 2004, Google posted on a giant bill ...
- eas之日期控件
日期选择框能进行日期和时间的编辑,默认情况下只能进行日期选择“××××年××月××日”,可通过调用用函数setTimeEnabled(boolean)来设置是否也有时间编辑.对日期进行编辑时,可手工直 ...
- 【剑指Offer】3、从尾到头打印链表
题目描述: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路: (三种方法:借助栈.递归.列表的首位插入) 从头到尾打印链表比较简单,从尾到头很自然的可以 ...
- [系统资源]port range
ip_local_port_range 端口范围 sysctl Linux中有限定端口的使用范围,如果我要为我的程序预留某些端口,那么我需要控制这个端口范围, 本文主要描述如何去修改端口范围. /pr ...
- layui 导出excel复杂表头
众所周知 layui的导出功能很好用,但是今天我要给大家推荐一个更好用的 大家来到这里想必也是因为layui无法满足 [导出Excle复杂表头] 的业务需求而来,这里废话不多说但还是强调一点,如果你是 ...
- Vue CLI 3.x 简单体验
文档 中文文档 补充于02月10日 vue脚手架的3.x版本已经在开发中,现在还处于alpha版本.我们来看看有哪些变化. 使用 npm install -g @vue/cli 命名方式已经改为npm ...
- node源码详解(五)
本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/nodesource5 本博客同步在https://cnodejs.o ...