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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 17184|回復: 33
收起左側

stm32 vl53l0x激光測距程序

  [復制鏈接]
ID:227475 發表于 2017-8-14 00:54 | 顯示全部樓層 |閱讀模式
}7IRKBG8(G1V5{R7HBP11BY.jpg
0.png

vl53l0x激光測距的stm32單片機源程序如下:
  1. #include "vl53l0.h"
  2. VL53L0X_Dev_t vl53l0x_dev;
  3. VL53L0X_DeviceInfo_t vl53l0x_dev_info;
  4. VL53L0X_RangingMeasurementData_t vl53l0x_data;
  5. VL53L0X_Error vl53l0x_status;

  6. /***************************************************************************************/

  7. void print_pal_error(VL53L0X_Error Status)
  8. {
  9.     char buf[VL53L0X_MAX_STRING_LENGTH];
  10.     VL53L0X_GetPalErrorString(Status, buf);  //得到錯誤碼與字符串
  11.     printf("API Status: %i : %s\n", Status, buf);
  12. }

  13. void print_range_status(VL53L0X_RangingMeasurementData_t* pdata)
  14. {
  15.     char buf[VL53L0X_MAX_STRING_LENGTH];
  16.     uint8_t RangeStatus;
  17.     // New Range Status: data is valid when pdata->RangeStatus = 0
  18.     RangeStatus = pdata->RangeStatus;

  19.     VL53L0X_GetRangeStatusString(RangeStatus, buf);
  20.    // printf("Range Status: %i : %s\n", RangeStatus, buf);
  21. }

  22. VL53L0X_Error vl53l0x_start_single_test(VL53L0X_Dev_t *pdev, \
  23.                             VL53L0X_RangingMeasurementData_t *pdata)
  24. {
  25.     VL53L0X_Error status = VL53L0X_ERROR_NONE;
  26.    
  27.     if(vl53l0x_status != VL53L0X_ERROR_NONE)
  28.         return vl53l0x_status;

  29.     status = VL53L0X_PerformSingleRangingMeasurement(pdev, pdata);   //VL53L0X執行單一測量范圍
  30.     if(status != VL53L0X_ERROR_NONE){
  31.        // printf("error:Call of VL53L0X_PerformSingleRangingMeasurement\n");
  32.         return status;
  33.     }
  34.     print_range_status(pdata);
  35.     printf("%icm\n\n", (pdata->RangeMilliMeter)/10);
  36.     return status;
  37. }


  38. VL53L0X_Error vl53l0x_measure_init(VL53L0X_Dev_t *pMyDevice)
  39. {
  40.     VL53L0X_Error Status = VL53L0X_ERROR_NONE;

  41.     //FixPoint1616_t LimitCheckCurrent;
  42.     uint32_t refSpadCount;
  43.     uint8_t isApertureSpads;
  44.     uint8_t VhvSettings;
  45.     uint8_t PhaseCal;
  46.     // Device Initialization
  47.     Status = VL53L0X_StaticInit(pMyDevice);   //基本設備初始化
  48.     if(Status != VL53L0X_ERROR_NONE){         //判斷是否初始化成功 失敗打印錯誤信息
  49.         printf ("Call of VL53L0X_StaticInit\n");
  50.         print_pal_error(Status);
  51.         return Status;
  52.     }
  53.     // Device Initialization
  54.     Status = VL53L0X_PerformRefCalibration(pMyDevice, &VhvSettings, &PhaseCal);    //執行參考校準
  55.     if(Status != VL53L0X_ERROR_NONE){        //判斷是否校準成功
  56.         printf ("Call of VL53L0X_PerformRefCalibration\n");
  57.         print_pal_error(Status);
  58.         return Status;
  59.     }

  60.     // needed if a coverglass is used and no calibration has been performed
  61.     Status = VL53L0X_PerformRefSpadManagement(pMyDevice,&refSpadCount, &isApertureSpads);
  62.     if(Status != VL53L0X_ERROR_NONE){
  63.         printf ("Call of VL53L0X_PerformRefSpadManagement\n");
  64.         printf ("refSpadCount = %d, isApertureSpads = %d\n", refSpadCount, isApertureSpads);
  65.         print_pal_error(Status);
  66.         return Status;
  67.     }

  68.     // no need to do this when we use VL53L0X_PerformSingleRangingMeasurement  當我們使用VL53L0X_PerformSingleRangingMeasurement不需要
  69.     Status = VL53L0X_SetDeviceMode(pMyDevice, VL53L0X_DEVICEMODE_SINGLE_RANGING); // Setup in single ranging mode 設置單一測量模式
  70.     if(Status != VL53L0X_ERROR_NONE){
  71.         printf ("Call of VL53L0X_SetDeviceMode\n");
  72.         print_pal_error(Status);
  73.         return Status;
  74.     }

  75.     // Enable/Disable Sigma and Signal check
  76.     if(Status == VL53L0X_ERROR_NONE){
  77.         Status = VL53L0X_SetLimitCheckEnable(pMyDevice,  //啟用/禁用特定限制檢查
  78.                         VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE, 1);
  79.     }
  80.     if(Status == VL53L0X_ERROR_NONE){
  81.         Status = VL53L0X_SetLimitCheckEnable(pMyDevice,
  82.                         VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE, 1);
  83.     }
  84.                                 
  85.     if(Status == VL53L0X_ERROR_NONE){
  86.         Status = VL53L0X_SetLimitCheckValue(pMyDevice,
  87.                         VL53L0X_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE,
  88.                         (FixPoint1616_t)(0.25*65536));
  89.         }                        
  90.     if(Status == VL53L0X_ERROR_NONE){
  91.         Status = VL53L0X_SetLimitCheckValue(pMyDevice,
  92.                         VL53L0X_CHECKENABLE_SIGMA_FINAL_RANGE,
  93.                         (FixPoint1616_t)(18*65536));                        
  94.     }
  95.     if(Status == VL53L0X_ERROR_NONE){
  96.         Status = VL53L0X_SetMeasurementTimingBudgetMicroSeconds(pMyDevice,   //設置微秒時間
  97.                         200000);
  98.     }
  99.     if(Status != VL53L0X_ERROR_NONE){
  100.         printf ("Sigma and Signal check error\n");
  101.         print_pal_error(Status);
  102.         return Status;
  103.     }
  104.     /*
  105.      *  Step  4 : Test ranging mode
  106.      */
  107.   /*  for(i=0;i<10;i++){
  108.             printf ("Call of VL53L0X_PerformSingleRangingMeasurement\n");
  109.             Status = VL53L0X_PerformSingleRangingMeasurement(pMyDevice,
  110.                             &vl53l0x_data);

  111.             print_pal_error(Status);
  112.             print_range_status(&vl53l0x_data);

  113.             VL53L0X_GetLimitCheckCurrent(pMyDevice,
  114.                             VL53L0X_CHECKENABLE_RANGE_IGNORE_THRESHOLD, &LimitCheckCurrent);

  115.             printf("RANGE IGNORE THRESHOLD: %f\n\n", (float)LimitCheckCurrent/65536.0);


  116.             if (Status != VL53L0X_ERROR_NONE) break;

  117.             printf("Measured distance: %i\n\n", vl53l0x_data.RangeMilliMeter);

  118.     }
  119. */
  120.     return Status;   //返回0
  121. }

  122. VL53L0X_Error vl53l0x_init(void)
  123. {
  124.     VL53L0X_Error Status = VL53L0X_ERROR_NONE;   //初始值賦值為0

  125.     VL53L0X_Dev_t *pMyDevice = &vl53l0x_dev;       //得到設備地址

  126.     pMyDevice->I2cDevAddr      = 0x52;            //iic地址
  127.     pMyDevice->comms_type      =  1;              //選擇IIC還是SPI    iic=1;SPI=0
  128.     pMyDevice->comms_speed_khz =  400;            //iic速率
  129.    
  130.     VL53L0X_i2c_init();          //IIC配置   

  131.     Status = VL53L0X_DataInit(pMyDevice); // Data initialization  //VL53L0X_DataInit:一次設備的初始化,初始化成功返回0
  132.     if(Status != VL53L0X_ERROR_NONE){     //判斷如果狀態不為0   打印錯誤信息
  133.         print_pal_error(Status);
  134.         return Status;        //  返回錯誤值 可通過此值DEBUG查找錯誤位置
  135.     }

  136.     Status = VL53L0X_GetDeviceInfo(pMyDevice, &vl53l0x_dev_info);   //讀取給定設備的設備信息
  137.     if(Status != VL53L0X_ERROR_NONE){
  138.         print_pal_error(Status);
  139.         return Status;
  140.     }
  141.     printf("VL53L0X_GetDeviceInfo:\n");
  142.     printf("Device Name : %s\n", vl53l0x_dev_info.Name);     //設備名
  143.     printf("Device Type : %s\n", vl53l0x_dev_info.Type);    //產品類型VL53L0X = 1, VL53L1 = 2
  144. ……………………

  145. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
vl53l0x_測距.rar (639.98 KB, 下載次數: 486)

評分

參與人數 5黑幣 +69 收起 理由
xuesong7417 + 8 贊一個!
emmmmm + 5 很給力!
默認隱藏 + 1 很給力!我剛剛好需要,就拿來參考了
32818 + 5 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:223540 發表于 2017-8-16 16:09 | 顯示全部樓層
感謝您的分享
回復

使用道具 舉報

ID:290110 發表于 2018-3-10 17:04 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:297594 發表于 2018-3-26 23:09 | 顯示全部樓層
感謝樓主分享 長見識啊 對得起這價格
回復

使用道具 舉報

ID:72988 發表于 2018-3-27 13:06 | 顯示全部樓層
感謝您的分享
回復

使用道具 舉報

ID:314389 發表于 2018-4-23 12:59 | 顯示全部樓層
感謝您的分享
回復

使用道具 舉報

ID:119803 發表于 2018-4-25 15:50 | 顯示全部樓層
謝謝分享 可惜要黑筆
回復

使用道具 舉報

ID:345678 發表于 2018-6-21 15:00 | 顯示全部樓層
guaishushu 發表于 2018-4-25 15:50
謝謝分享 可惜要黑筆

樓主使用的單片機的具體型號是多少呀,求告知
回復

使用道具 舉報

ID:356817 發表于 2018-7-10 09:13 | 顯示全部樓層
多謝樓主,很厲害
回復

使用道具 舉報

ID:267607 發表于 2018-7-12 13:17 | 顯示全部樓層
謝謝分享,樓主很棒
回復

使用道具 舉報

ID:312675 發表于 2018-8-2 10:28 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:371971 發表于 2018-8-8 18:45 | 顯示全部樓層
看完了有點不明所以
回復

使用道具 舉報

ID:394398 發表于 2018-9-6 15:01 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:250090 發表于 2018-9-29 12:38 | 顯示全部樓層
        很給力!我剛剛好需要,就拿來參考了
回復

使用道具 舉報

ID:414444 發表于 2018-10-24 09:34 | 顯示全部樓層
正在找呢,謝謝您
回復

使用道具 舉報

ID:434041 發表于 2018-11-28 14:05 | 顯示全部樓層
非常不錯
回復

使用道具 舉報

ID:439402 發表于 2018-12-4 17:07 | 顯示全部樓層
終于找到了,感謝樓主
回復

使用道具 舉報

ID:439402 發表于 2018-12-4 17:09 | 顯示全部樓層
正在找呢,謝謝
回復

使用道具 舉報

ID:282138 發表于 2018-12-11 10:47 | 顯示全部樓層
感謝樓主
回復

使用道具 舉報

ID:455438 發表于 2018-12-28 16:27 | 顯示全部樓層
感謝感謝!!
回復

使用道具 舉報

ID:388992 發表于 2019-1-16 13:22 | 顯示全部樓層
最近也在找這方面的資料,感謝樓主分享!
回復

使用道具 舉報

ID:437392 發表于 2019-2-20 22:00 | 顯示全部樓層
挺好,值得大家學習
回復

使用道具 舉報

ID:45026 發表于 2019-2-24 19:52 | 顯示全部樓層
非常好,很好的學習資料,多謝分享!
回復

使用道具 舉報

ID:411805 發表于 2019-3-4 09:00 | 顯示全部樓層
感謝感謝!
回復

使用道具 舉報

ID:500798 發表于 2019-3-30 10:06 | 顯示全部樓層
想請問一下樓主和各位已經下載的大神,這個只需要接好IO口就可以直接使用嗎
回復

使用道具 舉報

ID:6906 發表于 2019-3-30 10:48 | 顯示全部樓層
這個測距的測量范圍是多少?測量精度又是多少?
回復

使用道具 舉報

ID:393856 發表于 2019-7-11 11:52 | 顯示全部樓層
感謝UP主!得以借鑒一下。
回復

使用道具 舉報

ID:597851 發表于 2019-8-8 16:43 | 顯示全部樓層
啦啦啦,我要代碼
回復

使用道具 舉報

ID:510572 發表于 2019-8-8 23:33 | 顯示全部樓層
想問問xshut和GPIO1怎么接,庫的代碼看不過來
回復

使用道具 舉報

ID:485354 發表于 2019-8-19 09:30 | 顯示全部樓層
感謝樓主的無私奉獻
回復

使用道具 舉報

ID:558527 發表于 2019-9-21 14:49 | 顯示全部樓層
感謝樓主的無私奉獻
回復

使用道具 舉報

ID:630593 發表于 2019-10-28 18:49 | 顯示全部樓層
很給力,正需要
回復

使用道具 舉報

ID:697669 發表于 2020-3-29 20:19 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:741590 發表于 2020-4-30 11:31 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 96久久久久久 | 干出白浆视频 | 在线综合视频 | av片免费| 精品香蕉一区二区三区 | 亚洲国产一区二区三区在线观看 | 成人午夜视频在线观看 | 欧美成人影院 | 精品国产一区二区三区成人影院 | 欧美在线观看免费观看视频 | 国产成人福利在线 | 久久久久久免费精品一区二区三区 | jlzzjlzz国产精品久久 | 午夜激情视频 | 久久久久久99 | 亚洲成人av一区二区 | 久久久久久久久久久丰满 | 国产乱码精品1区2区3区 | 中文字幕 国产 | 久久久亚洲| a在线视频| 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 国产一区精品在线 | 第一区在线观看免费国语入口 | 日韩精品二区 | 久久精品国产久精国产 | 欧美日韩精品一区二区 | 亚洲国产一区二区三区 | 麻豆久久久久久久 | 国产精品视频网 | 久久久久久女 | 色婷婷久久久久swag精品 | 久久综合狠狠综合久久综合88 | 在线观看日本高清二区 | 国产精品中文字幕在线播放 | 一级黄色片免费在线观看 | 国产福利视频在线观看 | 亚洲国产精品久久 | 国产一区视频在线 | 精品美女 | 久久国产精品久久久久久 |