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

QQ登錄

只需一步,快速開始

搜索

【Arduino】108種傳感器系列實(shí)驗(yàn)(133)---GP2Y0A02YK0F紅外測(cè)距模塊

查看數(shù): 10215 | 評(píng)論數(shù): 37 | 收藏 3
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請(qǐng)稍候......
發(fā)布時(shí)間: 2019-10-4 15:26

正文摘要:

37款傳感器與模塊的提法,在網(wǎng)絡(luò)上廣泛流傳,其實(shí)Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和模塊,依照實(shí)踐出真知(一定要?jiǎng)邮肿觯┑睦砟,以學(xué)習(xí)和交流為目的,這里準(zhǔn)備逐一動(dòng) ...

回復(fù)

ID:847574 發(fā)表于 2020-12-1 14:15
你好,我想STM32上使用這個(gè)傳感器,但是我不知道ADC的電壓轉(zhuǎn)換成距離的公式。請(qǐng)指教
ID:513258 發(fā)表于 2020-11-23 21:59

謝謝鼓勵(lì)
ID:838135 發(fā)表于 2020-11-18 16:19
非常有用
ID:513258 發(fā)表于 2020-10-24 15:46
ssw2020 發(fā)表于 2020-6-22 09:46
樓主可以考慮開個(gè)小店了,邊做實(shí)驗(yàn)邊把自己的實(shí)驗(yàn)成果分享,有興趣的又可以跟隨著你的實(shí)驗(yàn)筆記進(jìn)行測(cè)試,這 ...

謝謝鼓勵(lì),作為初學(xué)者,通過發(fā)帖,也是學(xué)習(xí)的一種辦法
ID:780673 發(fā)表于 2020-6-22 09:46
樓主可以考慮開個(gè)小店了,邊做實(shí)驗(yàn)邊把自己的實(shí)驗(yàn)成果分享,有興趣的又可以跟隨著你的實(shí)驗(yàn)筆記進(jìn)行測(cè)試,這種思路真的很棒
ID:513258 發(fā)表于 2019-12-16 12:57
dcd 發(fā)表于 2019-12-3 21:32
這個(gè)圖形化編程是那個(gè)軟件

是Mind+
ID:554951 發(fā)表于 2019-12-3 21:32
這個(gè)圖形化編程是那個(gè)軟件
ID:513258 發(fā)表于 2019-11-25 10:18
ahlc 發(fā)表于 2019-11-21 22:01
很棒很有創(chuàng)意

謝謝鼓勵(lì)
ID:646866 發(fā)表于 2019-11-21 22:01
很棒很有創(chuàng)意
ID:513258 發(fā)表于 2019-11-20 11:06
電子酷酷 發(fā)表于 2019-10-25 11:12
你好 看的你的寫的 很詳細(xì) 很好

謝謝鼓勵(lì)
ID:301797 發(fā)表于 2019-10-25 11:12
你好 看的你的寫的 很詳細(xì) 很好
ID:513258 發(fā)表于 2019-10-6 19:24
  1. /*
  2.   【Arduino】108種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
  3.   實(shí)驗(yàn)一百三十三:夏普GP2Y0A02YK0F 紅外測(cè)距傳感器模塊 20-150cm 距離傳感器
  4.   庫地址:https://github.com/guillaume-rico/SharpIR
  5.   項(xiàng)目:測(cè)試距離的方案之四
  6.   Module        UNO
  7.   VCC   ——   5V
  8.   GND  ——   GND
  9.   VO    ——   A0
  10. */

  11. #include <SharpIR.h>

  12. #define ir A0    //模擬輸入引腳
  13. #define model 20150    //傳感器型號(hào)
  14. // ir: the pin where your sensor is attached
  15. // model: an int that determines your sensor:  1080 for GP2Y0A21Y
  16. //                                            20150 for GP2Y0A02Y
  17. //                                            100500 for GP2Y0A710K0F
  18. //                                            430   for  GP2YA41SK0F
  19. //                                            (working distance range according to the datasheets)

  20. SharpIR SharpIR(ir, model);

  21. void setup() {
  22.   // put your setup code here, to run once:
  23.   Serial.begin(9600);
  24. }

  25. void loop() {
  26.   delay(500);

  27.   unsigned long pepe1 = millis(); // takes the time before the loop on the library begins

  28.   int dis = SharpIR.distance(); // this returns the distance to the object you're measuring


  29.   Serial.print("Mean distance: ");  // returns it to the serial monitor
  30.   Serial.println(dis);

  31.   unsigned long pepe2 = millis() - pepe1; // the following gives you the time taken to get the measurement
  32.   Serial.print("Time taken (ms): ");
  33.   Serial.println(pepe2);
  34. }
復(fù)制代碼


