esp8266 네트워크 자동 시간 직렬 문자 연결병 표시 12864i2c u8g2 라이브러리

6429 단어 arduino기지운
다른 사람에게 만들어진 스모그 센서dht11u8g2 네트워크 자동 맞출 때
#include//프로그램에서 dht11이 호출된 라이브러리 #include #include
#ifdef U8X8_HAVE_HW_SPI #include #endif#ifdef U8X8_HAVE_HW_I2C#include #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 PULLLUP)로 설정하고 digitalWrite(LED1, LOW), digitalWrite(LED2, LOW), Serial.begin(9600), u8g2.begin()
}//////////////////////////////////////////////////////////////////void loop() {
//////////////////////////////////////////int Button State = digitalRead(Button);//읽은 상태 값 if(Button State==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); }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////if (comdata.length() > 0) {
    str=comdata; 
    comdata = "";
    
}

///////////////////////12864///////////////////u8g2.firstPage(); {u8g2.setFont(u8g2 font 5x7 tr);/글꼴 설정//font ncenB14 tr u8g2.etFont(u8g2 font 5x7 tr((u8g7 tr);//글꼴 설정///font ncennnnnnnnB14141414 trtruuuuuuugggg2 tr1414 trtr truuuuuuugggggggggggggtFent((uuuuuuuuuug2.etFontFontFent(uuuug2.etFontFontFontFent(uuuuuuu8g2.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 #include #include #define LED 2 String payload = “”; String str = “”;//데이터 저장 변수Stringcom,tem1,tem2,humi,temnow,sta,state1,state2,time0,time1,time2,english 가져오기;String webadd = “http://flash.weather.com.cn/wmaps/xml/zhengzhou.xml”;//날씨 인터페이스 주소 String timeurl = “http://quan.suning.com/getSysTime.do”;//시간 인터페이스 주소 String englishurl = “http://open.iciba.com/dsapi/”;//영어 인터페이스 주소 String day time = "";void smartConfig() { WiFi.mode(WIFI_STA); Serial.println("\rWait 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
", WiFi.SSID().c_str()); Serial.printf("PSW:%s\r
", 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는'10180101'(indexof//indexof);문자열에서 문자의 위치를 찾습니다. 반환 값은 주어진 문자의 첫 번째 위치입니다. 검색 실패는 -1com=payload를 반환합니다.substring(a - 280, a + 12);//문자열 해석 함수:substring(?,...), 지정된 위치의 문자열 값//Serial로 되돌아옵니다.println(com);//} http.end(); }/수령 시간 ******/void gettime() { 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 데이터() {inti = 0; i = i = com**********/절취 문자 데이터 처리 ********* 절취 처리()는 ▲ com i = 0; i = i = com. indexOf('tem2'='tem1'), tem1 = tem1 = tem1 = tem. tem1 = tem 1 = tem****************/절취 문자 데이터 처리 **********************************************(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); }
그리고 신이 만든 ep8266 암전 개발 버전의 소프트웨어를 찾았어요.
관심 있으면 q군 아정 워크스테이션 추가: 476840321

좋은 웹페이지 즐겨찾기