加速度センサの振りを検出
振ったら「A」をシリアルで送る。
てきとう。
// 加速度センサのX,Y,ZはそれぞれA0,A1,A2に接続する int BAUD_RATE = 9600; int NORM_MAX = 290; int CALC_NORM_INTERVAL = 99; long IGNORE_INTERVAL = 1200; // 250 int senseCount = 0; long ignoreTimer = 0; long rawVals[3] = {0, 0, 0}; void setup() { Serial.begin(BAUD_RATE); } void loop() { for (int i=0;i<3;i++) { int val = analogRead(i); rawVals[i] += val; } if (++senseCount >= CALC_NORM_INTERVAL) { detectTouch(); restoreSensingData(); } } void detectTouch() { double norm, tmp; for (int i=0;i<3;i++) { rawVals[i] = rawVals[i] / CALC_NORM_INTERVAL - 512; tmp += rawVals[i] * rawVals[i]; } norm = sqrt(tmp); //Serial.print(norm); if (norm > NORM_MAX && millis() - ignoreTimer > IGNORE_INTERVAL) { //Serial.print("\ttouched"); Serial.println("A"); ignoreTimer = millis(); } //Serial.println(""); } void restoreSensingData() { for (int i=0;i<3;i++) { rawVals[i] = 0; } senseCount = 0; }