Forum: PC Hard- und Software Digital Ausgang am PC schalten


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 Lars (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
gibt es eine Möglichkeit einen PIN auf dem Mainboard per Betriebssystem 
digital High oder Low zu setzen? Konkret geht es darum Beleuchtung im PC 
bei Bedarf ein bzw. auszuschalten. Wäre es möglich hierfür einen 
Lüfteranschluss zu vergewaltigen? Mainboard ist ein Gigabyte X79S-UPS
Andernfalls würde ich einfach einen ESP8266 verbauen und die beleuchtung 
über WLAN schalten.

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Lars schrieb:
> gibt es eine Möglichkeit einen PIN auf dem Mainboard per Betriebssystem
> digital High oder Low zu setzen?

Sofern eine serielle Schnittstelle vorhanden ist, lassen sich zwei der 
Handshakeleitungen dafür "missbrauchen".

> Wäre es möglich hierfür einen Lüfteranschluss zu vergewaltigen?

Nein.

> Andernfalls würde ich einfach einen ESP8266 verbauen und die beleuchtung
> über WLAN schalten.

Wenn das "einfach" ist ...

Du könntest auch einen µC mit USB-Funktion an einen USB-Port hängen und 
den die Angelegenheit erledigen lassen.

Hier sollte ein simpler AtTiny85 mit V-USB genügen, den gibt es unter 
dem Namen "DigiSpark" mit Arduino-Unterstützung als kleine 
Fertigplatine.

von Urmel aus dem Eis (Gast)


Bewertung
0 lesenswert
nicht lesenswert
andere Möglichkeit wäre einen SMBus header zu suchen. Der sollte i2c 
kompatibel sein, dann reicht eigentlich ein i2c port-expander, gibt es 
auch gleich mit pwm Funktionalität.

von Guido Körber (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das hier ist einfach, vermeidet auch, dass das Mainboard geschrottet 
wird, wenn was schief läuft:
https://shop.codemercs.com/de/io-warrior24-starterkit.html

von Thomas S. (thschl)


Bewertung
1 lesenswert
nicht lesenswert
man könnte auch ganz einfach einen Schalter nehmen, der erfüllt deine 
Anforderung zu 100%

von Hans (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Guido Körber

Wie unterscheidet sich das von einem Arduino für 2 Euro?

von Thomas S. (thschl)


Bewertung
0 lesenswert
nicht lesenswert
Hans schrieb:
> Wie unterscheidet sich das von einem Arduino für 2 Euro?

wenn du den Schalter meinst, dann dadurch dass er ohne Strom und ohne 
Software funktioniert.. nur etwas Muskelkraft

von Guido Körber (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hans schrieb:
> Wie unterscheidet sich das von einem Arduino für 2 Euro?

Darin, dass das direkt funktioniert und es ordentliche Doku und Software 
dazu gibt. Da muss man keinen Mikrocontroller mehr flashen usw.

von Thomas M. (Firma: https://img.favpng.com/23/21/3) (thomasmopunkt)


Bewertung
-1 lesenswert
nicht lesenswert
ODer USB zu UART Datenkabel..mit DTR Signal..doer noch besser sowas..da 
gibte es im Netz samplecode für C, Pascal und Python..bzw der ist sogar 
schon fertig..das Du Ausgänge schalten kannst..
Ebay-Artikel Nr. 173615086065

Mehr code braucht es da nicht sogar mit Grafischer Oberfläche..das 
Beispiel ist Pascal/Lazarus/Delphi.
Es sind sogar gleich codebeispiele bei, wie Du ein 16x2 LCD ansteuern 
kannst etc pp

Ich hatte jetzte einfach mal Pascal angehängt, da sich das so direkt 
compilieren lässt...bei C geht das vermutlich wieder nicht mal eben so 
einfach..da ist alles in cpp h und x anderen Dateien aufgeteilt...
Bei dem code einfach noch die CH341DLL in den gleichen Ordner kopieren 
und mit lazarus kompilieren..fertig schon hast Du Buttons und kannst die 
Ausgänge schalten und sogar Eingänge abfragen!
1
unit Unit1;
2
3
interface
4
5
uses
6
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
7
  StdCtrls, Spin, CH341DLL;
8
9
type
10
  TForm1 = class(TForm)
11
    ChipIndex: TSpinEdit;
12
    OpenBtn: TButton;
13
    CloseBtn: TButton;
14
    LEDBtn: TButton;
15
    ReadBtn: TButton;
16
    Label1: TLabel;
17
    ReportList: TListBox;
18
    procedure OpenBtnClick(Sender: TObject);
19
    procedure CloseBtnClick(Sender: TObject);
20
    procedure LEDBtnClick(Sender: TObject);
21
    procedure ReadBtnClick(Sender: TObject);
22
    procedure AddReport(aLine: String);
23
  private
24
    { Private-Deklarationen }
25
    LEDStatusByte: Byte;
26
  public
27
    { Public-Deklarationen }
28
  end;
29
30
var
31
  Form1: TForm1;
32
33
implementation
34
35
{$R *.DFM}
36
37
procedure TForm1.OpenBtnClick(Sender: TObject);
38
begin
39
   //Verbindung zum Chip herstellen... ChipIndex: 0= 1.Chip am USB, 1= 2.Chip, usw.
40
   if (CH341OpenDevice(ChipIndex.Value)>0) then AddReport('DeviceOpen...OK')
41
                                           else AddReport('DeviceOpen...error!');
42
   LEDBtnClick(self);
43
end;
44
45
46
procedure TForm1.CloseBtnClick(Sender: TObject);
47
begin
48
   //Verbindung schliessen...
49
   CH341CloseDevice(ChipIndex.Value);
50
   AddReport('Closed');
51
end;
52
53
procedure TForm1.LEDBtnClick(Sender: TObject);
54
var Buffer: Byte;
55
    BufferLen: cardinal;
56
begin
57
   if LEDStatusByte=0 then LEDStatusByte:=1;
58
59
   // Ein Byte senden... (LED 0...7)
60
   BufferLen:=1;
61
   Buffer:=not LEDStatusByte; //Output LOW = LED eingeschaltet!
62
   if CH341MemWriteAddr0(ChipIndex.Value,@Buffer,@BufferLen) then AddReport('Write...OK --- Status = '+IntToStr(Buffer))
63
                                                             else AddReport('Write error!');
64
   LEDStatusByte:=LEDStatusByte shl 1; //Lauflicht
65
end;
66
67
procedure TForm1.ReadBtnClick(Sender: TObject);
68
var Buffer: Byte;
69
    BufferLen: cardinal;
70
begin
71
   //Ein Byte lesen (DIL-Schalter 0...7); Schalterposition ON = Input LOW)
72
   BufferLen:=1;
73
   if CH341MemReadAddr0(ChipIndex.Value,@Buffer,@BufferLen) then AddReport('Read...OK --- Status = '+IntToStr(Buffer))
74
                                                            else AddReport('Read error!');
75
end;
76
77
procedure TForm1.AddReport(aLine: String);
78
begin
79
   ReportList.items.Add('Device '+IntToStr(ChipIndex.Value)+': '+aLine);
80
   if ReportList.items.Count>10 then ReportList.items.Delete(0);
81
end;
82
83
end.

: Bearbeitet durch User
von Rolf M. (rmagnus)


Bewertung
1 lesenswert
nicht lesenswert
Thomas S. schrieb:
> man könnte auch ganz einfach einen Schalter nehmen, der erfüllt deine
> Anforderung zu 100%

Und am PC ist ein Roboterarm angeschlossen, der den Schalter betätigt?

von Sebastian L. (sebastian_l72)


Bewertung
0 lesenswert
nicht lesenswert
auch von hier:

Digispark

Der kann sogar viel viel mehr:
hier ein paar "nützliche" Scripts:
https://www.heise.de/select/ix/2017/7/1499358388386903

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Sebastian L. schrieb:
> Digispark

Den habe ich bereits in der ersten Antwort in diesem Thread 
vorgeschlagen.

von Guido Körber (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Rolf M. schrieb:
> Und am PC ist ein Roboterarm angeschlossen, der den Schalter betätigt?

Nein, der Roboterarm schubst den Dominostein um, der die ganze 
Rube-Goldberg-Machine in Gang setzt

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.