チーム1244
課題名
圧力センサーによる音とLCD表示の変化
研究者名
2-14-47 藤原圭吾
2-14-48 松本一真
概要
第2回の演習で作ったラボlab3_adcに圧力センサーを加えた。圧力センサーに加える力で、LCD表示、音の周波数、LEDの光り方が変化する。
圧力センサーに力を加えていない状態
少し力を加えた状態
さらに力を加えた状態
※力を加えると音が出る。LEDは光り方が微妙に違う。
使用器具
・PSoC評価基板 CY3210 EVAL1
・Miniprog書き込み器
・27443デバイス
・圧力センサー
・スピーカー
・ジャンパ線
ソースコード
#include <m8c.h>
#include "PSoCAPI.h"
int SILENT=0,D=229,L=204,M=182,F=172,S=153,R=136,C=121,DD=115;
void main(void)
{
unsigned int adc_data; PGA_Start(PGA_HIGHPOWER); LCD_Start(); LCD_InitBG(LCD_SOLID_BG); PWM16_1_Start(); PWM8_1_Start(); M8C_EnableGInt; ADCINC_Start(ADCINC_HIGHPOWER); ADCINC_GetSamples(0); while(1){ while(ADCINC_fIsDataAvailable() == 0); adc_data = ADCINC_wClearFlagGetData(); LCD_Position(0,0); LCD_PrHexInt(adc_data); if(adc_data > 2000){ LCD_Position(1, 0); LCD_PrCString("(-.-) "); PWM16_1_WritePeriod(SILENT); PWM8_1_Start(); PWM8_1_WritePeriod(1); } else if(adc_data > 1500 && adc_data <= 1700){ LCD_Position(1, 0); LCD_PrCString("(^_^) "); PWM16_1_WritePeriod(D); PWM8_1_Start(); PWM8_1_WritePeriod(10); } else if(adc_data > 1300 && adc_data <= 1500){ LCD_Position(1, 0); LCD_PrCString("(>_<) "); PWM16_1_WritePeriod(L); PWM8_1_Start(); PWM8_1_WritePeriod(20); } else if(adc_data > 1100 && adc_data <= 1300){ LCD_Position(1, 0); LCD_PrCString("`w`)/ "); PWM16_1_WritePeriod(M); PWM8_1_Stop(); } else if(adc_data > 900 && adc_data <= 1100){ LCD_Position(1, 0); LCD_PrCString("(!o!) "); PWM16_1_WritePeriod(F); PWM8_1_Start(); PWM8_1_WritePeriod(1); } else if(adc_data > 700 && adc_data <= 900){ LCD_Position(1, 0); LCD_PrCString("\(^^)/"); PWM16_1_WritePeriod(S); PWM8_1_Start(); PWM8_1_WritePeriod(10); } else if(adc_data > 500 && adc_data <= 700){ LCD_Position(1, 0); LCD_PrCString("(T_T) "); PWM16_1_WritePeriod(R); PWM8_1_Start(); PWM8_1_WritePeriod(20); } else if(adc_data > 400 && adc_data <= 500){ LCD_Position(1, 0); LCD_PrCString("(-_-#) "); PWM16_1_WritePeriod(C); PWM8_1_Stop(); } else if(adc_data > 100 && adc_data <= 400){ LCD_Position(1, 0); LCD_PrCString("(^w^) "); PWM16_1_WritePeriod(DD); PWM8_1_Start(); PWM8_1_WritePeriod(1); }
}
}
考察
圧力センサーに力を加え、LCD表示、音の周波数、LEDの光り方を変化させるものを作った。指で力を加えるため、同じLCD表示や音を維持するのは難しい。if文で値を条件分けしていて、その境目だと、変化が重なってしまうことがある。また、出したい音があっても、力加減が必要なため、すぐには出せない。力を徐々に加え、出したい音が出たら、力を維持する方法しかない。LEDの光り方を変化させるようにしたが、力を加えていくとうまくいったが、弱めると思った通りに光らなかった。だから、LEDを消すif文を除く各if文に、LEDを光らせるためのStart(); を追加した。VRを一定にしておかないといけないのが難点。
- 最終更新:2012-10-23 16:08:00