Шаги, чтобы заставить светодиод мигать из программы на C / C ++? - PullRequest
13 голосов
/ 16 октября 2008

Как проще всего сделать небольшую схему со светодиодной вспышкой из программы C / C ++?

Я бы предпочел наименьшее количество необходимых зависимостей и пакетов.

  • К какому порту я бы что-нибудь подключил?
  • Какой компилятор я бы использовал?
  • Как отправить данные на этот порт?
  • Нужно ли иметь микропроцессор? Если нет, я не хочу использовать один для этого простого проекта.

РЕДАКТИРОВАТЬ: Заинтересованы в любых решениях для конкретной ОС.

Ответы [ 7 ]

17 голосов
/ 16 октября 2008

Вот учебник по работе с параллельным портом .

Хотя я бы порекомендовал Arduino , который можно купить очень дешево и включающий только следующий код:

/* 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

6 голосов
/ 16 октября 2008

Какой порт? Параллельный порт - мой любимый выбор, поскольку он выдает + 5 В (логический уровень TTL) и очень прост в программировании. У большинства параллельных портов достаточно мощности для управления светодиодом. Важно помнить, что порты компьютера в целом предназначены для вывода только сигнальных напряжений, а не для выработки достаточного тока для питания большинства устройств.

Какой компилятор? Не имеет значения. Этот вид аппаратного взлома в Linux более веселый и простой, поэтому GCC - хороший выбор.

Как отправить данные? Зависит от порта и операционной системы. USB очень сложен для простого проекта, так что забудьте об этом. Последовательными и параллельными портами можно управлять через множество различных интерфейсов. Я предпочитаю использовать системный вызов ioctl() в Linux для прямого управления выводами параллельного порта. Вот информация о том, как это сделать: http://www.linuxfocus.org/common/src/article205/ppdev.html

Мне нужен микропроцессор? Нет, вам не нужен микропроцессор во внешнем устройстве (очевидно, ваш компьютер имеет микропроцессор :-P). Если вы используете параллельный или последовательный порты, вы можете просто использовать светодиод и резистор или два и необходимые детали для непосредственного подключения светодиода.

(Также: Книга драйверов устройств Linux , доступная бесплатно онлайн, содержит информацию о сопряжении простых электронных устройств с параллельными портами и написании драйверов для них.)

РЕДАКТИРОВАТЬ: В этой теме, кажется, существует огромная путаница о том, что ОП означает, "Нужен ли мне микропроцессор?" Важно отметить, что только параллельный порт может управлять светодиодом на основе программного обеспечения в компьютере . В устройстве не требуется микропроцессор. Однако, если вы хотите, чтобы устройство могло управлять без подключения к компьютеру , требуется микропроцессор или другая цифровая логика .

2 голосов
/ 16 октября 2008

Если вы хотите мигать светодиодом без микропроцессора (что подразумевает отсутствие C / C ++), простая схема, использующая таймер 555 IC, справится с задачей. Это общие проекты в книгах или наборах для начинающих любителей электроники, потому что они действительно просты, и вы можете получить детали в любом месте Radio Shack:

Если вы хотите сделать это программно, как Vlion упоминает , все зависит от используемого оборудования и конструкции схемы, которая подключает светодиод.

Если вы хотите попробовать что-то на своем ПК, вот статья о том, как мигать светодиодами, подключенными к выводам параллельного порта ПК:

1 голос
/ 16 октября 2008

для быстрых и грязных операций, у вас есть 2 простых варианта: последовательный или параллельный порт. Последовательный порт проще, но количество светодиодов ограничено.

Для подключения светодиодов необходим разъем оболочки (DB25 / DB9) правильного пола, светодиоды и резистор. Вам нужно будет самостоятельно найти значение для вашего резистора.

Последовательный порт имеет сигналы потока управления, которые находятся под управлением программиста. Простой вывод правильных битов в регистр MCR (после открытия последовательного порта).

Параллельный порт немного сложнее, так как здесь требуется больше рукопожатий, но, как правило, тот же принцип записи в регистр.

Возможно, вам придется бороться с вашей ОС, чтобы получить контроль над портом.

Использование линии Tx довольно сложно, поскольку выходящий сигнал является последовательным потоком данных, записанных в регистр передачи. Я бы придерживался сигналов CTS и DSR.

Для быстрой и грязной отладки я только что записал в регистры и наблюдал за модемом.

1 голос
/ 16 октября 2008

Вы можете попытаться установить светодиод и резистор 300 Ом на последовательный порт передачи (контакт 3) на землю (контакт 5). Затем отправьте данные, чтобы включить его.

Последовательный порт может быть источником только 10 мА.

Удачи.

0 голосов
/ 16 октября 2008

Самый простой порт для этого - последовательный или параллельный. Всегда не забывайте ставить резистор последовательно со светодиодом, иначе он сгорит.

0 голосов
/ 16 октября 2008

Это также зависит от ОС. В Linux вы можете подключить светодиод непосредственно к параллельному порту (с соответствующим резистором для ограничения тока, конечно) и просто использовать функцию C "outb ()" для включения и выключения.

В Windows все намного сложнее, поскольку ОС не позволяет пользовательским приложениям напрямую взаимодействовать с портами.

...