久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5996|回復: 2
打印 上一主題 下一主題
收起左側

Arduino遙控超聲波測距智能車制作資料與源碼

[復制鏈接]
跳轉到指定樓層
樓主


遙控超聲波測距智能車的特點:
1.積木式硬件處理方式,便于理解和學習,
2.采用ARDUINO的編程方式,程序通俗易懂,不用很專業知識就可以看懂原代碼,也可以通過修改,做成不同功能的智能車.
3.采用給力板做主控,一片給力板就可以實現遙控,避障,測距離,顯示,外加驅動電機和舵機的功能,可見多么強大.而且給力板的電流也要比官方的板大很多,足見給力板穩定性.
4.拓展性強,智能車平臺是很簡易的東西,但是我們可以通過外接傳感,或者功能模塊,把它變成不同智能車.比如滅火機器人,搜救智能車,WIFI無線機器人,等等...............................
三. 遙控超聲波測距智能車參數:
1.電機參數:電壓范圍:1.5-12V,電機軸長:10mm,轉速6.0V  100rpm/min.
2.控制電機選用L298N驅動模塊,與單片機真正隔離.
3.避障部分采用HC-SR04 超聲波,性能穩定,測度距離精確.
4.顯示部分采用的1602 I2C的模塊,只須用到2個IO口.
5.遙控功能采用紅外遙控方式,NEC協議.
6.可接入外部7~12V的電壓。并能搭載多款傳感器模塊,根據您的想象力實現各種功能.

先來介紹一下Arduino

我們看看Arduino團隊如何為其定義的:

Arduino是一個開放源碼電子原型平臺,擁有靈活、 易用的硬件和軟件。 Arduino專為設計師,工藝美術人員,業余愛好者,以及對開發互動裝置或互動式開發環境感興趣的人而設的。Arduino可以接收來自各種傳感器的輸入信號從而檢測出運行環境,并通過控制光源,電機以及其他驅動器來影響其周圍環境。板上的微控制器編程使用Arduino編程語言(基于Wiring)和Arduino開發環境(以Processing為基礎)。Arduino可以獨立運行,也可以與計算機上運行的軟件(例如,Flash,Processing,MaxMSP)進行通信。
Arduino硬件電路板可以自行焊接組裝,也可以購買已經組裝好的,軟件則可以從Arduino
網站免費下載使用。您可以根據開源許可獲得硬件參考設計(CAD文件),并自由地修改使其適應您的需求。
Arduino的定義仍然有點模糊,這也正是Arduino的優勢所在。 Arduino是人們連接各種任務
的粘合劑。要給Arduino下一個最準確的定義,最好用一些實例來描述。
您想當咖啡煮好時,咖啡壺就發出“吱吱”聲提醒您嗎?
您想當郵箱有新郵件時,電話會發出警報通知您嗎?
想要一件閃閃發光的絨毛玩具嗎?
想要一款具備語音和酒水配送功能的X教授蒸汽朋克風格輪椅嗎?
想要一套按下快捷鍵就可以進行實驗測試蜂音器嗎?
想為您的兒子自制一個《銀河戰士》手臂炮嗎?
想自制一個心率監測器,將每次騎腳踏車的記錄存進存儲卡嗎?
想過自制一個能在地面上繪圖,能在雪中馳騁的機器人嗎?

