チーム121A

PSoCとクイズ


研究者名

3年15組46番 松本拓飛

概要

PSoCとの対話をクイズの形式を用い表現した。
Tera Termを起動するとクイズが提示される。
1~6までの選択肢から答えると、true、false、prefectのどれかが表示され
trueならば正解ということでLED1が点灯する。
falseならば不正解である。
perfectならば大正解で、LED2が激しく点灯し、次の問題が提示される。
2問目を正解すると、終了である。

デバイス一覧

・PSoC
・ジャンパ線
・シリアルケーブル

ソース

#include <m8c.h>  
#include <stdlib.h>

#include "PSoCAPI.h"    
void main(void)  
{  
    
   char *strPtr;                          
     
   UART_CmdReset();                       
                                          
   UART_IntCntl(UART_ENABLE_RX_INT);       
   Counter8_WritePeriod(155);              
   Counter8_WriteCompareValue(77);  
   Counter8_Start();                           
     
   UART_Start(UART_PARITY_NONE);          
     
   M8C_EnableGInt ;                       
     
   UART_CPutString("\r\nWelcome to PSoC UART test program. V1.1 \r\n");
   UART_CPutString("\r\n");
   UART_CPutString("好きな果物は?\r\n");    
   UART_CPutString("1:リンゴ\r\n");    
   UART_CPutString("2:ぶどう\r\n");    
   UART_CPutString("3:メロン\r\n");
   UART_CPutString("4:みかん\r\n");
   UART_CPutString("5:梨\r\n");
   UART_CPutString("6:バナナ\r\n");
   UART_CPutString("\r\n");
             
   while(1){
   
     if(UART_bCmdCheck()) {                        
         if(strPtr = UART_szGetParam()) {       
            
            UART_PutString(strPtr);               
            UART_CPutString("\r\n");
            LCD_1_Start();
            LCD_2_Start();
            if(atoi(strPtr) == 3){
                    PWM8_1_Start();
                   PWM8_2_Stop();
                   UART_CPutString("\r\n");
                   LCD_1_PrCString("OK! ");
                   UART_CPutString("true\r\n");
                   UART_CPutString("\r\n");
                   
            }
            else if(atoi(strPtr) == 5){
                    PWM8_2_Start();
                   PWM8_1_Stop();
                   UART_CPutString("\r\n");
                   LCD_1_PrCString("congratulation! ");
                   UART_CPutString("perfect\r\n");
                   UART_CPutString("\r\n");
                   UART_CPutString("好きな野菜は?\r\n");    
                       UART_CPutString("1:人参\r\n");    
                       UART_CPutString("2:キャベツ\r\n");    
                       UART_CPutString("3:白菜\r\n");
                   UART_CPutString("4:レタス\r\n");
                   UART_CPutString("5:大根\r\n");
                   UART_CPutString("6:トマト\r\n");
                   UART_CPutString("\r\n");
                   break;
            }
            else{
                    UART_CPutString("\r\n");
                 UART_CPutString("false\r\n");
                UART_CPutString("\r\n");
                        PWM8_1_Stop();
                PWM8_2_Stop();
                LCD_1_PrCString("NG ");
            }
            }
            UART_CmdReset();
            }
            }         
   while(1){
    if(UART_bCmdCheck()) {                        
            if(strPtr = UART_szGetParam()) {        
            
            UART_PutString(strPtr);                
            UART_CPutString("\r\n");
            LCD_1_Start();
            LCD_2_Start();
            if(atoi(strPtr) == 6){
                           PWM8_2_Start();
                   PWM8_1_Stop();
                       UART_CPutString("\r\n");
                   LCD_1_PrCString("congratulation! ");
                   UART_CPutString("congratulation!\r\n");
                   UART_CPutString("-END-\r\n");
                        }
            else{
                       UART_CPutString("\r\n");
                    UART_CPutString("false\r\n");
                   UART_CPutString("\r\n");
                           PWM8_1_Stop();
                   PWM8_2_Stop();
                   LCD_1_PrCString("NG ");
                   }
           }   
      UART_CmdReset();
      }
     }   
}


考察

PSoCとシリアル通信を用いて、データを送受信し対話を簡単に表現した。
ここから音を付加したり、ソフトウェアを複雑にしたりと様々な応用が考えられる。
今回は時間が足りず、ここまでしかできなかったがさらに派手にすることは容易である。

  • 最終更新:2012-05-15 15:48:47

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

認証パスワード