チーム1442
課題名
連打ゲーム
研究者名
佐藤光時 新宮輝一
概要
PSoCを二つ使い、SWボタンを20回先に押したほうが勝ちというゲーム。勝ったほうと負けたほうでそれぞれ違う表示がディスプレイに映される。
赤外線通信の素子が38khz付近でないと動作しないので、PWM8で38khzの波形を生成するように設定した。
使用モジュールはPGAとPWM。
使用した器具
PSoC 2台
ジャンパー線 16本
MiniProg
赤外線通信素子
ソースコード
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#define SW 0b00100000 //スイッチPort1_5
#define IN 0b00010000 //受信用ポート
#define X 20 //早押しする回数
int count = 0; //押した回数の記録
int flag = 0; //スイッチの状態
int win_flg = 0;
int lose_flg = 0;
void main(void)
{
LCD_Start(); LCD_PrCString("FIGHT!"); PGA_Start(PGA_HIGHPOWER); PRT1DR &= (~SW); PRT1DR &= (~IN); while(1) { if(PRT1DR & SW) { if(flag ==0) { flag = 1; count++; } if(count >= X && lose_flg == 0) { PWM8_Start(); //PWM8_1_Start(); LCD_Position(0,0); LCD_PrCString("You Win!"); win_flg = 1; } PRT1DR &= (~SW); } else { flag = 0; } if(!(PRT1DR & IN) && win_flg == 0) { LCD_Position(0,0); LCD_PrCString("You Lose..."); PRT1DR &= (~IN); lose_flg = 1; }
} // M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts // Insert your main routine code here.
}
考察
勝ったほうのPSoCから赤外線が送信され負けたほうがそれを受信しディスプレイに”You Lose...”と表示させる予定だったがなかなかうまく動作させることができなかった。カメラで赤外線が発信されているのは確認できたのでソースコードのほうに問題があると考えられた。TAの人の協力のおかげでうまく修正することができた。
- 最終更新:2014-10-21 16:53:58