Anleitung zu AA2 – Sensorwerte speichern
Schritt-für-Schritt-Anleitung – Sensorwerte speichern und anzeigen
Schritt 1: State-Variable bewegungen anlegen
Damit wir alle Messwerte speichern können, brauchen wir einen neuen State in der App.js.
Fügen Sie direkt unter dieser Zeile ein:const [maxWert, setMaxWert] = useState(0);
Diese neue Zeile:const [bewegungen, setBewegungen] = useState([]);
Ergebnis: Jetzt haben wir einen Speicherplatz für alle Bewegungswerte.
Schritt 2: Bewegungswerte während der Messung speichern
Jetzt wollen wir jeden gemessenen Wert beim Messen in das bewegungen-Array schreiben.
Dazu passen wir die Funktion startMessung an.
Ersetzen Sie den bisherigen Aufruf innerhalb von Accelerometer.addListener(...) wie folgt:
sensorRef.current = Accelerometer.addListener(({ x, y, z }) => {
const bewegung = Math.sqrt(x * x + y * y + z * z);
// Neuen Wert zum Array hinzufügen (funktionale Variante!)
setBewegungen((prev) => [...prev, bewegung]);
if (bewegung > maxWert) {
setMaxWert(bewegung);
}
});Warum prev? So stellen Sie sicher, dass immer der aktuelle Zustand verwendet wird – unabhängig davon, wie oft der Sensor auslöst.
Zusätzlich:
Setzen Sie das Array vor dem Start der Messung zurück, um eine neue Liste pro Sprung zu erhalten:
setBewegungen([]);
Schritt 2 fertig! Jetzt wird bei jedem Sprung eine neue Liste mit Bewegungswerten aufgebaut.
Schritt 3: Bewegungswerte anzeigen
Jetzt sollen die gespeicherten Werte nach der Messung im ErgebnisScreen sichtbar werden.
1. Props an ErgebnisScreen übergeben (in App.js)
<ErgebnisScreen
maxWert={maxWert}
onRestart={startChallenge}
bewegungen={bewegungen}
/>
2. ErgebnisScreen erweitern
In ErgebnisScreen.js ergänzen Sie den Parameter im Funktionskopf:
export default function ErgebnisScreen({ maxWert, onRestart, bewegungen }) {
Und fügen Sie diesen Code unter dem Button ein:
<View style={{ marginTop: 20 }}>
<Text style={styles.resultText}>📊 Bewegungsliste:</Text>
{bewegungen.slice(-100).map((wert, index) => (
<Text key={index}>
{index + 1}: {wert.toFixed(2)} g
</Text>
))}
</View>
.slice(-100) sorgt dafür, dass nur die letzten 100 Werte angezeigt werden – für bessere Übersicht.
Schritt 3 erledigt! Nach der Messung sehen Sie jetzt die Liste aller Bewegungswerte unter dem Ergebnis. 🎉
Optional: Ergänzen Sie eine Statistik oder einen Kopier-Button – wenn Sie möchten, sagen Sie einfach Bescheid.