-         

Ergebnis 1 bis 9 von 9

Thema: Elektronische Morsetaste mit Mega32

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.09.2007
    Beiträge
    101

    Elektronische Morsetaste mit Mega32

    Anzeige

    Hallo!
    Ich möchte mir eine Morsetaste bauen die bei einer festgelegten Geschwindigkeit immer gleichlange Punkte und gleichlange Striche ausgibt.

    z.B. Solange Taste 1 betätigt wird, werden defin. Punkte (TÖNE) ausgegeben. Wenn Taste 2 betätigt wird, werden defin. Striche (TÖNE) ausgegeben.
    Dabei ist ein Strich genau 3xPunkt, die Pause dazwischen auch ein Punkt.

    Wie könnte ich das mit dem Ton machen damit er immer eine exakte Länge hat und wie am besten die beiden Taster (Morsepaddle nach Links= Punkte, nach Rechts = Striche) abfragen?

    Die eine Taste mit INT0 und die andere Taste auf INT1 legen? Könnte man das so machen?
    Ich bin schon tagelang am suchen, finde aber nix was passt.
    Wie fange ich am besten an?

    Danke im vorraus!
    Gruß

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    14.04.2008
    Ort
    Esslingen
    Alter
    29
    Beiträge
    235
    Frag doch einfach die INTs ab und lasse einen Timer laufen, welcher dir immer die "Tonlängen" mitzählt.
    Elektronische Bauteile funktionieren mit Rauch. Lässt man den Rauch raus, sind sie kaputt.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Moin!

    Wenn...

    ...der Controller sonst nix tun muss,
    ...es keine "Squeeze"-Taste werden soll (d.h. Punkt- und Strichtaste nicht gleichzeitig gedrückt werden können),
    ...die Gebegeschwindigkeit nicht variabel sein soll
    ...und gleich ein fertiger Ton rauskommen soll,

    kann man es ganz einfach so machen:

    (PORTB.0 = Ton-Ausgang, PINB.1 = Punkt-Eingang, PINB.2 = Strich-Eingang, Tasten gehen nach Masse, PullUp-Widerstände aktiviert)

    Code:
    Config PinB.0 = Output     'Ausgangs-Pin für den Ton
    PortB.1 = 1                     'PullUp aktiviert
    PortB.2 = 1                     'PullUp aktiviert
    
    Do
    
    If PinB.1 = 0 then       'Punkt-Taste aktiviert:
     Sound PortB.0, X, Y   'Kurzer Ton...
     Waitms Z                  '...und Pause
    End if
    
    If PinB.2 = 0 then         'Strich-Taste aktiviert:
     Sound PortB.0, 3X, Y   'dreimal so langer Ton...
     Waitms Z                    '...und Pause
    End if
    
    Loop
    Der Befehl "Sound, X, Y" erzeugt einen Ton, dessen Frequenz der Prozessortakt/Y ist (d.h. je kleiner Y, desto höher der Ton), und der für X Schwingungen ausgegben wird (d.h. je größer X, desto länger der Ton). Du müsstest also nur etwas mit den Werten X und Z (für Waitms) rumspielen, damit die Zeiten stimmen.

    Und wenn Du Interese an einem Code für eine "richtige" Squeeze-Taste hast, schick´ mir doch eine PN. Das war nämlich eins meiner letzten Projekte

    73,

    Daniel

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.09.2007
    Beiträge
    101
    Hallo!
    Ich habs im Prinzip schon genau so gemacht wie du im Beispiel dargestellt hast. Es piept zwar je nach Tastendrucklänge, aber als Morsekeyer kann man das nicht bezeichnen.
    Das Ausgangssignal sollte auch die Punkt-Pause-Strich-Pause immer in exakt gleicher Länge ausgeben.
    z.B. bei 100 Buchstaben/Minute wäre ein Punkt= 50ms lang/ Strich = 150ms, Pause=50ms.
    Wenn ich jetzt die Taste kurzer betätige sollte trotzdem ein 50ms Puls rauskommen.
    Wenn ich den Punkt- Paddle länger als 50ms betätige sollten eine Reihe von 50ms Pulsen mit 50ms Pause rauskommen.
    Da kaomm ich nicht weiter und steh am Schlauch.

    Daniel, ich hab dir eine PN geschickt, sehe die aber nicht im Ausgangskorb.
    Hast du was bekommen?
    Genau sowas hätte ich auch vor zu basteln. Ich hab in den letzten Jahren immer wieder begonnen und jedesmal frustriert eingestellt, weils nix getaugt hat.
    Ich verwende seit Jahren den Memory-Keyer ETM9COG-X3 der ja das alles schon kann. Mehr Spaß würde aber eine selbstgebaute Taste machen, Hi.
    vy73 de Hans

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Hans55,
    Ich verwende seit Jahren den Memory-Keyer ETM9COG-X3 der ja das alles schon kann.
    Wenn man die Funktion des Memory-Keyers (besonderes Stichwort: "Memory"!) nachbauen will, braucht es etwas mehr Programmieraufwand.
    Eingangsseitig (= Tasteneingabe) müssen die Striche und Punkte "aufgezeichnet" werden in Form eines Puffers.
    Ausgangsseitig (= Impulse/Töne) muss in einem regelhaften Rhythmus der Puffer ausgelesen werden und in die entsprechenden Impulslängen umgesetzt werden.
    Beide Prozesse verlaufen asynchron zueinander, wobei die Ausgangsseite einen genauen Grundrhythmus (z.B. 50ms) hat, die Eingangsseite ist vom Eingaberhythmus des Nutzers abhängig.

    Ich würde die Eingabetasten an interruptfähige Pins legen und so den Puffer über ISRs auffüllen.
    Die Ausgabeseite könnte man mit einem Timer 50ms realisieren: Alle 50ms wird der Puffer ausgelesen. Steht da ein Strich drin, wird ein Ton/Impuls bis zum übernächsten Timer-Tick (150ms) ausgegeben, danach noch ein weiterer Tick für die Pause abgewartet. Dann wird die nächste Stelle im Puffer gelesen und je nach Punkt/Strich verfahren.

    ... so etwa im Groben ...

    Gruß Dirk

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hallo OM,

    Damit so eine Taste wirklich Freude macht, sollte die Punkt und Strichergänzung vorhanden sein. Rollover und Insert sollten sauber ablaufen. Die Jambic Modi dagegen sind Geschmackssache und Gewohnheit.

    Die Algorithmen kenn ich gut, aber auf MC hab ich das noch nie implementiert.

    Beim Drücken der Punkttaste wird eine Punktreihe gestartet. Beim Loslassen wird wenn Zwischenraum, die Punktreihe beendet. Wenn gerade ein Punkt ertönt wird nur ein Flag gesetzt, dass bei Punktende ausgewertet wird und veranlasst, die Punktreihe dann zu beenden. Striche gehen analog.

    Ich hoffe das hilft mal ein Stück. Sonst eben weiter fragen.

    vy 73 55,
    Hannes

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    @Hans:

    ´Habe Dir gerade eine PN geschickt...

    Gruß,

    Daniel

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.09.2007
    Beiträge
    101
    Danke erstmal Daniel!!
    Gruß
    Hans

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Habe Dir gerade eine PN geschickt...
    ... und jetzt? Ich würde auch gern etwas lernen!

    Gruß Dirk

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •