Da würde ich mit einer if-Verzweigung rangehen.
Kannst sie ja mit elseif aufteilen, dann die Bereiche ADC-Wert<340, ADC-Wert>560 und alles andere (also der Bereich dazwischen)
Die Umwandlung von ADC-Wert in Pulsfrequenz in eine Formel verpacken und in den Teilen, wo der Motor laufen soll, jeweils ein anderes Richtungs-Bit setzen. Die Formeln kannst dir selber aufstellen, wahrscheinlich soll die Frequenz von 1 linear ansteigen, je weiter der ADC-Wert vom Mittelbereich abweicht. Also wirds dann irgendwas sein in der Form Pulsfrequenz=1018-3*ADC_Wert (würde in diesem Fall an den beiden Enden die Frequenzen 1018 und 1 ergeben). Im anderen Bereich dann sowas wie Pulsfrequenz=1018-3*(1023-ADC-Wert) oder so. Wie gesgt, ist eher als Skizze zu verstehen und müsste noch überprüft werden. Wär wahrscheinlich sinnvoll, den mittleren Bereich symmetrisch zu machen, so wie es jetzt ist hast du auf einer seite 23 Werte mehr als auf der anderen (so ein ADC-Wert kann Werte bis 1023 annehmen, eben volle 10 Bit). Um die Formeln in Bascom zu realisieren musst du wahrscheinlich ein paar Hilfsvariablen einführen, da du immer nur eine Rechenoperation pro Zeile ausführen kannst. Würde dann so aussehen:
Code:
Dim ADC_Wert as Integer
Dim Pulsfrequenz as Integer
Dim Temp as Integer
Temp = 3*ADC_Wert
Pulsfrequenz = 1018-Temp
Ist jetzt auch nur ein Codeschnipsel als Beispiel, hoffe es hilft dir.
Lesezeichen