チーム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++; } }
}
回路図
考察
このハードでは距離センサーとスピーカーを同時に接続して、PWMのパルス幅を0にするとノイズが出てしまう。
その対策として、ソースコード内のSILENTには大きな値を指定してとても低い音(聞こえない程度)を出力するようにしている。
このハードにモーターなどで自走するシステムを組み込み、それを制御することで障害物を自動でよける車を作ることができる。
- 最終更新:2016-12-20 14:01:51