✅ 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