Шаги, чтобы светодиод мигал из программы C/С++?

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

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

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

EDIT: Заинтересованы в каких-либо конкретных решениях для ОС.

Ответы

Ответ 1

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

Хотя я бы рекомендовал 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

Ответ 2

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

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

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

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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

Удачи.

Ответ 5

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

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

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

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

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

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

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

Ответ 6

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

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

Ответ 7

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