Sockerbit MIDI Controller (28 / 38 steg)
Steg 28: Accerometer/Gyro
Jag bifogade ett 2 axis gyroskop och 3 axlig accelerometer på detta projekt så att jag kunde lägga lite intressant kontroll till enheten. 5 grader av frihet styrelse från Sparkfun matar ut data från dess gyroskop och accelerometer som analoga spänningar. Jag skickade dessa till analoga pin 0-4. Du kan märka att gyrot har fyra utgångar-jag valde att använda X / Y4.5 ut i stället för X / YRate ut eftersom 4.5 har högre upplösning. Jag skrev mer om detta forum och förklarade några av koden jag brukade få det upp och kör här.
Löd rubriken stiften på gyro/accelerometer styrelsen. Löda på perfboard, se till att lämna utrymme för Arduino att passa på toppen. Göra följande pin anslutningar:
RAW - Arduino 5V
GND - Arduino marken
X4.5-A2
Y4.5-A0
XAcc - A4
YAcc - A3
ZAcc - A1 (jag slutade koppla detta senare att frigöra en analog ingång för en andra potentiometer)
Ladda upp följande kod och kontrollera seriell bildskärmen för att se till att accelerometer/gyro fungerar. När styrelsen ljuger fortfarande och parallellt med marken värdena för xGyro, yGyro, xAcc och yAcc bör alla sväva runt 0. zAcc bör produktionen ett värde runt-66 (se fig 8). Flytta styrelsen runt och se hur värdena ändras. I figur visas 9 hur rotation om x-axeln ändrar xGyro och y och zAcc, men inte yGyro eller xAcc.
Analoga Accerometer w följetong
av Amanda Ghassaei
Augusti 2012
/*
* Detta program är fri programvara; Du kan vidaredistribuera det och/eller ändra
* det enligt villkoren i GNU General Public License som offentliggjorts av
* den Free Software Foundation; antingen version 3 av licensen, eller
* (på ditt alternativ) någon senare version.
*
*/
setup acceleration variabler
int xAcc;
int yAcc;
int zAcc;
setup virvla variabler
int xGyro;
int yGyro;
int noll = 282; //this var noll punkt värdet för min accelerometer, din styrelse kan vara något annorlunda.
void setup() {
Serial.BEGIN (9600); //set upp följetong
}
void loop() {
Läs värden
xGyro = analogRead(A2);
yGyro = analogRead(A0);
xAcc = analogRead(A4);
yAcc = analogRead(A3);
zAcc = analogRead(A1);
skriva ut värden
Serial.Print ("xGyro");
Serial.println(317-xGyro);
Serial.Print ("yGyro");
Serial.println(183-yGyro);
Serial.Print ("xAcc");
Serial.println(Zero-xAcc);
Serial.Print ("yAcc");
Serial.println(Zero-yAcc);
Serial.Print ("zAcc");
Serial.println(Zero-zAcc);
Serial.println("");
fördröjning (500), //wait
}
När du lägger till potentiometrar, kommer du att kunna använda accelerometer/gyro för gestikulerande kontroll, vilket visas i följande video: