zoukankan      html  css  js  c++  java
  • esp8266网络自动对时 串口字符连接 并显示 12864i2c u8g2库

    给别人定做的 做的
    集成了 烟雾传感器
    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(" Wait 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 ", WiFi.SSID().c_str());
    Serial.printf("PSW:%s ", 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

  • 相关阅读:
    Windows 2012 安装 SQL Server 2012,.Net Framework 3.5安装不成的解决办法
    HTML+CSS 对于英文单词强制换行但不截断单词的解决办法
    删除N天前的文件(夹)与拷贝文件到共享盘的批处理
    npm 常用命令
    使用scrapy crawl name启动一个爬虫时出现的问题
    anaconda和pycharm环境交叉的现象
    list和range()函数中使用反向索引的方法
    关于一些术语的解释
    关于assert和de-assert的解释
    搭建eclipse4.6(neon) + Pydev5.8.0 + python3.6(小版本3.6.1)
  • 原文地址:https://www.cnblogs.com/zdh6/p/9799075.html
Copyright © 2011-2022 走看看