チーム172A

課題名

眠たい私の声にお応えして

作成者

Chen ChoonMing
Terada Riku

概要

毎日徹夜で作成する課題の数々....
みなさんは、PSoCの課題にお疲れではないだろうか?
そんな方々に心地よい時間を提供するために作成した。

(注)このおもちゃの対象年齢は10歳以下です。

使用機器

・PSoC評価基盤(MiniProg書き込み器、27443デバイス、USB巻き取り延長ケーブル付き)
・スピーカ
・ジャンパ線

配線

モジュールの配線は以下のように設置した。
眠たい私の声にお応えして.PNG
図1 モジュールの配置

ソースコード


#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#pragma interrupt_handler myISR
int PW =125;
int SILENT=0,D=229,L=204,M=182,F=172,S=153,R=136,C=121,DD=115;
int TC=0;

void myISR(void)
{
TC +=1;
PWM16_1_WritePulseWidth(PW);
if(TC == 1)
PWM16_1_WritePeriod(D);
else if(TC == 3)
PWM16_1_WritePeriod(D);
else if(TC == 6)
PWM16_1_WritePeriod(S);
else if(TC == 9)
PWM16_1_WritePeriod(S);
else if(TC == 12)
PWM16_1_WritePeriod(R);
else if(TC == 15)
PWM16_1_WritePeriod(R);
else if(TC == 18)
PWM16_1_WritePeriod(S);
else if(TC == 27)
PWM16_1_WritePeriod(F);
else if(TC == 30)
PWM16_1_WritePeriod(M);
else if(TC == 33)
PWM16_1_WritePeriod(M);
else if(TC == 36)
PWM16_1_WritePeriod(L);
else if(TC == 39)
PWM16_1_WritePeriod(L);
else if(TC == 42)
PWM16_1_WritePeriod(D);
else if(TC == 45)
PWM16_1_WritePeriod(S);
else if(TC == 52)
PWM16_1_WritePeriod(S);
else if(TC == 55)
PWM16_1_WritePeriod(F);
else if(TC == 58)
PWM16_1_WritePeriod(F);
else if(TC == 61)
PWM16_1_WritePeriod(M);
else if(TC == 64)
PWM16_1_WritePeriod(M);
else if(TC == 67)
PWM16_1_WritePeriod(L);
else if(TC == 70)
PWM16_1_WritePeriod(S);
else if(TC == 79)
PWM16_1_WritePeriod(S);
else if(TC == 82)
PWM16_1_WritePeriod(F);
else if(TC == 85)
PWM16_1_WritePeriod(F);
else if(TC == 88)
PWM16_1_WritePeriod(M);
else if(TC == 91)
PWM16_1_WritePeriod(M);
else if(TC == 94)
PWM16_1_WritePeriod(L);
else if(TC == 97)
PWM16_1_WritePeriod(D);
else if(TC == 100)
PWM16_1_WritePeriod(D);
else if(TC == 106)
PWM16_1_WritePeriod(S);
else if(TC == 109)
PWM16_1_WritePeriod(S);
else if(TC == 112)
PWM16_1_WritePeriod(R);
else if(TC == 115)
PWM16_1_WritePeriod(R);
else if(TC == 118)
PWM16_1_WritePeriod(S);
else if(TC == 121)
PWM16_1_WritePeriod(F);
else if(TC == 124)
PWM16_1_WritePeriod(F);
else if(TC == 127)
PWM16_1_WritePeriod(M);
else if(TC == 130)
PWM16_1_WritePeriod(M);
else if(TC == 133)
PWM16_1_WritePeriod(L);
else if(TC == 142)
PWM16_1_WritePeriod(L);
else if(TC == 145)
PWM16_1_WritePeriod(D);
else if(TC == 148)
PWM16_1_WritePeriod(SILENT);

if(TC == 1){
LCD_1_Start();
LCD_1_PrCString("Hello!");
}
else if(TC == 149){
LCD_1_Start();
LCD_1_PrCString("Good night....");
}
else if(TC == 170){
LCD_1_Start();
LCD_1_PrCString("Again!");
}

if(TC % 12 == 0 && TC < 148){
LCD_1_Start();
LCD_1_PrCString("( ^o^ )(*^.^* )");
}if(TC % 12 == 6 && TC < 148){
LCD_1_Start();
LCD_1_PrCString("( ^_^ )( *^.^*)");
}
}
void main()
{
M8C_EnableGInt;
PWM16_1_Start();
Timer16_1_EnableInt();
Timer16_1_Start();
while(1)
{};


  // M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts
   // Insert your main routine code here.
   
}

考察

今回使用したのはtimer_pwm2である。
タイマー割込みを使用して「キラキラ星」を演奏し小さい子向けのおもちゃを作成した。
LCDでは、演奏前には「Hello!!」
演奏中には「( ^o^ )(*^.^* )」が歌ったり踊ったりしているような動きを表示させ
演奏後には「Good bye...」「Again!!」と表示させるようにした。

改善点

光センサーによる夜更かし防止機能や、アラーム設定機能などの実装でいいものができると思う。

  • 最終更新:2017-06-13 16:31:12

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

認証パスワード