チーム1944
課題名
なんちゃって Siri
研究者名
Ryota Yamada
Riku Yabe
概要
PSoC と会話(?)ができます。
こちらからの入力は Tera Term に表示し、
PSoC からの応答は LCD に表示します。
使用機器
・PSoC基盤
・ストレート通信ケーブル
・ジャンパ x2
ソースコード
#include <m8c.h>
#include "PSoCAPI.h"
void main(void)
{
char* str; LCD_1_Start(); 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\n Hello! \r\n"); while(1){ if(UART_bCmdCheck()){ while(str = UART_szGetParam()){ UART_CPutString(" YOU「"); UART_PutString(str); UART_CPutString("」\r\n"); if(*str == 'Hello'){ LCD_1_Position(0,0); LCD_1_PrCString("Hello "); LCD_1_Position(1,0); LCD_1_PrCString(" "); } else if(*str == 'Good_night'){ LCD_1_Position(0,0); LCD_1_PrCString("Good night "); LCD_1_Position(1,0); LCD_1_PrCString(" "); } else if(*str == 'I_love_you'){ LCD_1_Position(0,0); LCD_1_PrCString("Really? "); LCD_1_Position(1,0); LCD_1_PrCString("But I hate you "); } else if(*str == 'You_are_so_wise'){ LCD_1_Position(0,0); LCD_1_PrCString("That's natural! "); LCD_1_Position(1,0); LCD_1_PrCString("Are you foolish?"); } else if(*str == 'Who_are_you?'){ LCD_1_Position(0,0); LCD_1_PrCString("My name is Zori "); LCD_1_Position(1,0); LCD_1_PrCString("I'll never lose!"); } else if(*str == 'Let`s '){ LCD_1_Position(0,0); LCD_1_PrCString("That sounds good"); LCD_1_Position(1,0); LCD_1_PrCString(" "); } else{ LCD_1_Position(0,0); LCD_1_PrCString("Pardon? "); LCD_1_Position(1,0); LCD_1_PrCString("I can't feel you"); } UART_CmdReset(); } } }
}
考察
本来なら日本語を入出力する予定だったが、
PSoC には日本語に対応するコードが実装されていないので表現できなかった。
そのため、入出力にはアルファベットを用いることとした。
また、キーボードからの入力は最初の1文字目しか変数に読み込まれていないため、
実際に入力側は最初の1文字さえ入力すればよいという仕様になってしまっている。
これは、入力を読み込む関数を変えれば解決すると考えられるが、どの関数を利用すれば
目的の処理を得られるかを把握できていないため実装ができなかった。
上記の二つの課題をクリアできれば、より会話らしくなると考える。
Tera Term の仕様上、キーボードからの入力を行う時に空白は読み飛ばされてしまうので
アンダーバーなどで代用をする必要がある。
- 最終更新:2019-10-29 15:05:31