@ Holzi: Der Gleitende Mittelwert ist hier überflüssig da wir nur ganz kurz messen. Aber der Hinweis ist natürlich richtig. (Eckernförde? Komm mal rum nach Kiel!!)
@all, natürlich habe ich mich mit der Stickstellung versehen, hier der berichtigte Code mit 3mal kurz Piepen für deaktivieren der Funktion. Könnte man auch über die LED machen.
Habe ich getestet und funktioniert. Jetzt gibts kein Versehentliches Neukalibrieren mehr.Code:'===XY Kalibrierung über Funke================================================== 'Nils-XY Offset '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 '===Ende Offsetübernahme =========
Habt ihr Verbesserungsvorschläge?
Wer keinen Pieper hat einfach eine LED Routine einsetzen.
Den Code Lade ich morgen auf meinen Blog
Gruß
Nils







Zitieren




Lesezeichen