Accelerometer sköld för fysik klass och därefter (3 / 4 steg)
Steg 3: programmering
Du måste också lägga till accelerometer biblioteket. Om du inte har lagt ett bibliotek innan du skapa en mapp som heter "bibliotek" i din Arduino skiss mapp och sedan släppa accelerometer mappen i mappen bifogade bibliotek i din nya mapp "bibliotek".
total_points - kontrollerar antalet inspelade datapunkter
CONST osignerade långa loop_time - kontrollerar hur ofta data registreras ex. 5 motsvarar 5ms.
För att programmet fungerar korrekt AcceleroMMA7361 måste bibliotek läggas till biblioteksmappen Arduino och programmet startas om.
Det maximala antalet datapunkter som kan samlas in på Arduino SRAM är 700. Ytterligare datapunkter kan samlas in med en SD-kort eller ytterligare lagringsutrymme.
Skalningsfaktor för värdena Funna "x" är: ((x/100)-1) / acceleration beroende på tyngdkraften). Acceleration till gravitation är ungefär lika med 9,8. Skalade värdena är i enheter av m/s ^ 2.
Ändra hur ofta insamlade poäng är öppna filen och ändra den konstant heltal loop_time din önskade tiden. Detta nummer anges i millisekunder.
Lysdioderna motsvarar var och en av knapparna och följande åtgärder. Knappen längst från accelerometern vänder den gröna lampan på och poster värden. Lysdioden slocknar när tryckte igen och värden kommer inte samlas in. Den röda lysdioden motsvarar knappen närmast accelerometer och lyser upp när värden överförs till seriell bildskärmen.
Den röda lysdioden blinkar två gånger i början för att ange att starta upp slinga och kalibreringen är klar och kan nu nu samlas.
Mest grundläggande koden att kontrollera att allt fungerar är:
När vilade platt på något bör Z-axeln läsa ungefär 1 och X- och Y-axeln 0 varje.
AcceleroMMA7361 accelero;
int x;
int y;
int z;
void setup()
{
Serial.BEGIN(9600);
Accelero.BEGIN (12-13, 11, 10, A0, A1, A2);
accelero.setARefVoltage(5); anger AREF spänningen till 3.3V
accelero.setSensitivity(LOW); ställer in känsligheten till +/-6G
Accelero.Calibrate();
}
void loop()
{
x = accelero.getXAccel();
y = accelero.getYAccel();
z = accelero.getZAccel();
Serial.Print ("\nx:");
Serial.Print(x);
Serial.Print ("\ty:");
Serial.Print(y);
Serial.Print ("\tz:");
Serial.Print(z);
Serial.Print("\tG*10^-2");
Delay(500); göra den läsbar
}