Sling Shot Controller för Angry Birds
/*
Denna kod är offentlig
Författare: alpeshVitha
Datum: 18 maj 2013
*/
int sPull = 0; Startposition för x-axeln
int Angeliqa = 0; Slutposition för x-axeln
int ysPull = 0; Startposition för y-axeln
int yePull = 0; Slutposition för y-axeln
int utbud = 15.
int netbootAnswerRequests = 1; svar fördröjning av musen, i ms
Deklarationen för utjämning y axeln läsningen. Jag hittade dem mycket bullriga, förmodligen eftersom potentiometern är logaritmisk i naturen.
CONST int numReadings = 10;
int avläsningar [numReadings]; avläsningar från analog ingång
heltal index = 0; index för den aktuella behandlingen
int totala = 0; den löpande summan
int medelvärde = 0; Genomsnittligt
void setup() {
initiera muskontroll:
Mouse.BEGIN();
Serial.BEGIN(9600);
Smoothing initiering
för (int thisReading = 0; thisReading < numReadings; thisReading ++)
avläsningar [thisReading] = 0;
}
void loop() {
Läs starttillståndet för sling på x- och y-axeln
sPull = analogRead(A0); x-axeln
ysPull = analogRead(A1); y-axeln
Angeliqa = sPull; värdet av x lagras i Angeliqa variabel
Delay(100); vänta på 100ms för fingret glida på potentiometer
sPull = analogRead(A0); läsa x-axeln igen
int pull = (Monika - sPull); Delta x
göra det samme för y-axeln att få Delta y
yePull = ysPull;
ysPull = analogRead(A1);
int ypull = (yePull - ysPull); Delta y
om (sPull == 0) {
om (Mouse.isPressed(MOUSE_LEFT)) {
Mouse.release(MOUSE_LEFT);
}
}
om (pull > -200) {/ / justera det här värdet baserat på din uppsättning upp
IF(pull<200) {/ / justera det här värdet baserat på din uppsättning upp
beräkna avstånd rörelse
int xDistance = (pull/50) * variera;
om (xDistance! = 0) {
IF (!. Mouse.isPressed(MOUSE_LEFT)) {
Mouse.Press(MOUSE_LEFT);
}
Mouse.Move (-xDistance, 0, 0);
}
}
}
Utjämning av Y
////////////////////////////////////////////////////////////////////////////////////////////////////
totalt = totalt - avläsningar [index];
Läs från sensorn:
avläsningar [index] = ypull;
Lägg till läsningen av totala:
totalt = totalt + avläsningar [index];
avancera till nästa position i matrisen:
index = index + 1.
om vi är i slutet av kedjan...
om (index > = numReadings)
.. .wrap runt till början:
index = 0;
beräkna medelvärdet:
genomsnittliga = totalt / numReadings;
/////////////////////////////////////////////////////////////////////////////////////////////////
Delay(1);
int yDistance = (genomsnittlig) * 2;
om (yDistance! = 0) {
Mouse.Move (0, - yDistance, 0);
}
en försening så att musen inte gå för fort:
Delay(responseDelay);
}