チーム1218

課題名

おみくじちゃん

研究者名

油布勝也
吉池直樹

概要

PSoCとキーボードでおみくじができる。


内容

キーボードを押すことで、そのキーに割り振られたおみくじの結果と、音やグラフィックがteratermに表示される。





#include <m8c.h>  
#include "PSoCAPI.h"    
#include <string.h>

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

void main(void)  
{  
   char * strPtr;                        // Parameter pointer  
     
   UART_CmdReset();                      // Initialize receiver/cmd  
                                         // buffer  
   UART_IntCntl(UART_ENABLE_RX_INT);     // Enable RX interrupts  
   Counter8_WritePeriod(155);            // Set up baud rate generator  
   Counter8_WriteCompareValue(77);  
   Counter8_Start();                     // Turn on baud rate generator       
     
   UART_Start(UART_PARITY_NONE);         // Enable UART  
     
   M8C_EnableGInt ;                      // Turn on interrupts  
   PWM16_1_Start();  
   UART_CPutString("\r\nPSoC Synthesizer V1.1\r\n");  
     
   while(1) 
   {  
      if(UART_bCmdCheck()) 
      {                                         // Wait for command    
         if(strPtr = UART_szGetParam()) 
         {                                      // More than delimiter?  
            UART_CPutString("Found valid command\r\nCommand =>");    
            
            //UART_PutString(strPtr);             // Print out command   
            UART_CPutString("<\r\nParamaters:\r\n");    
            if (*strPtr=='a'){
            
            UART_CPutString("大凶  \n");             
            UART_CPutString("   _                                                                     ");             
            UART_CPutString("        /~ヽ                                                               ");             
            UART_CPutString("         (。・-・)      大凶だよ~                                                     ");             
            UART_CPutString("     ゚し-J゚           ドンマイ                                            ");             
            UART_CPutString("                                                                        ");             
            UART_CPutString("                                                                         ");             
           
            PWM16_1_WritePeriod(D);
            }
            else if (*strPtr=='s'){
            UART_CPutString("中吉  テヘ p(*^-^*)q");             
            PWM16_1_WritePeriod(L);
            }
            else if (*strPtr=='d'){
            UART_CPutString("凶  彡(-_-;)彡");             
            PWM16_1_WritePeriod(M);
            }
            else if (*strPtr=='f'){
            UART_CPutString("吉  ヘ(゚∀゚ヘ)アヒャ");             
            PWM16_1_WritePeriod(F);
            }
            else if (*strPtr=='g'){
            PWM16_1_WritePeriod(S);
            UART_CPutString("中吉  ゚+゚*((Pq'v`★)゚+。 ");             
            }
            else if (*strPtr=='h'){
            PWM16_1_WritePeriod(R);
            UART_CPutString("吉   [●´Å`●] ");             
            }
            else if (*strPtr=='j'){
            PWM16_1_WritePeriod(C);
            UART_CPutString("凶  Σ(o゚ε゚´oノ)ノ  ");             
            }
            else if (*strPtr=='k'){
            PWM16_1_WritePeriod(DD);
            UART_CPutString("大吉 ");             
            UART_CPutString("               ハ_ハ ゜゚・*:.。..。.キタワァ*:。..。:*・゜゚ ハ_ハ                                      ");             
            UART_CPutString("    ('(゚∀゚∩∧,,∧ ∧..∧ ∧..∧ ∩゚∀゚)')                      ");        
            UART_CPutString("            O_〈(´∀`)(´∀`)(´∀`)〉,_O              ");             
            UART_CPutString("          `ヽ.) ゚○-J゚ ゚○-J゚ ゚○-J゚(_/´                                                                  ");        
           
           }
           else if (*strPtr=='l')
            PWM16_1_WritePeriod(SILENT);
            
            //while(strPtr = UART_szGetParam()) 
            //{                                // loop on each parameter    
            //  UART_CPutString("   <");    
            //  UART_PutString(strPtr);          // Print each parameter    
            //  UART_CPutString(">\r\n");
            //  PWM16_1_WritePeriod(D);
            // }    
         }   
      UART_CmdReset();                          // Reset command buffer    
     }   
  }  
}

使い方

キーボードの文字列の真ん中の列のA~Kまでのキーを押して、Enterを押すだけ。

考察

本当は、1つのキーでランダムにやりたかったが、時間の都合上できなかった。
実用するとしたら、lab3_adcでやった電圧の変化を利用して、ランダムにできると思う。
あとは、メロディーもつけたかった。
これはuart_2を利用して作った。

  • 最終更新:2012-05-15 16:53:53

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

認証パスワード