Forum: Mikrocontroller und Digitale Elektronik Bedieneinheit für PC Software - Taster, Encoder, Schalter wie einlesen?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Techmex (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nach vielen kleinen µC Projekten würde ich mich nun gern mal ein an 
etwas umfangreicheres Projektvorhaben wagen.

Ich habe eine PC Software geschrieben, die ich gern über ein Bedienpanel 
(Tischgerät) steuern möchte.

Dafür gibt es dann einige Taster, Drehencoder, Schalter und Potis.
Andersrum sollen auf der Bedieneinheit aber drei kleine OLEDs, LED Ringe 
und Status-LEDs angesteuert werden.

Nun frage ich mich, wie die Kommunikation zwischen Hard- und Software 
sinnvollerweise vonstatten geht.
Mein erster Ansatz war, das alles mittels einer seriellen Schnittstelle 
zu machen.

Ein µC würde dann permanent sämtliche Zustände aller Bedienelemente 
einlesen und an die PC Software übermitteln.
Für die Ansteuerung der Displays würde ich die relevanten Daten dann 
ebenfalls seriell vom PC an den µC übermitteln, der dann die eigentliche 
Ansteuerung der OLED Displays übernimmt.

Allerdings frage ich mich, ob das überhaupt der richtige Weg ist.

Wie macht man das denn z.B. in modernen Steuerungen (wie bspw. 
Lichtsteuerpulten oder Videoschnitt-Bedieneinheiten)?

Irgendwelche Tips?

Dankeschön :D

von Alexander K. (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Funktioniert. ;)

Deine Software muss halt die Schnittstelle abfragen. Habe ich mal Spaß 
halber mit den Arduino unter VB gemacht.

 Dim S_Port As New IO.Ports.SerialPort

  If S_Port.IsOpen Then
      S_Port.Close()
    End If
    S_Port.PortName = "COM10"
    S_Port.BaudRate = 9600
    S_Port.Open()
    tx$ = hp_e_text_senden.Text + Chr(13)
    S_Port.Write(tx$)
    S_Port.Close()

Das ist der ganze Code um an den Arduino an Com-10 zu senden.

Eine modifizierte Variante und du empfängst auch Daten.

Was ich damit sagen will, das ist nicht wirklich ein Hexenwerk und 
eigentlich sehr einfach.

Dein Problem ist nur der Treiber den dein Gerät (wenn es nicht auf eine 
schon bekannte Technik passiert) in das System einzubinden.

Gruß

   Pucki

von Jim M. (turboj)


Bewertung
1 lesenswert
nicht lesenswert
Techmex schrieb:
> Mein erster Ansatz war, das alles mittels einer seriellen Schnittstelle
> zu machen.

Macht man heutzutage eher über USB HID.
Bei USB-fähigen µC ist i.d.R. ein Herstellerbeispiel dabei, das Maus 
oder Tastatur als USB HID implementiert.

Übrigens geht HID auch über Bluetooth oder Bluetooth Low Energy, falls 
es mal drahtlos gehen soll.

von georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Techmex schrieb:
> Dafür gibt es dann einige Taster, Drehencoder

Das heisst, wenige Daten, keine hohe Geschwindigkeit nötig, da ist eine 
serielle UART-Verbindung durchaus angemessen. Ob die mit Logikpegeln, 
RS232C oder diversen Bussen wie RS485 oder CAN hardwaremässig realisiert 
wird hängt dann von Anforderungen wie Leitungslänge und Störpotentialen 
ab, macht aber bei der Software kaum einen Unterschied.

"Moderner" wäre USB, aber dafür brauchst du zumindest auf der 
Client-Seite zusätzliche Hard- und Software ohne dass das wirkliche 
Vorteile bringt. Vermutlich lässt sich das aber besser vermarkten, da 
die Kunden gern einfach eine USB-Stecker einstecken, andere 
Schnittstellen sind heute nicht mehr direkt verfügbar. Wenn man sich 
nicht den ganzen USB-Aufwand aufhalsen will, kann man einen billigen 
Adapter USB-seriell verwenden und den eigentlichen Datenaustausch 
seriell machen, als ob der PC noch eine serielle Schnittstelle hätte 
(hat er dann ja auch, eine virtuelle).

Georg

von MaWin (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Jim M. schrieb:
> Macht man heutzutage eher über USB HID.

Sehe ich auch so. USB 1.1 kann ja auch ein AVR direkt, ohne extra USB 
Controller.
https://www.fischl.de/usbasp/

Es muss also kein WCH552 oder AT90USB1287 sein.

von Techmex (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen und vielen Dank für eure Antworten.

Mit USB HID habe ich bisher noch keine Erfahrung aber das klingt 
interessant ist vermutlich auch einfach mal der nächste Schritt.

Zudem wollte ich eh schon seit 2 Jahren mal eine Minitastatur mit 4 
Tasten (F3, F10, Enter, ESC) bauen, um damit meinen Markierlaser 
komfortabler zu steuern :D
Das wäre ja vielleicht ein schönes Einstiegsprojekt für HID.

Besten Dank!

von Fabian W. (fabian_w105)


Bewertung
0 lesenswert
nicht lesenswert
Morgen,

Ich habe zuletzt ein altes Sony Videoschnitt Pult umgebaut. Welches nur 
noch als PC-Interface dienen sollte. Da hatte ich mir die Frage auch 
gestellt wie ich die Befehle zum PC bekomme. Ich habe mich dann für MIDI 
entschieden.
Bei mir waren es ca. 93 Taster, 10 Encoder, 120 LEDs und ein paar 
anzeige Werte fürs Dispay.

Die MIDI Befehle sende ich über UART zum PC.
µC -> FTDI -> USB -> PC
Klappt sehr zuverlässig und die MIDI Pakete sind ja auch relativ einfach 
gestrickt (3 Byte).


Gruß Fabian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.