LED ein und ausschalten per PC

Frank

Anfänger
Hallo,

ich möchte gerne für ein Projekt einfach eine LED per PC ein und ausschalten.

Wir haben ein Programm (C++) und wenn eine gewisse Taste gedrückt wird, wollen wir eine LED ein oder ausschalten.

Die LED wird von einem Lichtsensor abgefragt, der eine pneumatische Steuerung für eine selbstgebaute Slotbahn regelt.
Die Tasten werden von pneumatischen Zylindern gedrückt.

Ich hätte auch nen Raspberry oder Mikrocontroller.
Aber das muss doch auch einfacher gehen, zumal ich gerne in meinem SFML-C++-Rahmen bleiben würde.

Ursprünglich war geplant, den Lichtsensor auf den Monitor "blicken" zu lassen und dort helle oder dunkle Flächen zu zeichnen. Aber der Sensor erkennt keine Farben noch nichtmal hell und dunkel. Das scheint an der Helligkeit des Monitors zu liegen.
Da kommen wir so wie es aussieht nicht weiter.

Deshalb wollen wir einfach eine LED an und ausschalten....

Hat da jemand nen Tip?
 
Am Raspberry Pi hast du GPIO Pins. Diese werden von gpio(4) unter FreeBSD erkannt und sind einfach nutzbar z.B. aus der Shell mit gpioctl(1). Unter Linux sollte es nicht viel schwieriger sein die GPIO Pins anzusteuern und es fliegt genug Beispielcode im Netz rum. Dabei ist Vorsicht geboten, weil die GPIO Pins des Raspberry Pis doch recht empfindlich sind. Du wirst für eine normale LED einen Treibertransistor brauchen. Für Leute, die Lieber Geld ausgeben als an Hardware zu basteln, gibt es diverse sog. Shields zum auf den Raspberry Pi stecken. Einige der Shields enthalten bereits Relais und/oder MOSFETs um ein paar Ampere mehr zu schalten.

Um einfache nur eine LED vom PC zu schalten reicht so ziemlich jeder Mikrocontroller. Ein Hardware UART und eine auf <0.5% stabile Taktquelle machen das Leben jedoch einfacher. Die einsteigerfreundlichsten 8 Bit Mikrocontroller sind meines Erachtens nach AVRs. Nen ATtiny mit UART, 2kiB RAM und ROM reicht bereits um solche einfachen Anwendungen einfach hinschreiben zu können. Für die Anbindungen an PCs empfiehlt sich ein USB<->RS232 (0-5V Pegel) Wandler um Software USB zu vermeiden. Eine weitere Möglichkeit wäre etwas wie das Pollin NET-IO Board mit der Ethersex Firmware zu bespielen.

PCs haben seit Jahren immer mehr ihrerer alten, langsamen und bastlerfreundlichen Schnittstellen verloren. Moderne Mainboards haben oft nicht mal mehr Buchsen für RS232 und den alten Parallelport. Du musst dich also entscheiden zwischen alten PCs und aufwändiger Peripherie.
 
Es gibt diverse GPIO Boards die per USB angesteuert werden koennen. Ich mag das zum Beispiel, was sie mit dem Odroid verkaufen:
http://www.hardkernel.com/main/products/prdt_info.php?g_code=G135390529643
Aber auch sowas wie das hier wuerde sich eignen:
http://www.reichelt.de/USB-CAN-BUS-...2946&ARTICLE=107168&SHOW=1&START=0&OFFSET=16&
Die Dinger sind recht klasse und sie kommen direkt mit vielen nuetzlichen Beispielprogrammen und haben direkt diverse Interfaces fuer I2S, I2C, JTAG... Wenn du irgendwann mal mehr machen willst. Auch als GPIO kann man das verwenden, auch wenns nicht dran steht.

Wenn du noch eine parallele Schnittstelle hast, dann geht das damit am einfachsten, weil du dann nicht mehr als eine LED und einen Schutzwiderstand brauchst. Leider hat das heute fast kein PC mehr. Das habe ich auch die schnelle gefunden:
http://www.codeproject.com/Articles/4981/I-O-Ports-Uncensored-Controlling-LEDs-Light-Emit
Hab auch noch den Code fuer FreeBSD, wenn du den brauchst.
 
Ich würde dir auch raten einfach einen Mikrocontroller zu nehmen. Einen attiny2313 oder nen Atmega8 z.B. Die haben noch HW-U(S)ART und kosten fast nichts. Geht aber auch jeder andere mit einer Software uart (http://nerdralph.blogspot.de/2014/01/avr-half-duplex-software-uart.html).

Falls ihr euch nicht so gut damit auskennt oder noch keinen USB<->RS232 (0-5V Pegel) Wandler da habt, dann koenntet ihr auch gleich zu einem Arduino Board greifen. Ist dann aber mit Kanonen auf Spatzen schiessen.

Vorteil bei der Sache waere halt das fast keine Arbeit anfaellt. Beispiele dafuer finden sich genug im Netz(http://forum.arduino.cc/index.php/topic,6075.0.html)
 
Danke für Eure Tipps.

Habe mir gleich mal ein GPIO Boards die per USB angesteuert werden können bestellt, um da auch mal mit rum zu spielen.

Die Lösung mit der parallelen Schnittstelle fand ich auch gut.

Dann viel mir ein...ich habe ja noch nen Arduino mit nem Ethernet Shield.
Schicke jetzt ein UDP Packet aus dem C++ Programm an den Arduino.
Je nach Text geht die eine oder die andere LED an.
Funktioniert prima.
 
Zurück
Oben