Kroppshållning Sensor (3 / 4 steg)
Steg 3: Arduino kod del 1
#include "pitches.h"momentarty switch pin
CONST int buttonPin = 12;
int buttonState = 0;
Mappade sensor värde
int backPos;
Värdet för "normalläge"
int basePos = 40;
vibration motor digital pin
int vibePin = 9;
summern digital pin
int buzzerPin = 13.
längden på fördröjning mellan larm
lång intervalAlarm = 400.
kommer att lagra förra gången summern uppdaterades
lång previousMillisAlarm = 0;
int värde, värde2;
lång tid = 0;
int gångtid = 100;
int tränga undan = 500.
void setup() {
Serial.BEGIN(9600);
Initiera lämpliga stiften till utgångar eller ingångar
pinMode (vibePin, produktionen);
pinMode (buzzerPin, produktionen);
pinMode (buttonPin, ingång);
}
void loop() {
Börja läsa y axelvärden från accelerometern.
int yAxis = analogRead(A0);
mappa värdena till ett cellområde som är lättare att arbeta med (1-100).
backPos = karta (yAxis, 240,400,0,100);
börja läsa knappen staten
buttonState = digitalRead(buttonPin);
Om knappen trycks ange värdet för spelcentrum till nuvarande tillbaka position
Detta ställer ett "normalt" tillstånd som koden sedan mäter skillnad från.
om (buttonState == hög) {
basePos = backPos; }
om backPos är i en dålig position
om (backPos > basePos + 5) {
slå på vibration motor
vibeMotor();
slå på piezo summern
Alarm();
}
annars stänga av motorn och summern
annat {
digitalWrite (vibePin, låg);
digitalWrite (buzzerPin, låg);
}
}
fuction som styr piezo summern
void alarm() {
använda blink med in fördröjning logik och tonar bibliotek för att puls larmet.
osignerade långa currentMillisAlarm = millis();
om (currentMillisAlarm - previousMillisAlarm > intervalAlarm) {
återställa "timer" previousMillisAlarm = currentMillisAlarm;
Aktivera summern tonen (buzzerPin, 65.200);
}
}
fuction som styr vibration motor
void vibeMotor() {
blekna utan dröjsmål logik pulser vibration motor.
tid = millis(); värde = 128+127*cos(2*PI/periode*time);
value2 = 128+127*cos(2*PI/periode*(displace-time));
analogWrite (vibePin, värde);
}