チーム1212
課題名
近距離通報センサー
研究者名
2-15-46 古澤 海峰
2-15-45 二三四 一道
ソース
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
int D=119, SILENT=0;
int TC=0;
#pragma interrupt_handler myISR
void myISR(void){ //割り込み
TC++;
if(TC%2==0)
PWM16_1_WritePeriod(D);
PWM8_1_Start();
if(TC%2==1)
PWM16_1_WritePeriod(0);
}
void main(void)
{
// M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts // Insert your main routine code here. unsigned int adc_data; Timer16_1_EnableInt(); Timer16_1_Start(); PGA_Start(PGA_HIGHPOWER); LCD_Start(); LCD_InitBG(LCD_SOLID_BG); ADCINC_Start(ADCINC_HIGHPOWER); ADCINC_GetSamples(0); PWM16_1_Start(); M8C_EnableGInt; while(1){ //距離センサーの条件 while(ADCINC_fIsDataAvailable() == 0); adc_data = ADCINC_wClearFlagGetData(); LCD_Position(0,0); LCD_PrHexInt(adc_data); LCD_DrawBG(1,0,16,(adc_data/50));
if(adc_data <= 1020){ Timer16_1_WritePeriod(9999999); } else if(adc_data > 1020&& adc_data <= 1280){ Timer16_1_WritePeriod(999999); } else if(adc_data > 1280 && adc_data <= 1530){ Timer16_1_WritePeriod(99999); } else if(adc_data > 1530 && adc_data <= 1790){ Timer16_1_WritePeriod(9999); } else if(adc_data > 1790 && adc_data <= 2040){ Timer16_1_WritePeriod(9999); } else if(adc_data > 2040 && adc_data <= 2300){
Timer16_1_WritePeriod(9999); } else if(adc_data > 2300 && adc_data <= 2560){
Timer16_1_WritePeriod(9999); } else if(adc_data > 2560 && adc_data <= 2810){ Timer16_1_WritePeriod(9999); } else Timer16_1_WritePeriod(999); } }
使用した道具
- PSoC
- 距離センサー
- スピーカー
- ジャンパー線
概要
距離センサーで距離を判別しその距離によって音の間隔を短くして、障害物との距離を教える。
また、分かりずらいがLEDを用いて、光によっても障害物の距離を知らせる。
音の間隔は、TIMER割り込みのピリオド値を変化させることで間隔を短くしたり、長くする。
考察
この自由課題では音と光と距離センサーを使って距離の近さを判別する装置を作った。
音のボリュームをフィルターを用いて、より良い音を出力できるようにすればよかった。
また、LEDによる距離の知らせをもっとはっきり出力できるようになればよかった。
TIMER割り込みによる割り込みのピリオド値を変化することで音の間隔を変化できたのでそこは、評価できる。
また、割り込みのカウントアップによって音の変化をつけた所も評価できた。
最後に愚痴
最後に1221班と内容が被ったのでなんか嫌な感じ~~~~。
- 最終更新:2012-05-15 16:53:01