/* Anmerkungen * Arduino-Messbox startet mit der Messung beim einschalten, nicht wenn das Experiment gestartet wird * Beim Pausieren des Experimentes läuft die Messzeit weiter * Offsets im Auge behalten/ feinschliff geben */ #include #include //Variablen float timerOffset = 0; float timer1 = 0; float timer2 = 0; float accx, accy, accz, acc; float accx1, accy1, accz1, acc1; void setup() { PhyphoxBLE::start("Phyduino"); //Experiment PhyphoxBleExperiment accleration; accleration.setTitle("Beschleunigungsmessung"); accleration.setCategory("Arduino Experiment"); accleration.setDescription("Misst die Beschleunigungen in x-, y-, z-Richtung, sowie die Gesamtbeschleunigung und trägt diese in vier Graphen über der Zeit auf"); //View PhyphoxBleExperiment::View firstView; firstView.setLabel("FirstView"); //Graph PhyphoxBleExperiment::Graph firstGraph; /*Erzeugt einen Graphen, der die Beschleunigung über die Zeit plottet*/ firstGraph.setLabel("Beschleunigung"); firstGraph.setUnitX("s"); firstGraph.setUnitY("m/s²"); firstGraph.setLabelX("time"); firstGraph.setLabelY("accleration"); firstGraph.setChannel(4,5); /*Bestimmt, welche Datensätze geplottet werden *erster Parameter ist die x-Achse *zweiter Paratmeter ist die y-Achse */ //Zweiter Graph PhyphoxBleExperiment::Graph secondGraph; /*Erzeugt einen Graphen, der die Beschleunigung in x-Richtung über die Zeit plottet*/ secondGraph.setLabel("Beschleunigung x-Achse"); secondGraph.setUnitX("s"); secondGraph.setUnitY("m/s²"); secondGraph.setLabelX("time"); secondGraph.setLabelY("accleration"); secondGraph.setChannel(4,1); /*Bestimmt, welche Datensätze geplottet werden *erster Parameter ist die x-Achse *zweiter Paratmeter ist die y-Achse */ //Dritter Graph PhyphoxBleExperiment::Graph thirdGraph; /*Erzeugt einen Graphen, der die Beschleunigung in y-Richtung über die Zeit plottet*/ thirdGraph.setLabel("Beschleunigung y-Achse"); thirdGraph.setUnitX("s"); thirdGraph.setUnitY("m/s²"); thirdGraph.setLabelX("time"); thirdGraph.setLabelY("accleration"); thirdGraph.setChannel(4,2); /*Bestimmt, welche Datensätze geplottet werden *erster Parameter ist die x-Achse *zweiter Paratmeter ist die y-Achse */ //Vierter Graph PhyphoxBleExperiment::Graph fourthGraph; /*Erzeugt einen Graphen, der die Beschleunigung in z-Richtung über die Zeit plottet*/ fourthGraph.setLabel("Beschleunigung z-Achse"); fourthGraph.setUnitX("s"); fourthGraph.setUnitY("m/s²"); fourthGraph.setLabelX("time"); fourthGraph.setLabelY("accleration"); fourthGraph.setChannel(4,3); /*Bestimmt, welche Datensätze geplottet werden *erster Parameter ist die x-Achse *zweiter Paratmeter ist die y-Achse */ firstView.addElement(firstGraph); //fügt den 1. Graphen zum View hinzu firstView.addElement(secondGraph); //fügt den 2. Graphen zum View hinzu firstView.addElement(thirdGraph); //fügt den 3. Graphen zum View hinzu firstView.addElement(fourthGraph); //fügt den 4. Graphen zum View hinzu accleration.addView(firstView); //fügt "View" dem Experiment "accleration" hinzu PhyphoxBLE::addExperiment(accleration); //fügt das Experiment "accleration" dem Sever hinzu if (!IMU.begin()) { while (1); } pinMode(LED_BUILTIN, OUTPUT); } void loop() { if (timerOffset == 0) { timerOffset = millis(); } else if (timerOffset != 0) { timer1 = millis() - (float)timerOffset; // von ms in s umrechnen timer2 = timer1 / 1000; } if (IMU.accelerationAvailable()) { IMU.readAcceleration(accx, accy, accz); accx1= accx*9.81+0.415; accy1=accy*9.81+0.165; accz1=accz*9.81+0.350; acc1 = sqrt(pow(accx1, 2) + pow (accy1, 2) + pow(accz1, 2)); // Zeit und Beschleunigungen an Phyphox senden PhyphoxBLE::write(accx1, accy1, accz1, timer2, acc1); } }