チーム1666

課題名

EyeSight

研究者名

Watanabe Takuto
Miyagami Norito

概要

距離センサーを使用して物体との距離を測り、近くに物がある場合に音を出すというもの。
EyeSightという名前は、車などに使用されている自動ブレーキシステムからきている。
なので、これにも近くに物があるときはLCDに"Stop!"と表示するようにした。
本物のEyeSightは、画像による三次元的な判定を行っているが、これは距離のみで判定を行っている。

使用器具

  • PSoC基板
  • 距離センサー
  • スピーカー

ソースコード


#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules

int PW=125; // Pulse Width
int SILENT=6000, D=229, L=204, M=182, F=172, S=153, R=136, C=121, DD=115; //Scale

void main(void)
{
  unsigned int adc_data;
   int state = 0;
   int cnt = 0;
   PGA_Start(PGA_HIGHPOWER);
   LCD_Start();
   LCD_InitBG(LCD_SOLID_BG);
   M8C_EnableGInt;
   ADCINC_Start(ADCINC_HIGHPOWER);
   ADCINC_GetSamples(0);
   PWM16_Start();
   PWM16_WritePulseWidth(PW);
   PWM16_WritePeriod(SILENT);
   while(1){
       while(ADCINC_fIsDataAvailable() == 0);
       adc_data = ADCINC_wClearFlagGetData();
       LCD_Position(0, 0);
       if(state == 0 && adc_data >= 0x0800){
           state = 1;
           cnt = 0;
           LCD_PrCString("Stop!");
       }
       else if(state == 1 && adc_data < 0x0800){
           state = 0;
           LCD_PrCString("     ");
           PWM16_WritePeriod(SILENT);
       }
       if(state == 1){
           if(cnt%100 == 0)
               PWM16_WritePeriod(R);
           else if(cnt%100 == 80)
               PWM16_WritePeriod(SILENT);
           cnt++;
       }
   }
}

回路図

EyeSjght回路図.png

考察

このハードでは距離センサーとスピーカーを同時に接続して、PWMのパルス幅を0にするとノイズが出てしまう。
その対策として、ソースコード内のSILENTには大きな値を指定してとても低い音(聞こえない程度)を出力するようにしている。

このハードにモーターなどで自走するシステムを組み込み、それを制御することで障害物を自動でよける車を作ることができる。

  • 最終更新:2016-12-20 14:01:51

このWIKIを編集するにはパスワード入力が必要です

認証パスワード