Einen guten Abend wünsch ich Euch allen.

Zur Abwechslung mal was gutes: Willa hat mir mal n Tipp gegeben, wie ich die PID Werte einstellen sollte und prompt liegt der Vogel ruhig in der Luft..

Ich war meilenweit daneben:
P 80
I 130
D 45
D² 20

Das geht sehr gut jetzt.

Was anderes:

Nach der Anmerkung von einigen von euch habe ich den Code jetzt umgebaut und die automatische XY Offsetübernahme von Henk in ein Sub gepackt.
Ist bereits getestet und funktioniert:
Code:
'All this does is calling subs in a loop all the time
Do
  Acc
  Gyro
  Mixer
  Send_mots
  Led
  Voltage
  Failsave
  Speaker                                                   'Nils-Speaker
  Guiconnection
  Autooffset                                                'Nils-XY Offset
Loop
End

'===Autooffset==================================================================         'Nils-XY Offset
Sub Autooffset
'Durch Bewegen des rechten Sticks nach oben links wird die XY Kalibierung aktiviert
 If State = 0 And Sempf(rollchannel) > 20 And Sempf(nickchannel) > 20 Then
    Sticksup_bo = 1                                         'Setzbit setzen  (Dient dazu zu verhindern das der zustand springt wenn ich dies ticks lange halte
 End If
 'Erst wenn ich die sticks wieder loslasse und das bit gesetzt wurde, dann Kalibrierung übernehmen
 If State = 0 And Sempf(rollchannel) > -10 And Sempf(rollchannel) < 10 And Sempf(nickchannel) > -10 And Sempf(nickchannel) < 10 And Sticksup_bo = 1 Then
    Toggle Xy_calibration_bo                                'Kalibrierung aktivieren/desaktivieren
    Sticksup_bo = 0                                         ' Setzbit zurücksetzen
    Speakeron = 1
    If Xy_calibration_bo = 1 Then                           'Falluntershceidung ob ein oder ausgeschaltet
      Speakerduration = 100                                 'Nils-Speaker   : jeder 100te takt wird gepiept
      Silenceduration = 100                                 'Nils-Speaker: Dauer der Stille
      Speakerbeeps = 2                                      'Nils-Speaker: Anzahl der Pieps 4=unendlich
    Else                                                    'Nils-Speaker: einschaltflag setzen
      Speakerduration = 50                                  'Nils-Speaker   : jeder 50te takt wird gepiept
      Silenceduration = 50                                  'Nils-Speaker: Dauer der Stille
      Speakerbeeps = 3                                      'Nils-Speaker: Anzahl der Pieps 4=unendlich
    End If
 End If

 If State > 0 Then                                          ' Acro oder Hover Mode ausgewählt
   If Sempf(5) > 0 And Sempf(throttlechannel) > 50 Then Switch_validation = 1       'Wenn größer als 0 (Acro) und Gas> 50 dann Kalibrierung scharf schalten   heir muss ich irgendwas einbauen damit ich nicht aus versehen was amche
   If Sempf(5) < -20 And Switch_validation = 1 And Xy_calibration_bo = 1 Then       'Betriebswahl auf Standbay ohne Gas wegzunehmen > Werte werden jetzt übernommen
     Xy_calibration_bo = 0
     Switch_validation = 0
     Modification = 1                                       'Es wurden werte gemessen
     For I = 1 To 19                                        '20 mal messen und Summe bilden
     Xacc_offset = Xacc_offset + Getadc(4)
     Yacc_offset = Yacc_offset + Getadc(5)
     Next
     Xacc_offset = Xacc_offset / 20                         'Mittelwert bilden
     Yacc_offset = Yacc_offset / 20
     Speakeron = 1                                          'Nils-Speaker: einschaltflag setzen
     Speakerduration = 100                                  'Nils-Speaker   : jeder 100te takt wird gepiept
     Silenceduration = 100                                  'Nils-Speaker: Dauer der Stille
     Speakerbeeps = 2                                       'Nils-Speaker: Anzahl der Pieps 4=unendlich
   End If
 End If

 If Modification = 1 Then                                   'Gemessene Werte stehen zur verfügung
  If State = 0 Then                                         'Betriebswahl auf Standby
   If Motors_on = 0 Then                                    'Motoren aus

    Var(23) = Xacc_offset - 384
    Var(24) = Yacc_offset - 384
    For I = 1 To 33
        Writeeeprom Var(i) , I                              'Werte ins EEPROM schreiben
    Next
    Do                                                      'Force RESET. Helps to know when eeprom is modified.
    Loop
   End If
  End If
 End If
End Sub

'===GYRO=======================================================
Ich werde es heut Abend in meinen Blog laden und sage Euch dann bescheid.

Nochwas?
Ja, ich habe mir neue Motoren bestellt FC2822, die sind auf dauer billiger . Und wenn ich dann alles richtig kann dann kommen die guten Roxxys.
Darüberhinaus werde ich heut abend Mikrokopter ESCs bestellen, ich bins Leid mit diesen Überraschungsreglern.
Die Mystery Pentiums die ich jetzt habe sind ganz andere wie die die ich vorher geliehen hatte. Nomes est omen.

Oder baut mir die jemand günstig auf I²C um?

Gruß
Nils