2008-10-16 26 views
13

¿Cuáles son los pasos más fáciles para hacer un circuito pequeño con un flash LED de un programa C/C++?Pasos para hacer que un LED parpadee desde un programa C/C++?

yo preferiría el menor número de dependencias y paquetes necesarios.

  • ¿A qué puerto conectaría algo?
  • ¿Qué compilador usaría?
  • ¿Cómo se envían los datos a ese puerto?
  • ¿Es necesario tener un micro-procesador? Si no, no quiero usar uno para este proyecto simple.

EDIT: Interesado en cualquier solución específica del sistema operativo.

Respuesta

17

Aquí hay un tutorial sobre cómo hacerlo con un parallel port.

aunque recomendaría una Arduino que se pueden comprar a precios muy bajos y sólo involucraría el siguiente código:

/* Blinking LED 
* ------------ 
* 
* turns on and off a light emitting diode(LED) connected to a digital 
* pin, in intervals of 2 seconds. Ideally we use pin 13 on the Arduino 
* board because it has a resistor attached to it, needing only an LED 

* 
* Created 1 June 2005 
* copyleft 2005 DojoDave <http://www.0j0.org> 
* http://arduino.berlios.de 
* 
* based on an orginal by H. Barragan for the Wiring i/o board 
*/ 

int ledPin = 13;     // LED connected to digital pin 13 

void setup() 
{ 
    pinMode(ledPin, OUTPUT);  // sets the digital pin as output 
} 

void loop() 
{ 
    digitalWrite(ledPin, HIGH); // sets the LED on 
    delay(1000);     // waits for a second 
    digitalWrite(ledPin, LOW); // sets the LED off 
    delay(1000);     // waits for a second 
} 

alt text

http://www.arduino.cc/en/Tutorial/BlinkingLED

+0

¡Buenos enlaces! El Arduino se ve genial. He soldado mis propios tableros de prototipos Atmel/PIC, y es un poco doloroso. ¡Pero una placa basada en microcontroladores es exagerada si el OP realmente * solo * quiere conectar unos pocos LED! –

+0

El Arduino es un dispositivo bastante fantástico, y también es barato a $ 35. Pero el enlace sobre mi mención de Arduino está relacionado con hacerlo con un puerto paralelo que es la solución obvia y mucho más barata. – mwilliams

+0

El Arduino es definitivamente resbaladizo. – itsmatt

0

También depende del sistema operativo. En Linux, puede conectar un LED directamente al puerto paralelo (con una resistencia de limitación de corriente apropiada, por supuesto) y simplemente usar la función C "outb()" para encenderlo y apagarlo.

En Windows, es mucho más complicado porque el sistema operativo no permite que las aplicaciones de usuario hablen directamente con los puertos.

+0

@Vlion, Linux no tiene llamadas de sistema específicas del puerto paralelo. Pero tiene el syscall ioctl() catch-all. Y hay ioctls específicamente para hablar con puertos paralelos: http://www.linuxfocus.org/common/src/article205/ppdev.html –

1

Puede tratar de poner un LED y una resistencia de 300 Ohm en la transmisión del puerto serie (pin 3) a tierra (pin 5). Luego envíe datos para activarlo.

El puerto serie puede probablemente sólo 10mA fuente.

Buena suerte.

0

El puerto más sencilla de hacerlo sería en serie o en paralelo. Recuerde siempre poner una resistencia en serie con el LED o la quemará.

6

Qué puerto? El puerto paralelo es mi elección favorita ya que produce + 5V (nivel lógico TTL) y es muy fácil de programar. La mayoría de los puertos paralelos tienen suficiente potencia para conducir un LED. Es importante recordar que los puertos de computadora en general están diseñados para emitir solo voltajes de señalización, y no para producir suficiente corriente para alimentar la mayoría de los dispositivos.

¿Qué compilador? No importa. Sin embargo, este tipo de piratería de hardware es más divertido y fácil en Linux, por lo que GCC es una buena opción.

¿Cómo envío datos? Depende del puerto y del sistema operativo. USB es espantosamente complicado para un proyecto simple, así que olvídalo. Los puertos seriales y paralelos se pueden controlar a través de una variedad de interfaces diferentes. Mi preferencia es usar la llamada al sistema ioctl() en Linux para controlar directamente los pines del puerto paralelo.Aquí hay información sobre cómo hacerlo: http://www.linuxfocus.org/common/src/article205/ppdev.html

¿Necesito un microprocesador? No, no necesita un microprocesador en el dispositivo externo (obviamente su computadora tiene un microprocesador :-P). Si usa los puertos paralelo o serie, puede usar el LED y una o dos resistencias y las partes necesarias para conectar el LED directamente.

(también: El Linux Device Drivers libro, disponible de forma gratuita en línea, tiene la información sobre la interconexión dispositivos electrónicos sencillos para puertos paralelos y escribir controladores del núcleo para ellos.)

EDIT: No parece haber confusión masiva en este hilo sobre lo que significa el OP, "¿Necesito un microprocesador?" Enfáticamente, el puerto paralelo solo puede conducir un LED basado en el software en la computadora. No se necesita un microprocesador en el dispositivo. Sin embargo, si desea que el dispositivo se pueda controlar a sí mismo sin estar conectado a la computadora, se requiere un microprocesador o alguna otra lógica digital .

1

para operaciones rápidas y sucias, tiene 2 opciones fáciles: puerto en serie o paralelo. El puerto serie es más fácil, pero está limitado en el número de LED.

Para conectar los LED, necesita un conector de carcasa (DB25/DB9) del sexo correcto, los LED y una resistencia. Tendría que buscar el valor de su resistencia usted mismo.

El puerto serie tiene señales de flujo de control que están bajo el control del programador. Es una simple cuestión de enviar los bits correctos al registro MCR (después de abrir el puerto serie).

El puerto paralelo es un poco más difícil, ya que hay un poco más de apretón de manos que hacer, pero generalmente es el mismo principio de escritura en un registro.

Es posible que tenga que luchar contra su sistema operativo para obtener el control del puerto.

El uso de la línea Tx es algo complejo, ya que la señal que sale es el flujo de bits en serie de los datos escritos en el registro de transmisión. Me quedaría con las señales CTS y DSR.

Para una depuración rápida y sucia, acabo de escribir en los registros y vi las luces del módem.

+0

Tendría que estar en desacuerdo sobre el puerto serial o paralelo: simplemente puede usar el puerto paralelo como un dispositivo de salida TTL sin procesar sin apretón de manos ni nada. Y tiene la ventaja de tener más pines disponibles y niveles TTL (+ 5V/0V) en lugar de los niveles RS-232 del puerto serie (no estándar pero a menudo + -12V). –

2

Si desea hacer parpadear un LED sin un microprocesador (lo que implica que no hay C/C++), un simple circuito con un 555 IC con temporizador hará el truco. Se trata de proyectos comunes en los libros electrónicos principiante aficionado o kits porque son muy simples y se pueden conseguir las piezas en cualquier tipo de Radio Shack de lugar:

Si quiero hacerlo en el software, como Vlion mentions, todo depende del hardware que se utiliza y el diseño del circuito que conecta el LED.

Si quieres probar y perder el tiempo con algo en su PC, aquí está un artículo sobre cómo a parpadear LEDs que están conectados a los pines en el PC puerto paralelo:

Cuestiones relacionadas