那就是Arduino,他們尚未意識到這一點。
看看Arduino項目的實例,你將發現制造者們對于這些電子產品“是什么”更加感興趣,而不是制作方法。 這些Arduino發燒友常常表示Arduino并沒有教授基本的電子產品,“呸,這哪是真正的電子產品啊,”他們說,“太容易了!”是的,的確如此。如果您是個藝術家或設計人員,在不使用Arduino情況下,想讓發光二極管閃爍,或者電機轉動,那么祝您好運了。 當然,如果您愿意花錢并且帶著您厚重的電子產品技術教材來展示一番,這也未嘗不可。但是對于那兒的其他人而言,他們不過是想用發光二級管來裝飾火人節服裝而已。
對于一些傳統微控制器社區是如何看待Arduino這一問題,我認為最佳的例子就是AVR Freaks,該官方網站專注于AVR處理器(同樣用于Arduino)。您會想AVR Freaks社區可能會喜愛Arduino,因為Arduino能夠將AVR微控制器帶給大眾。然而,該網站的很多人并不喜歡這些非工程師們制造的所有古怪玩意兒,因為這些會破壞了他們的等級制度。我最喜歡引用一句話(我希望把這句話印在T恤上)。
“Arduino編程語言,小孩都能看懂,用一次就上癮”—— ArnoldB,AVRfreaks網站事實上,這種錯誤的態度卻推動Arduino粉絲去建立自己的社區,幫助了Arduino建立一個兼收并蓄,而非高高在上的社區。
Arduino是簡單,但不是過于簡單。它圍繞這些觀點來建立,即學生使用Arduino去實現目的:接收傳感器信號,獲得一些代碼,再利用這些信號和代碼。或許甚至不會寫代碼,那他們剪切粘貼代碼后就可以開始。 Arduino是熱粘結劑,而非精確的焊接。 因此沒有人會被切掉一只手,也不會有實驗室被燒毀。Arduino團隊成員之一會教授工藝美術人員和設計者如何使用。 每天,Arduino在學習,教授,和共享代碼的工程中不斷建立和完善。 這些工藝美術人員和設計者正在Macs系統上使用Processing語言并修改。(Processing是Arduino的老大哥)
說到此處,Arduino就像是一個熱情,沒有界限,藝術氛圍濃厚的集會。這就是Arduino成為“自己動手做”成功典范的原因嗎?不僅僅如此,我們來了解更多具體信息。程序庫——簡單任務,復雜任務輕松搞定大量的封裝庫被用來完成復雜的任務,例如寫入SD記憶卡,寫入液晶顯示屏驅動程序,
解析GPS。也有一些程序庫用來做簡單的事情,比如轉動插腳或按鍵消抖。如果有10個芯片,我們就得將UART安裝代碼寫10次,坦白說,這讓人厭煩。如果調用Serial.begin(9600)函數來處理寄存器數據的話,那就容易多了。輕量型,直接運行在硬件底層 上使用一款經認證的,易于理解的編譯器(我們甚至可以說avr-gcc是AVR默認或標準的編譯器),代碼能直接運行在硬件底層 上。 其編譯方式與NET 語言及BASIC語言不同。 該編譯器運行快,體積小,重量輕,并且您能使用HEX(十六進制)文件為成批的新芯片進行編程。

傳感器
Arduino真正騰飛的原因是其能夠實現將模擬輸入轉換為數字輸入,換言之,您可以將光線,溫度,聲音,或者市場上已有的任何低成本的傳感器信號輸入,Arduino都能識別。對于數字傳感器,Arduino支持 SPI( 高速同步串行口)和I2C總線。這一功能覆蓋市場上99%的傳感器。使用其他開發平臺是不易實現的——想想如果把一塊Beagleboard(偉大的產品)和Arduino綁在一起,僅僅是為了獲得傳感器的數據,那真是太奇怪了!

上面的 D4、D5 指的就是數字端口的 4、5 號引腳,下面還有具體的連接實物可供參考好了,我們這次要做的就是學會如何使用它去測距離,并在電腦的顯示屏上顯示出來,當然如果你要做的好看些,可以加個 lcd 或是數碼管之類的,我們這里就是做個功能測試,就是個啟發過程。
嗯,下面有我們的測試代碼。



