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


von Lars (Gast)


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) Benutzerseite


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)


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)


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)


Lesenswert?

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

von Hans (Gast)


Lesenswert?

Guido Körber

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

von Thomas S. (thschl)


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)


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)


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..
https://www.ebay.de/itm/CH341A-Programmer-USB-to-UART-IIC-SPI-TTL-ISP-EPP-MEM-Parallel-Onboard-Converter/173615086065?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649

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)


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)


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) Benutzerseite


Lesenswert?

Sebastian L. schrieb:
> Digispark

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

von Guido Körber (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.