チーム1312
課題名
診断メーカー
研究者名
2-15-49 林 知範
内容説明
加速度センサーを傾けて、その時の値によってTeraTermへの出力を変える。
使用材料
PSoC
加速度センサー
通信ケーブル
ジャンパ線 7本
ソースコード
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#define SW 0b00010000
void main(void)
{
// M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts // Insert your main routine code here. int inum1,inum2,inum3,sum=0x0000; char*a; // Parameter pointer <=Char型変数の宣言 LCD_Start(); LCD_InitBG(LCD_SOLID_BG); PGA_1_Start(PGA_1_MEDPOWER); PGA_2_Start(PGA_2_MEDPOWER); PGA_3_Start(PGA_3_MEDPOWER);
UART_CmdReset(); // Initialize receiver/cmd buffer <=コマンドバッファのリセット
UART_IntCntl(UART_ENABLE_RX_INT); // Enable RX interrupts <=RX割込のイネーブル
UART_Start(UART_PARITY_NONE); // Enable UART <=UARTのモード設定
M8C_EnableGInt ; // Turn on interrupts
Counter8_WritePeriod(155); Counter8_WriteCompareValue(77); Counter8_Start(); M8C_EnableGInt; TRIADC_1_Start(TRIADC_1_HIGHPOWER); TRIADC_1_SetResolution(12); TRIADC_1_GetSamples(0); PRT1DR &= (~SW); UART_CPutString("\r\これはあなたの深層心理にある理想女性像を\r\n"); UART_CPutString("なんと加速度センサーを傾けるだけでわかる診断メーカーです。\r\n\r\n\r\n"); while(1){ while(TRIADC_1_fIsDataAvailable()==0); inum1=TRIADC_1_iGetData1(); inum2=TRIADC_1_iGetData2(); inum3=TRIADC_1_iGetData3(); LCD_Position(1,0); LCD_PrHexInt(inum1); LCD_Position(1,6); LCD_PrHexInt(inum2); LCD_Position(1,11); LCD_PrHexInt(inum3); UART_CPutString("あなたの好きな異性の体型は・・・r\n\r\n\r\n\r\n"); if(inum1>0x05A0){ UART_CPutString("モデル並みのスレンダーな体型!!r\n\r\n\r\n\r\n"); sum=sum+0x0003; break; } else if(inum1<0x05A0&&inum1>0x00A0){ UART_CPutString("ホントちょっと太ってる的なぽっちゃり系!r\n\r\n\r\n\r\n"); sum=sum+0x0002; break; } else if(inum1<0x0000){ UART_CPutString("ん~~デブやな!森三中みたいな方!r\n\r\n\r\n\r\n"); sum=sum+0x0001; break; } } while(1){ UART_CPutString("あなたの好きな異性の顔のタイプは・・・r\n\r\n\r\n\r\n"); if(inum2>0x05A0){ UART_CPutString("すげーエロい系ですね!!壇蜜みたいな!r\n\r\n\r\n\r\n"); sum=sum+0x0002; break; } else if(inum2<0x05A0&&inum2>0x00A0){ UART_CPutString("童顔っぽいかわいい顔かな!r\n\r\n\r\n\r\n"); sum=sum+0x0003; break; } else if(inum2<0x0000){ UART_CPutString("言葉悪いけど俗に言う〇スやろ!ハリ〇〇ンの骸骨みたいな方!r\n\r\n\r\n\r\n"); sum=sum+0x0001; break; } } while(1){ UART_CPutString("そしてあなたの好きな夢のサイズは・・・\r\n\r\n\r\n\r\n"); if(inum2>0x05A0){ UART_CPutString("D!!たまらん!!\r\n\r\n\r\n\r\n"); sum=sum+0x0003; break; } else if(inum2<0x05A0&&inum2>0x00A0){ UART_CPutString("F!グラビアアイドルか!\r\n\r\n\r\n\r\n"); sum=sum+0x0002; break; } else if(inum2<0x0000){ UART_CPutString("A!なかなかコアな方ですね!好みだもんね!\r\n\r\n\r\n\r\n"); sum=sum+0x0001; break; } }
UART_CPutString("よってあなたは・・・\r\n\r\n"); while(1){
if(sum>0x0008){ UART_CPutString("手届かない人おかっけちゃうタイプだね!!(笑)\r\n\r\n"); break; } else if(0x0008>=sum&&sum>=0x0007){ UART_CPutString("いいとこいってる!ワンチャンいけるっしょ!(笑)\r\n\r\n"); break; } else if(0x0006>=sum&&sum>=0x0005){ UART_CPutString("妥協すんなって!がんばれ!(笑)\r\n\r\n"); break; } else if(0x0004>=sum&&sum>=0x0003){ UART_CPutString("んーあれだなB専だな!コアだねー!\r\n\r\n"); break; } }
}
考察
今回作った診断メーカーの反省は出力結果がresetボタンを押した瞬間に出てしまう点と傾きの範囲がせまかった点である。理想としては、もう一方のボタンを押すごとに各項目が出力されるようにしたかったが上手くいかなかった。その理由としてソース文に問題があったと考えられる。また、加速度センサの傾きを検知する範囲が狭く傾けすぎると同じ結果しかでなくなってしまうのも改善したかった。今回時間がなくその改善にまでてをつけることができなかったが、もし機会があるのならセンサが感知する範囲を広げ、より多くの診断結果を出せるようにしたい。
実用性もなく、単純な作品になってしまった原因として理解がまだまだ足りなかったと考えられる。与えられた各ラボをただやるだけになってしまい、応用するにいたるまでの理解ができていなかった。このことからこれから実習で学ぶことに対して理解ができるまでとことんやっていきたいと思う。
- 最終更新:2013-05-19 00:07:30