arduino源程序如下:
  1. #include <IRremote.h>  
  2. #include <Servo.h>
  3. #include <Wire.h>
  4. #include <LiquidCrystal_I2C.h>

  5. //***********************定義馬達腳位*************************
  6. int MotorRight1=6;
  7. int MotorRight2=9;
  8. int MotorLeft1=10;
  9. int MotorLeft2=11;
  10. int counter=0;
  11. const int irReceiverPin = 3; //紅外線接收器 OUTPUT 訊號接在 pin 2

  12. //***********************設定所偵測到的IRcode*************************
  13. long IRfront= 0x00FF629D;        //前進碼
  14. long IRback=0x00FFA857;         //後退
  15. long IRturnright=0x00FF22DD;    //右轉
  16. long IRturnleft= 0x00FFC23D;     //左轉
  17. long IRstop=0x00FF02FD;         //停止
  18. long IRAutorun=0x00FF6897;      //超音波自走模式
  19. long IRturnsmallleft= 0x00FFB04F;
  20. IRrecv irrecv(irReceiverPin);  // 定義 IRrecv 物件來接收紅外線訊號
  21. decode_results results;     
  22. //*************************定義超音波腳位******************************
  23. int inputPin =A0 ; // 定義超音波信號接收腳位rx
  24. int outputPin =A1; // 定義超音波信號發射腳位'tx
  25. int Fspeedd = 0; // 前方距離
  26. int Rspeedd = 0; // 右方距離
  27. int Lspeedd = 0; // 左方距離
  28. int directionn = 0; // 前=8 後=2 左=4 右=6
  29. Servo myservo; // 設 myservo
  30. int delay_time = 250; // 伺服馬達轉向後的穩定時間
  31. int Fgo = 8; // 前進
  32. int Rgo = 6; // 右轉
  33. int Lgo = 4; // 左轉
  34. int Bgo = 2; // 倒車
  35. //********************************************************************(SETUP)
  36. LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
  37. void setup()
  38. {  
  39.   Serial.begin(9600);
  40.   pinMode(MotorRight1, OUTPUT);  // 腳位 8 (PWM)
  41.   pinMode(MotorRight2, OUTPUT);  // 腳位 9 (PWM)
  42.   pinMode(MotorLeft1,  OUTPUT);  // 腳位 10 (PWM)
  43.   pinMode(MotorLeft2,  OUTPUT);  // 腳位 11 (PWM)
  44.   irrecv.enableIRIn();     // 啟動紅外線解碼
  45.   digitalWrite(3,HIGH);
  46.   pinMode(inputPin, INPUT); // 定義超音波輸入腳位
  47.   pinMode(outputPin, OUTPUT); // 定義超音波輸出腳位
  48.   myservo.attach(5); // 定義伺服馬達輸出第5腳位(PWM)
  49.   lcd.init();   // initialize the lcd
  50.   lcd.init();
  51. // Print a message to the LCD.
  52.   lcd.backlight();



  53. }
  54. //******************************************************************(Void)
  55. void advance(int a) // 前進
  56. {
  57.         digitalWrite(MotorRight1,LOW);
  58.         digitalWrite(MotorRight2,HIGH);
  59.         digitalWrite(MotorLeft1,LOW);
  60.         digitalWrite(MotorLeft2,HIGH);
  61.         delay(a * 100);
  62. }
  63. void right(int b) //右轉(單輪)
  64. {
  65.        digitalWrite(MotorLeft1,LOW);
  66.        digitalWrite(MotorLeft2,HIGH);
  67.        digitalWrite(MotorRight1,LOW);
  68.        digitalWrite(MotorRight2,LOW);
  69.        delay(b * 100);
  70. }
  71. void left(int c) //左轉(單輪)
  72. {
  73.       digitalWrite(MotorRight1,LOW);
  74.       digitalWrite(MotorRight2,HIGH);
  75.       digitalWrite(MotorLeft1,LOW);
  76.       digitalWrite(MotorLeft2,LOW);
  77.       delay(c * 100);
  78. }
  79. void turnR(int d) //右轉(雙輪)
  80. {
  81.       digitalWrite(MotorRight1,HIGH);
  82.       digitalWrite(MotorRight2,LOW);
  83.       digitalWrite(MotorLeft1,LOW);
  84.       digitalWrite(MotorLeft2,HIGH);
  85.       delay(d * 100);
  86. }
  87. void turnL(int e) //左轉(雙輪)
  88. {
  89.       digitalWrite(MotorRight1,LOW);
  90.       digitalWrite(MotorRight2,HIGH);
  91.       digitalWrite(MotorLeft1,HIGH);
  92.       digitalWrite(MotorLeft2,LOW);
  93.       delay(e * 100);
  94. }
  95. void stopp(int f) //停止
  96. {
  97.      digitalWrite(MotorRight1,LOW);
  98.      digitalWrite(MotorRight2,LOW);
  99.      digitalWrite(MotorLeft1,LOW);
  100.      digitalWrite(MotorLeft2,LOW);
  101.      delay(f * 100);
  102. }
  103. void back(int g) //後退
  104. {
  105.         digitalWrite(MotorRight1,HIGH);
  106.         digitalWrite(MotorRight2,LOW);
  107.         digitalWrite(MotorLeft1,HIGH);
  108.         digitalWrite(MotorLeft2,LOW);;
  109.         delay(g * 100);
  110. }
  111. void detection() //測量3個角度(前.左.右)
  112. {
  113.     int delay_time = 250; // 伺服馬達轉向後的穩定時間
  114.     ask_pin_F(); // 讀取前方距離

  115.     if(Fspeedd < 10) // 假如前方距離小於10公分
  116.    {
  117.       stopp(1); // 清除輸出資料
  118.       back(2); // 後退 0.2秒
  119.       

  120.    }
  121.     if(Fspeedd < 25) // 假如前方距離小於25公分
  122.    {
  123.       stopp(1); // 清除輸出資料
  124.       ask_pin_L(); // 讀取左方距離
  125.       delay(delay_time); // 等待伺服馬達穩定
  126.       ask_pin_R(); // 讀取右方距離
  127.       delay(delay_time); // 等待伺服馬達穩定

  128.       if(Lspeedd > Rspeedd) //假如 左邊距離大於右邊距離
  129.      {
  130.         directionn = Lgo; //向左走
  131.      }

  132.       if(Lspeedd <= Rspeedd) //假如 左邊距離小於或等於右邊距離
  133.       {
  134.         directionn = Rgo; //向右走
  135.       }

  136.       if (Lspeedd < 15 && Rspeedd < 15) //假如 左邊距離和右邊距離皆小於10公分
  137.      {
  138.         directionn = Bgo; //向後走
  139.       }
  140.     }
  141.     else //加如前方大於25公分
  142.    {
  143.       directionn = Fgo; //向前走
  144.    }
  145. }   
  146. //*********************************************************************************
  147. void ask_pin_F() // 量出前方距離
  148. {
  149. myservo.write(90);
  150. digitalWrite(outputPin, LOW); // 讓超聲波發射低電壓2μs
  151. delayMicroseconds(2);
  152. digitalWrite(outputPin, HIGH); // 讓超聲波發射高電壓10μs,這裡至少是10μs
  153. delayMicroseconds(10);
  154. digitalWrite(outputPin, LOW); // 維持超聲波發射低電壓
  155. float Fdistance = pulseIn(inputPin, HIGH); // 讀差相差時間
  156. Fdistance= Fdistance/5.8/10; // 將時間轉為距離距離(單位:公分)

  157. Fspeedd = Fdistance; // 將距離 讀入Fspeedd(前速)
  158. }
  159. //********************************************************************************
  160. void ask_pin_L() // 量出左邊距離
  161. {
  162. myservo.write(177);
  163. delay(delay_time);
  164. digitalWrite(outputPin, LOW); // 讓超聲波發射低電壓2μs
  165. delayMicroseconds(2);
  166. digitalWrite(outputPin, HIGH); // 讓超聲波發射高電壓10μs,這裡至少是10μs
  167. delayMicroseconds(10);
  168. digitalWrite(outputPin, LOW); // 維持超聲波發射低電壓
  169. float Ldistance = pulseIn(inputPin, HIGH); // 讀差相差時間
  170. Ldistance= Ldistance/5.8/10; // 將時間轉為距離距離(單位:公分)

  171. Lspeedd = Ldistance; // 將距離 讀入Lspeedd(左速)
  172. }
  173. //******************************************************************************
  174. void ask_pin_R() // 量出右邊距離
  175. {
  176. myservo.write(5);
  177. delay(delay_time);
  178. digitalWrite(outputPin, LOW); // 讓超聲波發射低電壓2μs
  179. delayMicroseconds(2);
  180. digitalWrite(outputPin, HIGH); // 讓超聲波發射高電壓10μs,這裡至少是10μs
  181. delayMicroseconds(10);
  182. digitalWrite(outputPin, LOW); // 維持超聲波發射低電壓
  183. float Rdistance = pulseIn(inputPin, HIGH); // 讀差相差時間
  184. Rdistance= Rdistance/5.8/10; // 將時間轉為距離距離(單位:公分)

  185. Rspeedd = Rdistance; // 將距離 讀入Rspeedd(右速)
  186. }
  187. //******************************************************************************(LOOP)
  188. void loop()
  189. {
  190.      
  191. //***************************************************************************正常遙控模式      
  192.   if (irrecv.decode(&results))
  193.     {         // 解碼成功,收到一組紅外線訊號
  194. /***********************************************************************/
  195.       if (results.value == IRfront)//前進
  196.        {
  197.       
  198.         lcd.setCursor(0,0);
  199.         lcd.print(" IR mode");
  200.         lcd.setCursor(0,1);
  201.         lcd.print("  advance ");
  202.         advance(20);//前進
  203.        }
  204. /***********************************************************************/
  205.       if (results.value ==  IRback)//後退
  206.        {
  207.         
  208.         lcd.setCursor(0,0);
  209.         lcd.print(" IR mode");
  210.         lcd.setCursor(0,1);
  211.         lcd.print("  back ");
  212.         back(20);//後退
  213.        }
  214. /***********************************************************************/
  215.       if (results.value == IRturnright)//右轉
  216.       {
  217.       
  218.         lcd.setCursor(0,0);
  219.         lcd.print(" IR mode");
  220.         lcd.setCursor(0,1);
  221.         lcd.print("  right ");
  222.         right(10); // 右轉
  223.          
  224.       }
  225. /***********************************************************************/
  226.      if (results.value == IRturnleft)//左轉
  227.      {
  228.      
  229.         lcd.setCursor(0,0);
  230.         lcd.print(" IR mode");
  231.         lcd.setCursor(0,1);
  232.         lcd.print(" left ");
  233.         left(10); // 左轉);
  234.      }
  235. /***********************************************************************/   
  236.     if (results.value == IRstop)//停止
  237.    {
  238.        lcd.setCursor(0,0);
  239.        lcd.print(" IR mode");
  240.        lcd.setCursor(0,1);
  241.        lcd.print(" stop ");
  242.      digitalWrite(MotorRight1,LOW);
  243.      digitalWrite(MotorRight2,LOW);
  244.      digitalWrite(MotorLeft1,LOW);
  245.      digitalWrite(MotorLeft2,LOW);
  246.    
  247.      
  248.     }

  249. //***********************************************************************超音波自走模式
  250. if (results.value ==IRAutorun )
  251.       {
  252.            while(IRAutorun)
  253.         {
  254.             myservo.write(90); //讓伺服馬達回歸 預備位置 準備下一次的測量
  255.             detection(); //測量角度 並且判斷要往哪一方向移動
  256.              if(directionn == 8) //假如directionn(方向) = 8(前進)
  257.             {
  258.               if (irrecv.decode(&results))
  259.            {
  260.              irrecv.resume();
  261.              Serial.println(results.value,HEX);
  262.              if(results.value ==IRstop)
  263.              {
  264.                digitalWrite(MotorRight1,LOW);
  265.                digitalWrite(MotorRight2,LOW);
  266.                digitalWrite(MotorLeft1,LOW);
  267.                digitalWrite(MotorLeft2,LOW);
  268.                break;
  269.              }
  270.            }
  271.                 results.value=0;
  272.                
  273.                
  274.                 lcd.setCursor(0,0);
  275.                 lcd.print(" aoto mode");
  276.                 lcd.setCursor(0,1);
  277.                 lcd.print(" Advance ");
  278.                 advance(1); // 正常前進
  279.             }
  280.            if(directionn == 2) //假如directionn(方向) = 2(倒車)
  281.           {
  282.             if (irrecv.decode(&results))
  283.            {
  284.              irrecv.resume();
  285.              Serial.println(results.value,HEX);
  286.              if(results.value ==IRstop)
  287.              {
  288.                digitalWrite(MotorRight1,LOW);
  289.                digitalWrite(MotorRight2,LOW);
  290.                digitalWrite(MotorLeft1,LOW);
  291.                digitalWrite(MotorLeft2,LOW);
  292.                break;
  293.              }
  294.            }
  295.               results.value=0;
  296.               
  297.             
  298.                lcd.setCursor(0,0);
  299.                 lcd.print(" aoto mode");
  300.                 lcd.setCursor(0,1);
  301.                 lcd.print(" Reverse ");
  302.                 back(8); // 倒退(車)
  303.               turnL(3); //些微向左方移動(防止卡在死巷裡)
  304.           }
  305.             if(directionn == 6) //假如directionn(方向) = 6(右轉)
  306.           {
  307.            if (irrecv.decode(&results))
  308.            {
  309.               irrecv.resume();
  310.               Serial.println(results.value,HEX);
  311.              if(results.value ==IRstop)
  312.              {
  313.                digitalWrite(MotorRight1,LOW);
  314.                digitalWrite(MotorRight2,LOW);
  315.                digitalWrite(MotorLeft1,LOW);
  316.                digitalWrite(MotorLeft2,LOW);
  317.                break;
  318.              }
  319.            }
  320.              results.value=0;
  321.                
  322.             
  323.                lcd.setCursor(0,0);
  324.                 lcd.print(" aoto mode");
  325.                 lcd.setCursor(0,1);
  326.                 lcd.print(" Right ");
  327.                  back(1);
  328.                turnR(3); // 右轉
  329.           }
  330.             if(directionn == 4) //假如directionn(方向) = 4(左轉)
  331.           {
  332.              if (irrecv.decode(&results))
  333.            {
  334.              irrecv.resume();
  335.              Serial.println(results.value,HEX);
  336.              if(results.value ==IRstop)
  337.              {
  338.                digitalWrite(MotorRight1,LOW);
  339.                digitalWrite(MotorRight2,LOW);
  340.                digitalWrite(MotorLeft1,LOW);
  341.                digitalWrite(MotorLeft2,LOW);
  342.                break;
  343.              }
  344.            }
  345.                 results.value=0;
  346.                
  347.                  lcd.setCursor(0,0);
  348.                 lcd.print(" aoto mode");
  349.                 lcd.setCursor(0,1);
  350.                 lcd.print(" Left ");
  351.                 back(1);
  352.                 turnL(3); // 左轉
  353.             
  354.            }
  355.             
  356.              if (irrecv.decode(&results))
  357.            {
  358.              irrecv.resume();
  359.              Serial.println(results.value,HEX);
  360.              if(results.value ==IRstop)
  361.              {
  362.                digitalWrite(MotorRight1,LOW);
  363.                digitalWrite(MotorRight2,LOW);
  364.                digitalWrite(MotorLeft1,LOW);
  365.                digitalWrite(MotorLeft2,LOW);
  366.                break;
  367.              }
  368.            }
  369.          }
  370.                results.value=0;
  371.        }
  372. /***********************************************************************/   
  373.      else
  374.     {
  375.            digitalWrite(MotorRight1,LOW);
  376.            digitalWrite(MotorRight2,LOW);
  377.            digitalWrite(MotorLeft1,LOW);
  378.            digitalWrite(MotorLeft2,LOW);
  379.      }
  380.       

  381.         irrecv.resume();    // 繼續收下一組紅外線訊號        
  382.    }  
  383. …………
  384. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載(完整源碼+手冊-37頁介紹非常詳細):
遙控超聲波測距智能車 (1).rar (9.79 MB, 下載次數: 36)




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:75950 發表于 2018-2-1 17:43 | 只看該作者
謝謝分享
回復

使用道具 舉報

板凳
ID:281871 發表于 2018-2-3 02:04 來自手機 | 只看該作者
感謝分享
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产精品va在线看黑人 | 四虎影院在线播放 | 999精彩视频 | 日韩精品一区二区三区四区视频 | 午夜久久久久久久久久一区二区 | 九九热这里只有精品在线观看 | 91大神在线看 | 欧美一二区 | 国产免费高清 | 拍拍无遮挡人做人爱视频免费观看 | 日日摸夜夜爽人人添av | 亚洲免费影院 | 国产一区二区三区四区五区3d | 人人精品| 秋霞电影一区二区三区 | 正在播放国产精品 | 91av视频在线观看 | 天堂一区二区三区 | 亚洲中午字幕 | 日本高清视频网站 | 亚洲精品日韩在线 | 美女激情av | 日韩福利| 亚洲顶级毛片 | 中文字幕一区在线观看视频 | 欧美性久久久 | 久久精品视频一区二区 | 99精品99 | 狠狠草视频 | 欧美国产日本一区 | 亚洲bt 欧美bt 日本bt | 一区二区三区欧美大片 | 国产成人精品一区二区三区在线 | 日本不卡一区二区三区在线观看 | 深夜福利影院 | 国产欧美日韩综合精品一区二区 | 免费看黄色国产 | 亚洲一区二区三区免费在线观看 | 青青草亚洲 | 亚洲一区二区在线视频 | 国产人成精品一区二区三 |