ID:513258 發(fā)表于 2019-10-6 18:56
  1. /*
  2.   【Arduino】108種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
  3.   實(shí)驗(yàn)一百三十三:夏普GP2Y0A02YK0F 紅外測(cè)距傳感器模塊 20-150cm 距離傳感器
  4.   項(xiàng)目:測(cè)試距離的方案之三
  5.   說明;參考V-cm圖, 用查表法, 連接Vout到Arduino的A0引腳, 測(cè)量頻率20Hz
  6.   需要進(jìn)一步校對(duì)與調(diào)整參數(shù)
  7.   Module        UNO
  8.   VCC   ——   5V
  9.   GND  ——   GND
  10.   VO    ——   A0
  11. */

  12. float distance[] = {20, 30, 40, 50, 60, 70, 80, 90, 100,  110,  120,  130,  140,  150};
  13. float voltage[14] = {2.5, 2, 1.55, 1.25, 1.1, 0.85, 0.8, 0.73, 0.7, 0.65, 0.6, 0.5, 0.45, 0.4};

  14. typedef struct {
  15.   float maxDistance;  //cm
  16.   float minDistance;  //cm
  17.   float offset; //cm
  18.   float distance; //cm,
  19.   int frequency;  //Hz
  20.   int pin;
  21. }SHARP;

  22. SHARP Sharp = {150, 20, 0, 0, 20, A0};

  23. void getDistance(SHARP* Sharp) {
  24.   float v = analogRead(Sharp->pin);
  25.   v = v / 1024.0 * 5;
  26.   int index = 0;
  27.   for(index = 0; index < 14; index++) {
  28.     if(v >= voltage[index]) {
  29.       break;
  30.     }
  31.   }
  32.   if(index == 0) {
  33.     Sharp->distance = 20;
  34.   } else if(index == 14) {
  35.     Sharp->distance = 150;
  36.   } else {
  37.     Sharp->distance = map(v, voltage[index], voltage[index-1], distance[index], distance[index-1]);
  38.   }
  39. }

  40. void setup() {
  41.   Serial.begin(115200);
  42. }

  43. void loop() {
  44.   static unsigned long lastTime = millis();
  45.   if(millis() - lastTime > 1000/Sharp.frequency) {
  46.     lastTime = millis();
  47.     getDistance(&Sharp);
  48.     Serial.println(Sharp.distance);
  49. //    int v = analogRead(Sharp.pin);
  50. //    Serial.println(v);
  51.   }  
  52. }
復(fù)制代碼


ID:513258 發(fā)表于 2019-10-6 18:27
  1. /*
  2.   【Arduino】108種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
  3.   實(shí)驗(yàn)一百三十三:夏普GP2Y0A02YK0F 紅外測(cè)距傳感器模塊 20-150cm 距離傳感器
  4.   項(xiàng)目:測(cè)試距離的方案之二
  5.   Module        UNO
  6.   VCC   ——   5V
  7.   GND  ——   GND
  8.   VO    ——   A0
  9. */

  10. #define pin A0

  11. void setup () {
  12.         Serial.begin (9600);
  13.         pinMode (pin, INPUT);
  14. }

  15. void loop () {
  16.         uint16_t value = analogRead (pin);
  17.         uint16_t range = get_gp2y0a02 (value);
  18.         Serial.println (value);
  19.         Serial.print (range);
  20.         Serial.println (" cm");
  21.         Serial.println ();
  22.         delay (500);
  23. }

  24. //return distance (cm)
  25. uint16_t get_gp2y0a02 (uint16_t value) {
  26.         if (value < 70)  value = 70;
  27.         return 12777.3/value-1.1;        //(cm)
  28.         //return (62.5/(value/1023.0*5)-1.1);        //(cm)
  29.         //return ((67870.0 / (value - 3.0)) - 40.0); //gp2d12 (mm)
  30. }
復(fù)制代碼


ID:513258 發(fā)表于 2019-10-6 17:36
  1. /*
  2.   【Arduino】108種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
  3.   實(shí)驗(yàn)一百三十三:夏普GP2Y0A02YK0F 紅外測(cè)距傳感器模塊 20-150cm 距離傳感器
  4.   項(xiàng)目一:測(cè)試距離的方案之一
  5.   Module        UNO
  6.   VCC   ——   5V
  7.   GND  ——   GND
  8.   VO    ——   A0
  9. */

  10. int IRpin = 0;                                    // analog pin for reading the IR sensor
  11. void setup() {
  12.   Serial.begin(9600);                             // start the serial port
  13. }
  14. void loop() {
  15.   float volts = analogRead(IRpin) * 0.0048828125; // value from sensor * (5/1024) - if running 3.3.volts then change 5 to 3.3
  16.   float distance = 65 * pow(volts, -1.10);        // worked out from graph 65 = theretical distance / (1/Volts)
  17.   Serial.println(distance);                       // print the distance
  18.   delay(100);                                     // arbitary wait time.
  19. }
復(fù)制代碼


ID:513258 發(fā)表于 2019-10-6 10:44
zh_jie_sjz 發(fā)表于 2019-10-4 17:18
這個(gè)東東很有意思

是嗎,我還沒有實(shí)驗(yàn)過呢
ID:619262 發(fā)表于 2019-10-4 17:18
這個(gè)東東很有意思

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

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

快速回復(fù) 返回頂部 返回列表