Hey,
Ich möchte die Amplitude des Funktionsgenerators automatisch und schrittweise erhöhen, dass heißt während der Ton ausgegeben wird, soll die Amplitude schrittweise ansteigen. Ich hab mir das mal so durchgedacht. Wenn ich die automatische Erhöhung in eine Case- Struktur einfüge und diese mit dem Button für die nächste Frequenz verbinde wird sie nicht schrittweise abgearbeitet. Wenn man sie nur in der while Schleife lässt, startet die Erhöhung aber schon bevor der Button gedrückt wird ...... Hat hierzu jemand eine Idee wie ich das am besten lösen könnte?
Bitte um Rat.
Lg DOM
Hallo,
Hab in der Zeit, seit diesem Post, schon einiges verändert. Die Amplitude erhöht sich mittlerweile schon automatisch. Es gibt aber noch immer ein Problem.
Wenn der nächste Ton kommt, bzw. einer der 2 Buttons rechte/linke Seite gedrückt wird, soll die Amplitude wieder auf 0 gesetzt werden. Aufgrund der Ereignisstruktur hab ich versucht, es mit lokalen Variablen zu lösen, dass hat aber nicht so ganz geklappt. Hat jemand von euch eine Idee?
mfg DOM
So?:
[
attachment=37750]
Gruß Markus
PS: Löblich, dass Du den Crosspost erwähnt hast.
Hallo Markus,
Zuerst mal danke für deine Hilfe.
Hab das aber eigentlich ein bisschen anders gemeint. Der Ton wird abgespielt und die Amplitude währenddessen automatisch bis maximal 0.5 erhöht. Wenn dann der Button "nächste Frequenz" oder "Linke" bzw "Rechte Seite" gedrückt wird, soll die Amplitude auf 0 zurückgesetzt werden, sodass der nächste Ton wieder bei einer Amplitude von 0.1 startet.
Lg DOM
Dann solltest Du Dein Schieberegister mit 0 initialisieren. Wobei ich sehe gerade die Forschleife hat nur einen Durchlauf. Was soll das denn?
Ich hab' Dir das mal geändert.
Außerdem solltest Du dann in der Eventstruktur im Case "Linke Seite", bzw. "Rechte Seite" auch durch eine lokale Variable Deine Amplitude zurücksetzen.
Meinst Du so:
[
attachment=37752]
Gruß Markus
Hallo Markus,
Zu Anfang habe ich schon das Schieberegister mit 0 initialisiert, aber das hat dann nicht den gewünschten Effekt erzielt.
Ok, das mit der For-Schleife ist wirklich Quatsch, da ja die Äußere sowieso 5 Durchläufe hat.
Wie schon gesagt hab ich es auch schon mit lokalen Variablen verucht, aber auf eine etwas andere Art und deshalb hat das auch nicht funktioniert.
Danke, damit hast du mir sehr weitergeholfen.
Das Einzige was noch nicht funktioniert ist, dass wenn einer der beiden Buttons "Rechte" oder "Linke Seite" gedrückt wird, sollte der Ton gestoppt werden, dh wenn ich bei zB bei einer Amplitude von 0.3 auf den Button drücke, soll der Ton nicht mehr weiter ausgegeben werden. Habe ebenfalls versucht das mit Variablen zu lösen, bin aber daran gescheitert.
Hast du eventuell einen Tipp für mich, wie ich das schaffen könnte?
Lg DOM
Da musst Du an Deinem Programmaufbau irgendwas anders machen, z.B. eine Statemachine verwenden:
1. Ton ausgeben
2. Prüfen ob Taste gedrückt wurde
3. Wenn ja, abbrechen. Wenn nein, nächsten Ton ausgeben......
Gruß Markus
Hallo Markus,
ich hab mir das mit der state machine einmal angesehen. Im Prinzip ist es ja nur eine case-Struktur, in einer while-Schleife, mit einem Schieberegister. Ich habe jetzt schon öftere Male versucht, die state machine in mein Programm einzubaun, hat aber eigentlich nie geklappt.
Könntest du mir helfen?
Mfg DOM
Wieso? An was bist Du gescheitert?
(29.12.2011 14:20 )DOM88 schrieb: [ -> ]Ich habe jetzt schon öftere Male versucht, die state machine in mein Programm einzubaun, hat aber eigentlich nie geklappt.
Gruß Markus