Zum Hauptinhalt springen

✅ Erster Test & Kalibrierung

Bevor du das Shuttle abschließend zusammenbaust, solltest du alles testen und kalibrieren. Damit du die Elevons korrekt auf die Servos steckst, müssen diese zunächst in die Nullstellung fahren.

⚙️ Vorbereitung

  • Verbinde das Shuttle über USB-C mit deinem Computer.
  • Öffne die Arduino-IDE,
  • Installiere die Bibliotheken "Servo" (Adafruit) und "MPU6050_tockn" (tockn)
  • Lade den Test-Sketch hoch.
  • Öffne den Serial-Monitor in der Arduino-IDE

🧪 Test-Sketch

Zeige Test-Sketch
#include <Arduino.h>
#include <Servo.h>
#include <Wire.h>
#include <MPU6050_tockn.h>

const int servoLeftPin = 9;
const int servoRightPin = 10;
const int beaconLedPin = 3;
const int portLedPin = 5;
const int starboardLedPin = 6;

Servo servoLeft;
Servo servoRight;
MPU6050 mpu6050(Wire);

int brightness = 0;
int fadeAmount = 5;
unsigned long previousMillis = 0;
const long fadeInterval = 30;
const long navInterval = 500;
unsigned long navMillis = 0;
bool navToggle = false;

// Servotest-Steuerung
int servoTestState = 0;
unsigned long servoTestMillis = 0;
const long servoTestInterval = 1000;


void setup() {
servoLeft.attach(servoLeftPin);
servoRight.attach(servoRightPin);
servoLeft.write(90);
servoRight.write(90);

pinMode(beaconLedPin, OUTPUT);
pinMode(portLedPin, OUTPUT);
pinMode(starboardLedPin, OUTPUT);

Serial.begin(9600);
Wire.begin();
mpu6050.begin();
mpu6050.calcGyroOffsets(true);
}

void loop() {
unsigned long currentMillis = millis();

// Beacon LED sanft pulsieren
if (currentMillis - previousMillis >= fadeInterval) {
previousMillis = currentMillis;
analogWrite(beaconLedPin, brightness);
brightness += fadeAmount;
if (brightness <= 0 || brightness >= 100) fadeAmount = -fadeAmount;
}

// Navigationslichter blinken
if (currentMillis - navMillis >= navInterval) {
navMillis = currentMillis;
navToggle = !navToggle;
digitalWrite(portLedPin, navToggle);
digitalWrite(starboardLedPin, !navToggle);
}

// Servo-Testsequenz
if (currentMillis - servoTestMillis >= servoTestInterval && servoTestState <= 3) {
servoTestMillis = currentMillis;
int angle = 90; // Default
if (servoTestState == 1) angle = 45;
else if (servoTestState == 2) angle = 135;
else if (servoTestState == 3) angle = 90;
servoLeft.write(angle);
servoRight.write(angle);
servoTestState++;
}


// MPU-Daten ausgeben
mpu6050.update();
Serial.print("X: "); Serial.print(mpu6050.getAngleX());
Serial.print(" Y: "); Serial.print(mpu6050.getAngleY());
Serial.print(" Z: "); Serial.println(mpu6050.getAngleZ());

delay(10); // Sanftes Timing für Serial Monitor
}

✅ Was sollte passieren?

  • Die Navigationslichter blinken korrekt.
  • Die Beacon-LED pulsiert sanft.
  • Die Servos führen eine Testbewegung aus (90 → 45 → 135 → 90).
  • Der MPU6050 liefert Sensordaten per Serial Monitor.

⚠️ Fehlersuche

  • Servos reagieren nicht? → Pins kontrollieren, Stromversorgung prüfen
  • MPU liefert keine Daten? → I²C-Verbindung und Adressierung prüfen
  • LEDs blinken nicht? → Prüfe Pinbelegung und Polung
  • Fehler nicht gelöst? → Kontrolliere deine Löt- und Crimpverbindungen