2016年1月4日 星期一

Cypress CY8CKIT-049-42xx 超音波測距

   Cypress  CY8CKIT-049-42xx  超音波測距

本實驗使用 :

 Cypress  CY8CKIT-049-42xx 開發粄     X 1
 40字元 X2 行  LCM                                 X 1
 超音波感測器  HC-SR04                         X 1
 軟體環境 PSoC Creator 3.3

  開啟 PSoC Creator 3.3
File --> New --> Project..



選擇 Target device --> PSoC4200  -->Next


選擇 Empty schematic 用空白線路圖 -->Next


選擇新的工作區,填入工作區名稱,選哲存放位置,填入專案名稱


預設就是一張空白線路圖.


      要顯示距離在LCM上需要一個LCM驅動,右邊零件區 Display -> Character LCD 將這零件拉進線路圖中.


在右下角有這顆零件的Datasheet.


     點兩下這個LCD_Char_1零件,將Name 改成 LCD_Char , LCD Custom Character Set 改成 Horizontal Bargraph -->OK.


     超音波測距需要一個Timer Counter , 在右邊零件區 Digital --> Functions --> Timer Counter 將這零件拉進線路圖中.


點兩下這個 Timer_1 零件,將 Name 改成 Timer.


      點選 Timer/Counter 將 Run mode : 改成 One shot , 
勾選 On compare/capture count, rolad 
勾選 Rising edge, start 勾選 Rising edge, stop 
勾選 Falling edge, capture 勾選 Falling edge.


Timer 需要一個 Clock ,在右邊零件區 System --> Clock 將這零件拉進線路圖中.


點兩下這個 Clock_1 零件,將 Frequency  改成 1Mhz,Tolerance改成 -2% +2%.


Timer 觸發後需要一個 中斷控制器 ,在右邊零件區 System -->Interrupt 將這零件拉進線路圖中.


點兩下這個 isr_1 零件,將 Name 改成 ISR.


     
    超音波模組需要兩個信號接腳 Trig & Echo , Trig是通知超音波模組開始發送信號,Echo是超音波模組回報收到回音.
      需要一輸出接腳接到超音波模組的Trig,右邊零件區 Ports & Pin -> Digital Output Pin 將這零件拉進線路圖中.


點兩下這個 Pin_1 零件,將 Name 改成 Trig,HW connection 不勾選.

     
    需要一輸入接腳接到超音波模組的Echo,右邊零件區 Ports & Pin -> Digital Input Pin 將這零件拉進線路圖中.


點兩下這個 Pin_1 零件,將 Name 改成 Echo.


       CY8CKIT-049-42xx 上有一個LED,可用來指示超音波偵測時同步點亮,確認程式運作正常
需要一輸出接腳接到 Y8CKIT-049-42xx LED,右邊零件區 Ports & Pin -> Digital Output Pin 將這零件拉進線路圖中.


    點兩下這個 Pin_1 零件,將 Name 改成 LED,HW connection 不勾選. 勾選 External terminal

    再來就需佈線,按 "w" 鍵 開始佈線,滑鼠在 + 形狀時點一下要接線的第一點拉到第二點再點一下,完成後如圖


滑鼠點兩下左上角的 Ultrasonic.cydwr 配置IC實際對外輸出腳位



點選右上角 port 會列出可用的Pin,綠色為可選用.


選好後中間IC圖示會標註目前指定Pin腳的功能


點選左邊 main.c 開始寫程式.

//以下為 main.c 內容

#include <project.h>

// 初始化設定
int16 i =0;
int distance=0;

// 中斷設定
CY_ISR(Timer_ISR_handler)
{
    // 計時器 1Mhz 一個脈衝=1uS
    Timer_ClearInterrupt(Timer_INTR_MASK_CC_MATCH);
    i= Timer_ReadCounter();    
    
    // 超音波each回信號 58 uS = 1 cm
    
    distance =i/58;
   
    }

int main()

{
// 啟動計時器
    Timer_Start();
// 啟動中斷
    CyGlobalIntEnable; 
    ISR_StartEx(Timer_ISR_handler);

    
// 啟動 LCD    
    LCD_Char_Start();
    LCD_Char_DisplayOn();
    
             
        for(;;)
        {
    
    CyDelay(500);    // 延遲500ms
    
    // 啟動超音波
    Trig_Write(1);
    LED_Write(1);
    CyDelayUs(10);    //延遲10us
    Trig_Write(0);
    LED_Write(0);   
    
    LCD_Char_ClearDisplay();
   
    LCD_Char_Position(0,0);
    LCD_Char_PrintString("CY8CKIT-049-42xx  UltraSonic");
    
    LCD_Char_Position(1,0);
    LCD_Char_PrintString("Distance: ");
    
    LCD_Char_Position(1,10);
    LCD_Char_PrintNumber(distance);
    
    LCD_Char_Position(1,14);
    LCD_Char_PrintString("cm");    
    
    LCD_Char_Position(1,25);
    LCD_Char_PrintString("Story Chen");   
    
}
          
}

/* [] END OF FILE */


滑鼠點Debug Program 或 快速鍵 Ctrl + F5 開始編譯燒錄


沒錯誤就可看到成果了




沒有留言:

張貼留言