チーム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