给别人定做的 做的
集成了 烟雾传感器
dht11
u8g2
网络 自动对时

#include <dht11.h>//程序中调用了dht11的库
#include <Arduino.h>
#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
#define AD5 A5 //定义模拟口A5
#define LED2 13
#define LED1 12//定义数字口13
int Button = 11; //定义按键脚
int Intensity = 0;//光照度数值
String comdata = "";
String str = "";
int a = 3;

U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);

dht11 DHT11;//定义一个名字叫做DHT11,类型为dht11的值。

#define DHT11PIN 2//定义DHT11的引脚号为D2。

/////////////////摄氏度计算/////////////////////
double Fahrenheit(double celsius)
{
return 1.8 * celsius + 32;
} //摄氏温度度转化为华氏温度

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);
double SUM = -7.90298 * (A0 - 1);
SUM += 5.02808 * log10(A0);
SUM += -1.3816e-7 * (pow(10, (11.344 * (1 - 1 / A0))) - 1) ;
SUM += 8.1328e-3 * (pow(10, (-3.49149 * (A0 - 1))) - 1) ;
SUM += log10(1013.246);
double VP = pow(10, SUM - 3) * 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 temp = (a * celsius) / (b + celsius) + log(humidity / 100);
double Td = (b * temp) / (a - temp);
return Td;
}
/////////////////////////////////////////////////////////////

void setup()
{
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);//设置LED为输出模式
pinMode(Button, INPUT_PULLUP);
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
Serial.begin(9600);
u8g2.begin();

}
//////////////////////////////////////////////////////////////////
void loop()
{

///////////////按键/////////////////////////////////////////
int ButtonState = digitalRead(Button); //设置变量存储读到的状态值
if(ButtonState==0)
{
digitalWrite(LED1,LOW); //判断,如果读到的状态为1,表明按键已经按下,这时候点亮LED
}

else
{
digitalWrite(LED1,HIGH);
}
////////////////DHT11/////////////////////////////////////////

int chk = DHT11.read(DHT11PIN);
switch (chk)
{
case DHTLIB_OK:
break;
case DHTLIB_ERROR_CHECKSUM:
break;
case DHTLIB_ERROR_TIMEOUT:
break;
default:
break;
}
///////////////////////光敏电阻///////////////////
Intensity = analogRead(A1); //读取模拟口AD5的值,存入Intensity变量
a=5000/Intensity;
////////////////////烟雾传感器//////////////////////
int val;
val = analogRead(0);

if(val>510)
{
digitalWrite(LED2,HIGH);
}
else
{
digitalWrite(LED2,LOW);
}

///////////////////////字符处理///////////////////
while (Serial.available() > 0)
{
comdata += char(Serial.read());//连接字符串
delay(2);
}
if (comdata.length() > 0)
{

str=comdata;
comdata = "";

}
///////////////////////12864///////////////////
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_5x7_tr); //设置字体//font_ncenB14_tr
u8g2.setCursor(0, 30); //设置光标处
u8g2.print("GZ:"); //输出内容
u8g2.setCursor(0,15); //设置光标处
u8g2.print("T:"); //输出内容
u8g2.setCursor(60,15); //设置光标处
u8g2.print("S:"); //输出内容
u8g2.setCursor(30,15); //设置光标处
u8g2.print("oC"); //输出内容
u8g2.setCursor(100,15); //设置光标处
u8g2.print("%"); //输出内容

