给别人定做的 做的
集成了 烟雾传感器
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. JVM垃圾回收(三)- GC算法:基础

    GC算法:基础 在介绍GC算法在实际场景中的实现之前,我们先定义一些必要的术语,以及GC算法的基本准则.具体的细节会因收集器的不同而稍有区别,但是基本上来说,所有的收集器会关注以下两个方面: 找出所有 ...

  2. OSGI框架

    面向Java的动态模型系统 OSGi服务平台提供在多种网络设备上无需重启的动态改变构造的功能.为了最小化耦合度和促使这些耦合度可管理,OSGi技术提供一种面向服务的架构,它能使这些组件动态地发现对方. ...

  3. Educational Codeforces Round 53 (Rated for Div. 2)G. Yet Another LCP Problem

    题意:给串s,每次询问k个数a,l个数b,问a和b作为后缀的lcp的综合 题解:和bzoj3879类似,反向sam日神仙...lcp就是fail树上的lca.把点抠出来建虚树,然后在上面dp即可.(感 ...

  4. echarts-五分钟的教程

    https://echarts.baidu.com/tutorial.html#5%20%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B%20ECharts

  5. samba及其基本应用

    Samba 137/udp,138/udp,139/tcp,445/tcp windowns主机共享: linux主机进行访问查看资源:smbclient -L Server_IP -U 用户名 li ...

  6. markdown在线编辑插件mditor

    官方地址 https://bh-lay.github.io/mditor/ ##使用方法 #1.页面添加dom ```javascript <textarea id="md_edito ...

  7. linux—epoll

    一.epoll服务端实现中需要的3个函数: epoll_create:创建保存epoll文件描述符的空间. epoll_ctl:向空间注册并注销文件描述符. epoll_wait:与select函数类 ...

  8. js--map函数的使用

    map( )  属于操作数组的方法. 包含三个参数,item,index,arr 看一份代码: let arr = [ {title:'aaa',hot:true}, {title:'fff',hot ...

  9. XML文档的简易增删查改

    dom4j解析一.利用dom4j操作元素节点 1.查询第一本书的书名,并输出到控制台 2.给第一本书添加一个特价节点, 并修改第一本书的售价节点的内容为19.8元 3.删除第二本书的作者节点二.利用d ...

  10. day24_python_1124

    1  复习 2  TCP-UDP协议 3  tcp协议的socket 4  复杂tcp协议的socket 5  带退出的聊天程序 6  时间练习demo 7  粘包现象 1.复习 # 网络编程概念# ...