@ 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.
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 =========
Habe ich getestet und funktioniert. Jetzt gibts kein Versehentliches Neukalibrieren mehr.
Habt ihr Verbesserungsvorschläge?
Wer keinen Pieper hat einfach eine LED Routine einsetzen.
Den Code Lade ich morgen auf meinen Blog
Gruß
Nils
Lesezeichen