最新电影在线观看,jrs低调看直播,avav天堂,囯产精品宾馆在线精品酒店,亚洲精品成人区在线观看

兩輪平衡車_3_ 激光模塊代碼實現

激光模塊電路圖如下:

通過4個IO口去選通8路激光驅動,每一個狀態只能驅動一個激光;2路激光接收器,在接收到激光發射光后會把收到發射信號的那一路檢測IO腳拉低;

激光巡線模塊代碼思路:將4個選通IO口的狀態跟8路激光一一對應起來,在每一顆激光驅動的同時檢測激光接收模塊的狀態,如果對應驅動的激光能使激光接收器輸出低電平(低電平收到激光反射信號,高電平沒有收到激光反射信號),就將激光對應的位號置為0;通過分析每次8個激光的掃描結果,輸出對應激光巡線的位置;輸出位置標定為5檔,Left_L、Left_S、Middle、Right_S、Right_L;

/******************************************************************************

 *    FILENAME : Bsp_Laser.c

 *    PURPOSE  : Laser應用函數接口

 *    Author: 電筆小新                      Created on: 2025年9月7日

******************************************************************************/

# "User_Include.h"

# "Bsp_Laser.h"

//======================================================

// *  Variables & Function_Defines

//======================================================

u8   Laser_Result=0;    

// LASER_TX1 引腳宏定義

   LASER_TX1_H       (GpioDataRegs.GPASET.bit.GPIO11=1)       /* LASER_TX1 = 1 */

   LASER_TX1_L       (GpioDataRegs.GPACLEAR.bit.GPIO11=1)     /* LASER_TX1 = 0 */

 

// LASER_TX2 引腳宏定義

    LASER_TX2_H       (GpioDataRegs.GPASET.bit.GPIO5=1)        /* LASER_TX2 = 1 */

    LASER_TX2_L       (GpioDataRegs.GPACLEAR.bit.GPIO5=1)      /* LASER_TX2 = 0 */

 

// LASER_TX3 引腳宏定義

    LASER_TX3_H       (GpioDataRegs.GPASET.bit.GPIO4=1)        /* LASER_TX3 = 1 */

    LASER_TX3_L       (GpioDataRegs.GPACLEAR.bit.GPIO4=1)      /* LASER_TX3 = 0 */

 

// LASER_TX4 引腳宏定義         

     LASER_TX4_H       (GpioDataRegs.GPBSET.bit.GPIO40=1)       /* LASER_TX4 = 1 */

    #LASER_TX4_L       (GpioDataRegs.GPBCLEAR.bit.GPIO40=1)     /* LASER_TX4 = 0 */

 

// LASER_RX1 引腳宏定義

    # LASER_RX1()       (GpioDataRegs.GPADAT.bit.GPIO10)         /* 讀LASER_RX1狀態 */

 

// LASER_RX2 引腳宏定義

    # LASER_RX2()       (GpioDataRegs.GPBDAT.bit.GPIO34)        /* 讀LASER_RX2狀態 */

 

//LASER掃描狀態定義

    #deLeft_L     3

    #d Left_S     4

    #d Middle     5

    #d Right_S    6

    #deRight_L    7

//======================================================

// * Function    :  Laser_Init()

// * Purpose     :

// * Parameters  :  Null

// * Return      :  Null

//======================================================

void Laser_Init(void)

{

// LASER_TX1 初始化

    GpioCtrlRegs.GPAMUX1.bit.GPIO11=0;    //IO口

    GpioCtrlRegs.GPADIR.bit.GPIO11=1;     //端口設置輸出

    GpioCtrlRegs.GPAPUD.bit.GPIO11=1;     //上拉




// LASER_TX2 初始化

    GpioCtrlRegs.GPAMUX1.bit.GPIO5=0;    //IO口

    GpioCtrlRegs.GPADIR.bit.GPIO5=1;     //端口設置輸出

    GpioCtrlRegs.GPAPUD.bit.GPIO5=1;     //上拉




// LASER_TX3 初始化

    GpioCtrlRegs.GPAMUX1.bit.GPIO4=0;    //IO口

    GpioCtrlRegs.GPADIR.bit.GPIO4=1;     //端口設置輸出

    GpioCtrlRegs.GPAPUD.bit.GPIO4=1;     //上拉




// LASER_TX4 初始化

    GpioCtrlRegs.GPBMUX1.bit.GPIO40=0;    //IO口

    GpioCtrlRegs.GPBDIR.bit.GPIO40=1;     //端口設置輸出

    GpioCtrlRegs.GPBPUD.bit.GPIO40=1;     //上拉




// LASER_RX1 初始化

    GpioCtrlRegs.GPAMUX1.bit.GPIO10=0;    //IO口

    GpioCtrlRegs.GPADIR.bit.GPIO10=0;     //端口設置輸入

    GpioCtrlRegs.GPAPUD.bit.GPIO10=1;     //上拉

    

// LASER_RX2 初始化

    GpioCtrlRegs.GPBMUX1.bit.GPIO34=0;    //IO口

    GpioCtrlRegs.GPBDIR.bit.GPIO34=1;     //端口設置輸入

    GpioCtrlRegs.GPBPUD.bit.GPIO34=1;     //上拉 

}

//======================================================

// * Function    :  Laser_Scan()

// * Purpose     :

// * Parameters  :  Null

// * Return      :  Null

//======================================================

u8 Laser_Scan(void)

{

u8 i;

u8 Laser_Temp=0;

for (i = 0; i < 8; i++)

{

switch(i)

{

  Cas e 0:  LASER_TX1_L;LASER_TX2_L;LASER_TX3_L;LASER_TX4_H;break;  //點亮第1個激光

case 1:  LASER_TX1_H;LASER_TX2_L;LASER_TX3_L;LASER_TX4_H;break;  //點亮第2個激光

case 2:  LASER_TX1_L;LASER_TX2_H;LASER_TX3_L;LASER_TX4_H;break;  //點亮第3個激光

case 3:  LASER_TX1_H;LASER_TX2_H;LASER_TX3_L;LASER_TX4_H;break;  //點亮第4個激光

case 4:  LASER_TX1_L;LASER_TX2_L;LASER_TX3_H;LASER_TX4_H;break;  //點亮第5個激光

case 5:  LASER_TX1_H;LASER_TX2_L;LASER_TX3_H;LASER_TX4_H;break;  //點亮第6個激光

case 6:  LASER_TX1_L;LASER_TX2_H;LASER_TX3_H;LASER_TX4_H;break;  //點亮第7個激光

case 7:  LASER_TX1_H;LASER_TX2_H;LASER_TX3_H;LASER_TX4_H;break;  //點亮第8個激光

default: LASER_TX1_L;LASER_TX2_L;LASER_TX3_L;LASER_TX4_L;break;  

}

DELAY_US(100);

if((LASER_RX1())||( LASER_RX2()))    //接收狀態檢測

{

Laser_Temp |= (1<
聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
本篇所含全部資料,點擊此處留下郵箱我會發給你
資料明細:激光模塊驅動程序
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 0
收藏 1
關注 85
成為作者 賺取收益
全部留言
0/200
  • zhoucwyh 2天前
    老師,能不能發我一下資料,謝謝! zh****@****.com
    回復 1條回復