u8g2.setFont(u8g2_font_5x7_tr); //设置字体
u8g2.setCursor(15,30); //设置光标处
u8g2.print((float)a); //输出内容
u8g2.setCursor(15,15); //设置光标处
u8g2.print((float)DHT11.temperature); //输出内容
u8g2.setCursor(75,15);
u8g2.print((float)DHT11.humidity);
u8g2.setCursor(0,45);
u8g2.print(str); //输出内容
} while ( u8g2.nextPage() );

}
![在这里插入图片描述](https://img-blog.csdn.net/20181016164229604?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzIzMzE4OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve在这里插入图片描述/70)
下面是 刷进 esp8266代码

#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#define LED 2
String payload = "";
String str = "";//获取数据储存变量
String com, tem1, tem2, humi, temnow, sta, state1, state2, time0, time1, time2, english;
String webadd = "http://flash.weather.com.cn/wmaps/xml/zhengzhou.xml"; //天气接口地址
String time_url = "http://quan.suning.com/getSysTime.do"; //时间接口地址
String english_url = "http://open.iciba.com/dsapi/"; //英语接口地址
String daytime = "";
void smartConfig()
{
WiFi.mode(WIFI_STA);
Serial.println("\r\nWait for Smartconfig");
WiFi.beginSmartConfig();
while (1)
{
Serial.print(".");
digitalWrite(LED, 0);

delay(500);
digitalWrite(LED, 1);
delay(500);
if (WiFi.smartConfigDone())
{
Serial.println("SmartConfig Success");
Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
break;
}
}
}
void setup()
{
Serial.begin(9600);

pinMode(LED, OUTPUT);
digitalWrite(LED, 0);
smartConfig();
}

/*****************************************http数据获取*******************************************/
void http() {
HTTPClient http;
http.begin(webadd);
int httpCode = http.GET();
if (httpCode > 0) {
payload = http.getString();
//Serial.println(payload);
int a = payload.indexOf("101180101");//自己搜索链接可知指定城市的id郑州市的id为‘101180101’
//indexof();在字符串中中查找字符位置,返回值为给定字符的第一个位置,查找失败返回-1
com = payload.substring(a - 280, a + 12);
//字符串解析函数:substring(?,...),返回值为指定位置的字符串值
//Serial.println(com);
//<city cityX="376" cityY="184" cityname="郑州市" centername="郑州市" fontColor="FFFF00" pyName="" state1="0" state2="1" stateDetailed="晴转多云" tem1="37" tem2="24" temNow="33" windState="南风3-4级" windDir="西南风" windPower="2级" humidity="39%" time="11:00" url="101180101"/>
}
http.end();
}
/*********************************获取时间**************************************/
void get_time()
{
HTTPClient http;
http.begin(time_url);
int httpCode = http.GET();
if (httpCode > 0) {
payload = http.getString();
str= payload.substring(41,57);
delay(1000);
Serial.println(str);

}
http.end();
}
/*************************获取每日英语*******************/
/**************************************天气判断**************************************************/
/*************************************截取字符数据处理*******************************************/
void data() {
int i = 0;
i = com.indexOf("tem1");
tem1 = com.substring(i + 6, i + 8);
i = 0;
i = com.indexOf("tem2"); //tem2="24"
tem2 = com.substring(i + 6, i + 8);
i = 0;
i = com.indexOf("temNow");
temnow = com.substring(i + 8, i + 10);
i = 0;
i = com.indexOf("humidity");
humi = com.substring(i + 10, i + 13); //humidity="27%"
i = 0;
i = com.indexOf("state1");
state1 = com.substring(i + 8, i + 9);
i = 0;
i = com.indexOf("state2");
state2 = com.substring(i + 7, i + 11);
i = 0;
}
/*********************************************屏幕显示**************************************************/
void loop()
{
digitalWrite(LED, 1);

get_time();
http();

data();

// show();

delay(200);
}

另外 找到 大神 做的 esp8266暗转开发版的 软件

有兴趣 可以加q群 阿正工作站:476840321

esp8266网络自动对时 串口字符连接 并显示 12864i2c u8g2库的更多相关文章

  1. 锐捷网络自动连接python脚本

    1 实现锐捷网络的连接,当断开后自动重连 import os import sys import time ip = 'www.baidu.com' print('开始ping百度') backinf ...

  2. WiFi-ESP8266入门http(3-4)网页一键配网(1若为普通wifi直连 2若为西电网页认证自动网页post请求连接)+网页按钮灯控+MQTT通信

    网页一键配网(1若为普通wifi直连  2若为西电网页认证自动网页post请求连接)+网页按钮灯控+MQTT通信 工程连接:https://github.com/Dongvdong/ESP8266_H ...

  3. ESP8266网络介绍

    仔细分析上图,根据功能区分,可以分为: Arduino功能,把ESP8266 当做 Arduino来使用 SD —— SD卡库 Servo —— 伺服电机库 Wire —— I2C库 SPI —— s ...

  4. ftp -i -n -v <<! 其中 -n禁止自动登录到初始连接

    <<!说明是输入.如是结束了需要再输入 !例如:ftp  -i -n -v  <<! 这里的叹号代表是ftp 命令的开始get  文件exit  !      代表ftp的命令 ...

  5. 转: linux下的自动对时

    转自: http://www.cnblogs.com/vimmer/archive/2012/05/17/2505785.html 评注:date 命令格式为: date -s 2012-08-02 ...

  6. 5 - SQL Server 2008 之 四则运算、比较运算、逻辑运算及字符连接运算

    四则运算如下: --加减乘除(+.-.*.\.%)取余运算 SELECT --加法运算 AS 加法结果2, --减法运算 -2.5 AS 减法结果1, 15.5+5.5 AS 减法结果2, --乘法运 ...

  7. delphi 自动获取串口

    delphi 自动获取串口   https://blog.csdn.net/Nevermore_anger/article/details/79012875    版权声明:本文为博主原创文章,未经博 ...

  8. 记一次网络原因导致的mysql连接中断问题(druid)

    date: 2018-04-19 21:00 tag: java,mysql,exception,mat,调试,jvm 工具: gceasy.io, MAT 线上系统出现一个诡异的bug,通过heap ...

  9. java 写入int型时会自动转换成字符

    java  写入int型时会自动转换成字符

随机推荐

  1. 【转】RTP学习笔记

    转自:https://www.cnblogs.com/yoyotl/p/5650101.html 一.定义 实时传输协议(Real- time Transport Protocol,RTP)是在Int ...

  2. CSS设计模式

    关于web设计的网站 https://www.smashingmagazine.com/

  3. LVM (逻辑卷管理器)

    图片来自:https://www.cnblogs.com/linuxprobe/p/5381538.html 参考博客:https://www.cnblogs.com/linuxprobe/p/538 ...

  4. C/C++与C#之间类型的对应

    最近在研究pos打印机相关功能, 调用winapi以及跨进程通信等,都涉及到类型之间的转换. C/C++ C# HANDLE, LPDWORD, LPVOID, void* IntPtr LPCTST ...

  5. js的一些常用方法

    1.判断是否为一个空对象 let a={}; console.log(Object.keys(arr).length==0);//true 2.从数组中取出重复的数据 var arr = [" ...

  6. kendo ui DatePicker 时区转换

    http://blog.darkthread.net/post-2013-06-25-json-date-timezone-issue.aspx

  7. 【转】IIS请求筛选模块被配置为拒绝超过请求内容长度的请求

    HTTP错误404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求,原因是Web服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值(IIS 7 默认文件上传大 ...

  8. 关于sqlserver数据库max()方法的使用

    1.传送门:http://www.codesky.net/article/201009/144935.html 2.copy自传送门里的内容: max(字符串内容): 说明对字符型数据的最大值,是按照 ...

  9. keeplived

    keepalived高可用集群.   keepalived故障切换转移原理1vrrp协议:(vritual router redundancy protocol)虚拟路由冗余协议,2故障转移.keep ...

  10. python修炼第一天

    Python修炼第一天 新的开始:不会Python的运维,人生是不完整的. 为了我的人生能够完整,所以我来了!今后跟着太白金星师傅学习功夫,记录一下心得,以便日后苦练. 一 Python的历史: Py ...