wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 10201|回復(fù): 4
收起左側(cè)

【零知ESP8266】教程:OLED天氣時(shí)鐘

  [復(fù)制鏈接]
ID:349555 發(fā)表于 2019-6-19 10:32 | 顯示全部樓層 |閱讀模式
本文演示通過OLED顯示時(shí)鐘和天氣情況,主要利用的是openweathermap的免費(fèi)天氣API。
1、硬件準(zhǔn)備
(1)零知ESP8266開發(fā)板

(2)OLED SSD1306模塊(3)若干杜邦線
2、電路連接
接線很簡(jiǎn)單,I2C接口對(duì)應(yīng)連接即可:
接線圖.jpg


接好后實(shí)物圖如下:

實(shí)物圖.jpg

2、軟件代碼
使用零知開發(fā)工具,使用了OLED和WeatherStation相關(guān)的軟件庫(kù),因此需要安裝對(duì)應(yīng)的庫(kù):
esp8266-weather-station-1.6.6.rar (885.92 KB, 下載次數(shù): 190)

安裝完成后,我們新建工程:
  1. /*
  2. 2019年6月13日13:47:26
  3. by 零知實(shí)驗(yàn)室
  4. */

  5. #include <ESPWiFi.h>
  6. #include <ESPHTTPClient.h>
  7. #include <JsonListener.h>

  8. // time
  9. #include <time.h>                       // time() ctime()
  10. #include <sys/time.h>                   // struct timeval
  11. #include <coredecls.h>                  // settimeofday_cb()

  12. #include "SSD1306Wire.h"
  13. #include "OLEDDisplayUi.h"
  14. #include "Wire.h"
  15. #include "OpenWeatherMapCurrent.h"
  16. #include "OpenWeatherMapForecast.h"
  17. #include "WeatherStationFonts.h"
  18. #include "WeatherStationImages.h"


  19. /***************************
  20. * Begin Settings
  21. **************************/

  22. // WIFI
  23. const char* WIFI_SSID = "xx";
  24. const char* WIFI_PWD = "xx";

  25. #define TZ              8       // (utc+) TZ in hours
  26. #define DST_MN          60      // use 60mn for summer time in some countries

  27. // Setup
  28. const int UPDATE_INTERVAL_SECS = 20 * 60; // Update every 20 minutes

  29. // Display Settings
  30. const int I2C_DISPLAY_ADDRESS = 0x3c;

  31. const int SDA_PIN = D3;
  32. const int SDC_PIN = D4;

  33. // OpenWeatherMap Settings
  34. // Sign up here to get an API key:


  35. // Pick a language code from this list:
  36. // Arabic - ar, Bulgarian - bg, Catalan - ca, Czech - cz, German - de, Greek - el,
  37. // English - en, Persian (Farsi) - fa, Finnish - fi, French - fr, Galician - gl,
  38. // Croatian - hr, Hungarian - hu, Italian - it, Japanese - ja, Korean - kr,
  39. // Latvian - la, Lithuanian - lt, Macedonian - mk, Dutch - nl, Polish - pl,
  40. // Portuguese - pt, Romanian - ro, Russian - ru, Swedish - se, Slovak - sk,
  41. // Slovenian - sl, Spanish - es, Turkish - tr, Ukrainian - ua, Vietnamese - vi,
  42. // Chinese Simplified - zh_cn, Chinese Traditional - zh_tw.
  43. String OPEN_WEATHER_MAP_LANGUAGE = "zh_cn";
  44. const uint8_t MAX_FORECASTS = 4;

  45. const boolean IS_METRIC = true;

  46. // Adjust according to your language
  47. const String WDAY_NAMES[] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
  48. const String MONTH_NAMES[] = {"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"};

  49. /***************************
  50. * End Settings
  51. **************************/
  52. // Initialize the oled display for address 0x3c
  53. // sda-pin=14 and sdc-pin=12
  54. SSD1306Wire     display(I2C_DISPLAY_ADDRESS, SDA_PIN, SDC_PIN);
  55. OLEDDisplayUi   ui( &display );

  56. OpenWeatherMapCurrentData currentWeather;
  57. OpenWeatherMapCurrent currentWeatherClient;

  58. OpenWeatherMapForecastData forecasts[MAX_FORECASTS];
  59. OpenWeatherMapForecast forecastClient;

  60. #define TZ_MN           ((TZ)*60)
  61. #define TZ_SEC          ((TZ)*3600)
  62. #define DST_SEC         ((DST_MN)*60)
  63. time_t now;

  64. // flag changed in the ticker function every 10 minutes
  65. bool readyForWeatherUpdate = false;

  66. String lastUpdate = "--";

  67. long timeSinceLastWUpdate = 0;

  68. //declaring prototypes
  69. void drawProgress(OLEDDisplay *display, int percentage, String label);
  70. void updateData(OLEDDisplay *display);
  71. void drawDateTime(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);
  72. void drawCurrentWeather(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);
  73. void drawForecast(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);
  74. void drawForecastDetails(OLEDDisplay *display, int x, int y, int dayIndex);
  75. void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state);
  76. void setReadyForWeatherUpdate();


  77. // Add frames
  78. // this array keeps function pointers to all frames
  79. // frames are the single views that slide from right to left
  80. FrameCallback frames[] = { drawDateTime, drawCurrentWeather, drawForecast };
  81. int numberOfFrames = 3;

  82. OverlayCallback overlays[] = { drawHeaderOverlay };
  83. int numberOfOverlays = 1;

  84. void setup() {
  85.   Serial.begin(115200);
  86.   Serial.println();
  87.   Serial.println();

  88.   // initialize dispaly
  89.   display.init();
  90.   display.clear();
  91.   display.display();

  92.   //display.flipScreenVertically();
  93.   display.setFont(ArialMT_Plain_10);
  94.   display.setTextAlignment(TEXT_ALIGN_CENTER);
  95.   display.setContrast(255);

  96.   WiFi.begin(WIFI_SSID, WIFI_PWD);

  97.   int counter = 0;
  98.   while (WiFi.status() != WL_CONNECTED) {
  99.     delay(500);
  100.     Serial.print(".");
  101.     display.clear();
  102.     display.drawString(64, 10, "Connecting to WiFi");
  103.     display.drawXbm(46, 30, 8, 8, counter % 3 == 0 ? activeSymbole : inactiveSymbole);
  104.     display.drawXbm(60, 30, 8, 8, counter % 3 == 1 ? activeSymbole : inactiveSymbole);
  105.     display.drawXbm(74, 30, 8, 8, counter % 3 == 2 ? activeSymbole : inactiveSymbole);
  106.     display.display();

  107.     counter++;
  108.   }
  109.   // Get time from network time service
  110.   configTime(TZ_SEC, DST_SEC, "pool.ntp.org");

  111.   ui.setTargetFPS(30);

  112.   ui.setActiveSymbol(activeSymbole);
  113.   ui.setInactiveSymbol(inactiveSymbole);

  114.   // You can change this to
  115.   // TOP, LEFT, BOTTOM, RIGHT
  116.   ui.setIndicatorPosition(BOTTOM);

  117.   // Defines where the first frame is located in the bar.
  118.   ui.setIndicatorDirection(LEFT_RIGHT);

  119.   // You can change the transition that is used
  120.   // SLIDE_LEFT, SLIDE_RIGHT, SLIDE_TOP, SLIDE_DOWN
  121.   ui.setFrameAnimation(SLIDE_LEFT);

  122.   ui.setFrames(frames, numberOfFrames);

  123.   ui.setOverlays(overlays, numberOfOverlays);

  124.   // Inital UI takes care of initalising the display too.
  125.   ui.init();

  126.   Serial.println("");

  127.   updateData(&display);

  128. }

  129. void loop() {

  130.   if (millis() - timeSinceLastWUpdate > (1000L*UPDATE_INTERVAL_SECS)) {
  131.     setReadyForWeatherUpdate();
  132.     timeSinceLastWUpdate = millis();
  133.   }

  134.   if (readyForWeatherUpdate && ui.getUiState()->frameState == FIXED) {
  135.     updateData(&display);
  136.   }

  137.   int remainingTimeBudget = ui.update();

  138.   if (remainingTimeBudget > 0) {
  139.     // You can do some work here
  140.     // Don't do stuff if you are below your
  141.     // time budget.
  142.     delay(remainingTimeBudget);
  143.   }


  144. }

  145. void drawProgress(OLEDDisplay *display, int percentage, String label) {
  146.   display->clear();
  147.   display->setTextAlignment(TEXT_ALIGN_CENTER);
  148.   display->setFont(ArialMT_Plain_10);
  149.   display->drawString(64, 10, label);
  150.   display->drawProgressBar(2, 28, 124, 10, percentage);
  151.   display->display();
  152. }

  153. void updateData(OLEDDisplay *display) {
  154.   drawProgress(display, 10, "Updating time...");
  155.   drawProgress(display, 30, "Updating weather...");
  156.   currentWeatherClient.setMetric(IS_METRIC);
  157.   currentWeatherClient.setLanguage(OPEN_WEATHER_MAP_LANGUAGE);
  158.   currentWeatherClient.updateCurrentById(¤tWeather, OPEN_WEATHER_MAP_APP_ID, OPEN_WEATHER_MAP_LOCATION_ID);
  159.   drawProgress(display, 50, "Updating forecasts...");
  160.   forecastClient.setMetric(IS_METRIC);
  161.   forecastClient.setLanguage(OPEN_WEATHER_MAP_LANGUAGE);
  162.   uint8_t allowedHours[] = {12};
  163.   forecastClient.setAllowedHours(allowedHours, sizeof(allowedHours));
  164.   forecastClient.updateForecastsById(forecasts, OPEN_WEATHER_MAP_APP_ID, OPEN_WEATHER_MAP_LOCATION_ID, MAX_FORECASTS);

  165.   readyForWeatherUpdate = false;
  166.   drawProgress(display, 100, "Done...");
  167.   delay(1000);
  168. }



  169. void drawDateTime(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {
  170.   now = time(nullptr);
  171.   struct tm* timeInfo;
  172.   timeInfo = localtime(&now);
  173.   char buff[16];


  174.   display->setTextAlignment(TEXT_ALIGN_CENTER);
  175.   display->setFont(ArialMT_Plain_10);
  176.   String date = WDAY_NAMES[timeInfo->tm_wday];

  177.   sprintf_P(buff, PSTR("%s, %02d/%02d/%04d"), WDAY_NAMES[timeInfo->tm_wday].c_str(), timeInfo->tm_mday, timeInfo->tm_mon+1, timeInfo->tm_year + 1900);
  178.   display->drawString(64 + x, 5 + y, String(buff));
  179.   display->setFont(ArialMT_Plain_24);

  180.   sprintf_P(buff, PSTR("%02d:%02d:%02d"), timeInfo->tm_hour, timeInfo->tm_min, timeInfo->tm_sec);
  181.   display->drawString(64 + x, 15 + y, String(buff));
  182.   display->setTextAlignment(TEXT_ALIGN_LEFT);
  183. }

  184. void drawCurrentWeather(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {
  185.   display->setFont(ArialMT_Plain_10);
  186.   display->setTextAlignment(TEXT_ALIGN_CENTER);
  187.   display->drawString(64 + x, 38 + y, currentWeather.description);

  188.   display->setFont(ArialMT_Plain_24);
  189.   display->setTextAlignment(TEXT_ALIGN_LEFT);
  190.   String temp = String(currentWeather.temp, 1) + (IS_METRIC ? "°C" : "°F");
  191.   display->drawString(60 + x, 5 + y, temp);

  192.   display->setFont(Meteocons_Plain_36);
  193.   display->setTextAlignment(TEXT_ALIGN_CENTER);
  194.   display->drawString(32 + x, 0 + y, currentWeather.iconMeteoCon);
  195. }


  196. void drawForecast(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {
  197.   drawForecastDetails(display, x, y, 0);
  198.   drawForecastDetails(display, x + 44, y, 1);
  199.   drawForecastDetails(display, x + 88, y, 2);
  200. }

  201. void drawForecastDetails(OLEDDisplay *display, int x, int y, int dayIndex) {
  202.   time_t observationTimestamp = forecasts[dayIndex].observationTime;
  203.   struct tm* timeInfo;
  204.   timeInfo = localtime(&observationTimestamp);
  205.   display->setTextAlignment(TEXT_ALIGN_CENTER);
  206.   display->setFont(ArialMT_Plain_10);
  207.   display->drawString(x + 20, y, WDAY_NAMES[timeInfo->tm_wday]);

  208.   display->setFont(Meteocons_Plain_21);
  209.   display->drawString(x + 20, y + 12, forecasts[dayIndex].iconMeteoCon);
  210.   String temp = String(forecasts[dayIndex].temp, 0) + (IS_METRIC ? "°C" : "°F");
  211.   display->setFont(ArialMT_Plain_10);
  212.   display->drawString(x + 20, y + 34, temp);
  213.   display->setTextAlignment(TEXT_ALIGN_LEFT);
  214. }

  215. void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state) {
  216.   now = time(nullptr);
  217.   struct tm* timeInfo;
  218.   timeInfo = localtime(&now);
  219.   char buff[14];
  220.   sprintf_P(buff, PSTR("%02d:%02d"), timeInfo->tm_hour, timeInfo->tm_min);

  221.   display->setColor(WHITE);
  222.   display->setFont(ArialMT_Plain_10);
  223.   display->setTextAlignment(TEXT_ALIGN_LEFT);
  224.   display->drawString(0, 54, String(buff));
  225.   display->setTextAlignment(TEXT_ALIGN_RIGHT);
  226.   String temp = String(currentWeather.temp, 1) + (IS_METRIC ? "°C" : "°F");
  227.   display->drawString(128, 54, temp);
  228.   display->drawHorizontalLine(0, 52, 128);
  229. }

  230. void setReadyForWeatherUpdate() {
  231.   Serial.println("Setting readyForUpdate to true");
  232.   readyForWeatherUpdate = true;
  233. }
復(fù)制代碼
注意代碼里面填寫自己的APIkey和要查詢的城市名稱,這里填寫的是深圳-shenzhen。
3、驗(yàn)證測(cè)試
將代碼驗(yàn)證并上傳到零知-ESP8266上面,打開串口調(diào)試工具,可以看到如下結(jié)果:
調(diào)試窗口.jpg

獲取返回結(jié)果代碼為:200,即表示成功了;如果是錯(cuò)誤碼,可以把地址粘貼到瀏覽器里看看是什么原因。
成功后OLED就會(huì)顯示天氣情況:
結(jié)果.jpg

更多詳細(xì)資料可到零知實(shí)驗(yàn)室免費(fèi)獲取。


相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:502479 發(fā)表于 2020-2-28 21:30 | 顯示全部樓層
庫(kù)安裝失敗
回復(fù)

使用道具 舉報(bào)

ID:141648 發(fā)表于 2021-6-16 17:26 | 顯示全部樓層
編譯錯(cuò)誤,不能用
回復(fù)

使用道具 舉報(bào)

ID:925265 發(fā)表于 2021-8-28 21:29 | 顯示全部樓層
頭文件不足發(fā)出來(lái)也沒用
回復(fù)

使用道具 舉報(bào)

ID:791181 發(fā)表于 2023-6-6 15:53 | 顯示全部樓層
求完整資料
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
欧美四级电影网| 国产精品国模大尺度私拍| 欧美国产一区二区| 欧美日本久久| 中文字幕乱码在线播放| 中国女人内谢69xxxx视频| 精品国产视频在线观看| 激情五月五月婷婷| 91九色在线视频| 亚洲欧美日韩一区二区在线 | abab456成人免费网址| 日日摸夜夜添夜夜添毛片av| www.黄色片| 在线观看日本中文字幕| 日韩亚洲欧美一区二区| 国产精品视频自拍| 亚洲男人av在线| 亚洲一级二级三级在线免费观看| 日韩精品一级二级| 日韩av三区| 国模精品一区二区| 国产精品久久久久久精| 亚洲综合在线免费| 艳妇乳肉豪妇荡乳av| xxxx日本免费| 激情久久综合网| 影音先锋在线亚洲| 国产伦一区二区三区色一情| 久久高清视频免费| 在线播放国产精品二区一二区四区| 久久久久青草大香线综合精品| 亚洲香蕉网站| 欧美日韩水蜜桃| 78精品国产综合久久香蕉| 成年人网站在线| 一级一片免费视频| 免费av大全| 亚洲国产图片| 国产一区二区三区黄片| 免费视频一二三区| 深夜福利网站在线观看| 精品久久久久久久无码 | 国产偷亚洲偷欧美偷精品| 欧美视频在线视频| 国产欧美一区二区精品性| 紧缚捆绑精品一区二区| 亚洲香蕉网站| 国产一区二区精品久| 超碰成人在线观看| 欧洲一区二区三区精品| xxxx在线视频| 免费黄网在线观看| 又爽又大又黄a级毛片在线视频| 麻豆av资源| 伊人伊人av电影| 久久精品国产一区二区三区肥胖| 性感美女一级片| 91精品视频免费在线观看| 久久机热这里只有精品| 18岁成人毛片| 久操视频在线观看免费| 国产交换配乱淫视频免费| 一区二区在线免费看| 鲁一鲁一鲁一鲁一av| 婷婷视频在线播放| 91免费版看片| www亚洲国产| 轻点好疼好大好爽视频| 中文字幕一区二区三区乱码| 久久99精品国产一区二区三区| 国产免费高清一区| 成人免费午夜电影| 国产精品xxxx| 99一区二区| 欧美日韩喷水| 久久综合久久综合这里只有精品| 久久久水蜜桃| 开心色怡人综合网站| 日韩欧美视频第二区| 日本高清不卡三区| 特级黄色录像片| 欧美少妇在线观看| 九色91视频| 黄色免费高清视频| 国产精品夜夜夜爽张柏芝| 僵尸世界大战2 在线播放| 警花观音坐莲激情销魂小说| 成人毛片一区二区| 日韩一级免费看| 欧美一级免费播放| 男的插女的下面视频| 国产精品wwwww| 五月婷婷狠狠操| 国产激情视频网站| 成人精品999| 影音先锋人妻啪啪av资源网站| 女人十八毛片嫩草av| 国产农村妇女精品一区| 日韩av大片在线观看| 色网站在线播放| 一二区在线观看| 亚洲av无码国产综合专区| 亚洲欧美自拍另类| 99久久免费国产精品| 69免费视频| www污污在线| 麻豆tv入口在线看| 91在线三级| 4438全国亚洲精品观看视频| 精品少妇3p| 亚洲激情一区| 日韩精品五月天| 成人av免费在线| 国产欧美日韩麻豆91| 天天综合网 天天综合色| 日本高清无吗v一区| 日韩一区二区三区视频| 亚洲欧美国产精品专区久久| 久久久久久久久久国产| 国产精品va在线播放| 久久久久欧美| 国产不卡一区二区视频| 先锋资源av在线| 麻豆亚洲av成人无码久久精品| 国产一区二区三区四区视频| 午夜av入18在线| 二区中文字幕| 秋霞午夜理伦电影在线观看| 91亚洲精品在看在线观看高清| 麻豆视频一区| 久久亚洲国产| 日韩精品国产欧美| 久久综合久久鬼色| 欧美日韩一级视频| 在线电影中文日韩| 亚洲精品日产aⅴ| 亚洲欧洲一区二区| 午夜性福利视频| 九九热这里有精品视频| 国产男男gay体育生网站| 国产视频播放| 日日夜夜天天操| 性欧美猛交videos| 亚洲va欧美va人人爽成人影院| 国产综合网站| 成人一区二区三区中文字幕| 日本道精品一区二区三区| 欧美精品色综合| 情事1991在线| 欧美一区免费视频| 日韩成人精品视频在线观看| 久草视频免费在线| 天天操天天干天天插| 男男做性免费视频网| 韩国日本一区| 97精品国产一区二区三区| 日本亚洲欧美天堂免费| 亚洲国产成人va在线观看天堂| 日韩一区二区免费高清| 国产成人精品视| 一本—道久久a久久精品蜜桃| 图片区偷拍区小说区| 日本三级免费看| 污污视频免费看| 欧美三级理伦电影| 欧美日韩在线观看视频小说| 精品制服美女久久| 亚洲精品国产视频| 亚洲精品一区久久久久久| 欧美一级高清免费播放| www.av蜜桃| www..com.cn蕾丝视频在线观看免费版| 后进极品白嫩翘臀在线视频| 尤物视频网站| 欧美日韩大片| 欧美激情在线免费| 91在线小视频| 亚洲欧美一区二区激情| 亚洲影院在线看| 特种兵之深入敌后| 中国一级片黄色一级片黄| av最新网址| 久久久成人av毛片免费观看| 天堂精品中文字幕在线| 亚洲成人一区二区| 欧美亚洲第一区| 日韩国产成人无码av毛片| 国内偷拍精品视频| 韩国专线一区二三区| 爱啪啪综合导航| 狠狠爱www人成狠狠爱综合网| 亚洲自拍欧美精品| 久久成年人视频| 国产h视频在线播放| 四虎成人精品永久免费av| 天天夜夜人人| 高清一区二区| 91免费国产在线观看| 亚洲精品720p| 日本黄色播放器| 91porn在线视频| 第四色亚洲色图| 伊人久久大香| 久久久久久久久久久黄色| 亚洲男人第一网站| aaa免费在线观看| 国产精品国产精品88| 99.玖玖.com| 欧美区一区二区| 国产精品午夜在线| 欧美日本黄视频| 欧美美女性视频| 精产国品一区二区| 偷拍自拍在线| 好看的av在线不卡观看| 欧美三级免费观看| 国产精品麻豆免费版| 右手影院亚洲欧美| 伊人免费视频2| 久久精品97| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美午夜在线一二页| 国产精品永久入口久久久| 好吊色视频一区二区三区| chien国产乱露脸对白| 欧美成a人片在线观看久| 99视频在线精品| 深夜精品寂寞黄网站在线观看| 777久久久精品一区二区三区| 综合网在线观看| 毛片在线看片| 久久亚洲图片| 国产一区二区日韩| 人妻激情另类乱人伦人妻| 一级欧美一级日韩| 中文字幕在线中文字幕二区| 欧美特黄一级| 合欧美一区二区三区| 欧美一区二区在线视频| 欧美aaaaa喷水| 国产盗摄一区二区三区在线| 香蕉视频在线观看免费| 五月婷婷亚洲| 日韩欧美中文一区二区| 一区二区三区欧美成人| 亚洲一区在线观| 老司机福利在线视频| 国产麻豆精品视频| 中文字幕日韩欧美精品在线观看| 高清一区在线观看| 亚洲欧美日韩色图| 色婷婷狠狠五月综合天色拍| 亚洲综合色成人| 欧美一区二区三区四区在线观看地址 | 日韩午夜av在线| 在线成人午夜影院| 可以看毛片的网址| 国产成人手机在线| 精品久久国产一区| 国产精品成人一区二区艾草 | 日本免费一区二区三区等视频| 97se亚洲国产综合在线| 国产精品免费一区| 懂色av蜜臀av粉嫩av永久| 久久视频www| 日本怡春院一区二区| 久久99久久久久久久噜噜| 精品国产乱码久久久久久1区二区| 成年网站免费观看| 国产高清欧美| 亚洲日本aⅴ片在线观看香蕉| 亚洲在线观看网站| eeuss影院网站免费观看| 精品999成人| 亚洲午夜精品久久久久久性色| 亚洲最大视频网| 暧暧视频免费| 午夜在线精品偷拍| 中文字幕一精品亚洲无线一区| 特级特黄刘亦菲aaa级| 秋霞午夜电影| 亚洲啪啪91| 日韩精品影音先锋| 国产第一页视频| canopen超线视频网线的应用| 婷婷激情图片久久| 精品国产一区二区三区四区在线观看| 中文字幕成人免费视频| av毛片免费| 久久五月激情| 国产成人精品亚洲精品| 青青草精品在线视频| 国产在线天堂www网在线观看| 国产欧美一区二区三区鸳鸯浴 | 一区二区黄色片| 在线观看av片| 91丨九色丨尤物| 3d精品h动漫啪啪一区二区| 一区二区国产欧美| 欧美日韩女优| 91精品国模一区二区三区| 国产精品色婷婷视频| 正在播放木下凛凛xv99| 亚洲精品高潮| 日韩欧美国产不卡| 中文在线观看免费视频| 中文在线天堂网| 久久久久国产成人精品亚洲午夜| 99精品欧美一区二区三区| 午夜精品久久久久久久第一页按摩| 国产精品久一| 亚洲成人免费在线视频| 亚洲黄色片免费| 二区三区在线播放| 国产精品第四页| 亚洲砖区区免费| 可以免费看黄色的网站| 久久久久久久波多野高潮日日| 国产精品亚洲综合天堂夜夜| 欧美国产成人精品一区二区三区| 秋霞影院一区| 精品国产一区二区三区忘忧草| 偷拍女澡堂一区二区三区| 手机在线免费观看av| 亚洲精品国产第一综合99久久| 九色在线视频观看| 成视人a免费观看视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 综合中文字幕亚洲| 精品一区二区成人免费视频| 来个黄色网址| 麻豆极品一区二区三区| 国产亚洲一区在线播放| 最近2018年中文字幕在线| 午夜亚洲影视| 国产热re99久久6国产精品| 手机看片1024国产| 韩日一区二区三区| 78色国产精品| 欧美熟妇另类久久久久久不卡| 沈樵精品国产成av片| 97视频在线观看免费| 特级西西444www大胆免费看| 日本一区二区在线看| 欧美成人国产va精品日本一级| 国产精品午夜一区二区| 国产精品一区二区精品| 最近2019中文免费高清视频观看www99 | 国产一区二区视频在线观看| 国产精品熟女久久久久久| 亚洲色图国产| 欧美最顶级丰满的aⅴ艳星| 亚洲欧美综合网| 日韩精品欧美激情一区二区| 男人操女人视频网站| 欧美亚洲国产精品久久| 不卡伊人av在线播放| 国产精品久久久久久在线| 视频一区日韩精品| 超在线视频97| 国产chinasex对白videos麻豆| 色偷偷亚洲第一成人综合网址| 97久久精品人人做人人爽| 影音先锋男人的网站| 伊人影院在线播放| 亚洲欧美另类在线| www成人免费| 中日韩免费毛片| 欧美综合亚洲图片综合区| 亚洲精品乱码久久久久久动漫| 中文字幕在线视频网站| 国产一区二区日韩精品欧美精品| 久久精品这里有| 久久精品青草| 91久久综合亚洲鲁鲁五月天| 美女在线不卡| 国产亚洲综合av| 尤物网站在线看| 99久久伊人| 中文字幕精品www乱入免费视频| 97人妻精品一区二区三区视频| 自拍偷拍欧美| 欧美日韩综合久久| 美女黄色在线网站大全| 亚洲黄网站在线观看| 女~淫辱の触手3d动漫| 国产麻豆精品| 久久久久成人精品| 人妻无码中文字幕| 成人av网在线| 欧美肥臀大乳一区二区免费视频| 污污网站在线免费观看| 丁香激情综合五月| 极品美女扒开粉嫩小泬| 波多野结衣视频一区二区| 亚洲成人激情在线| 亚洲精品久久久久久无码色欲四季| 精品一区二区三区免费| 欧美成人精品免费| 香蕉伊大人中文在线观看|