Beschleunigte Bewegung

Hier wird eine beschleunigte Bewegung des Alvik nach einem Tastendruck auf den Alvik ausgelöst und die Daten werden an die phyphox App gesendet


#  Beschleunigte Bewegung messen
from arduino_alvik import ArduinoAlvik
from phyphoxBLE import PhyphoxBLE
import time

# Roboter initialisieren
alvik = ArduinoAlvik()
alvik.begin()

# PhyphoxBLE initialisieren und starten (vor dem Tastendruck)
p = PhyphoxBLE()
p.start()
print("Phyphox-Verbindung gestartet. Warte auf Tastendruck...")

# Warte auf Tastendruck und führe dann die Messung durch
while True:
    taste = alvik.get_touch_any()
    if taste == True:
        print("Taste erkannt! Starte Beschleunigungsmessung...")

        # Parameter für die Beschleunigung
        start_geschw = 0  # cm/s
        max_geschw = 30   # cm/s
        beschleunigungs_zeit = 30  # Sekunden

        print(f"Beschleunige von {start_geschw} auf {max_geschw} cm/s in {beschleunigungs_zeit} Sekunden")

        # Beschleunigung berechnen (a = Δv/Δt)
        beschleunigung = (max_geschw - start_geschw) / beschleunigungs_zeit
        print(f"Berechnete Beschleunigung: {beschleunigung:.2f} cm/s²")

        # Bewegung starten und Messung beginnen
        startzeit = time.time()
        alvik.move(start_geschw, 0)

        # Während der Beschleunigung
        while True:
            aktuelle_zeit = time.time() - startzeit

            # Neue Geschwindigkeit basierend auf Beschleunigung berechnen (v = v₀ + a·t)
            neue_geschw = start_geschw + beschleunigung * aktuelle_zeit

            # Begrenze auf Maximalgeschwindigkeit
            if neue_geschw > max_geschw:
                neue_geschw = max_geschw

            # Setze neue Geschwindigkeit
            alvik.move(neue_geschw, 0)

            # Aktuelle Geschwindigkeit messen
            _, gemessene_geschw = alvik.get_drive_speed()

            # Zurückgelegte Strecke berechnen (s = v₀·t + ½·a·t²)
            position = start_geschw * aktuelle_zeit + 0.5 * beschleunigung * aktuelle_zeit**2

            # Daten an Phyphox senden (Zeit, Position, Geschwindigkeit, Beschleunigung)
            p.write(aktuelle_zeit, position, gemessene_geschw, beschleunigung)

            print(f"Zeit: {aktuelle_zeit:.2f}s, v: {gemessene_geschw:.2f}cm/s, s: {position:.2f}cm")

            # Beende die Beschleunigung nach der festgelegten Zeit
            if aktuelle_zeit >= beschleunigungs_zeit:
                # Fahre noch kurz mit konstanter Geschwindigkeit weiter
                alvik.move(max_geschw, 0)
                time.sleep(2)
                break

            time.sleep(0.1)

        alvik.stop()
        print("Beschleunigungsmessung abgeschlossen")


    time.sleep(0.1)  # Kleine Pause, um die CPU nicht zu belasten
🎯

Challenge: Beschleunigte Bewegung

Teste dein Wissen über Physik und Programmierung!

📝 Quiz

Welche physikalische Formel wird verwendet, um die zurückgelegte Strecke bei gleichmäßiger Beschleunigung zu berechnen?

💻 Programmier-Challenge

Aufgabe: Ändere das Programm so, dass der Alvik schneller beschleunigt (15 statt 30 Sekunden) und eine höhere Endgeschwindigkeit erreicht (50 statt 30 cm/s).

💡 Tipp: Ändere die Variablen max_geschw und beschleunigungs_zeit am Anfang des Programms.
# Parameter für die Beschleunigung (geändert)
start_geschw = 0      # cm/s
max_geschw = 50       # cm/s (erhöht von 30)
beschleunigungs_zeit = 15  # Sekunden (reduziert von 30)

print(f"Beschleunige von {start_geschw} auf {max_geschw} cm/s in {beschleunigungs_zeit} Sekunden")

# Beschleunigung berechnen (a = Δv/Δt)
beschleunigung = (max_geschw - start_geschw) / beschleunigungs_zeit
print(f"Berechnete Beschleunigung: {beschleunigung:.2f} cm/s²")  # Ergebnis: 3.33 cm/s²

✅ Selbsttest

Hake ab, was du gelernt hast:

Fortschritt: 0/3