Шаги, чтобы заставить светодиод мигать из программы C / C++?
каковы самые простые шаги для создания небольшой схемы со светодиодной вспышкой из программы C/C++?
Я бы предпочел наименьшее количество необходимых зависимостей и пакетов.
- в какой порт я бы что-то подключил?
- какой компилятор я бы использовал?
- как отправить данные в этот порт?
- мне нужно иметь микропроцессор? Если нет, я не хочу использовать его для этого простого проекта.
изменить: Заинтересованы в каких-либо конкретных решений ОС.
7 ответов
вот учебник по этому вопросу с помощью параллельный порт.
хотя я бы рекомендовал 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
}
какой порт? параллельный порт-мой любимый выбор, так как он выводит +5V (логический уровень TTL) и очень прост в программировании. Большинств параллельные порты имеют достаточную силу управлять Сид. Важно помнить, что компьютерные порты в целом предназначены только для вывода сигнальных напряжений, а не для получения достаточного тока для питания большинства устройств.
какой компилятор? не имеет значения. Этот вид взлома оборудования более забавен и легко под Linux, хотя, так что GCC является хорошим выбором.
Как отправить данные? зависит от порта и операционной системы. USB ужасно сложен для простого проекта, поэтому забудьте об этом. Последовательные и параллельные порты можно контролировать через разнообразие различные интерфейсы. Я предпочитаю использовать ioctl()
системный вызов в Linux напрямую контролировать параллельного порта. Здесь информация о том, как это сделать: http://www.linuxfocus.org/common/src/article205/ppdev.html
нужен ли мне микропроцессор? нет, вам не нужен микропроцессор во внешнем устройстве (очевидно, ваш компьютер имеет микропроцессор :-P). Если вы используете параллельные или последовательные порты, то вы можете как раз использовать Сид и резистор или 2 и необходимые части для того чтобы соединить Сид сразу.
(Также: Linux драйверы устройств книга, доступный бесплатно онлайн, имеет информация о сопряжении простых электронных устройств с параллельными портами и написании для них драйверов ядра.)
EDIT: в этой теме, похоже, существует огромная путаница в том, что означает OP: "нужен ли мне микропроцессор?"Подчеркнуто, что только параллельный порт может управлять светодиодом на основе программного обеспечения в компьютер. В устройстве не требуется микропроцессор. Однако, если вы хотите, чтобы устройство могло контролировать себя без подключение к компьютеру, микропроцессор или какая-то другая цифровая логика и требуются.
Если вы хотите мигать светодиодом без микропроцессора (что подразумевает отсутствие C/C++), простая схема с использованием таймера 555 IC сделает трюк. Это общие проекты в книгах или наборах электроники для начинающих любителей, потому что они очень просты, и вы можете получить детали в любом типе Radio Shack место:
- http://www.kpsec.freeuk.com/projects/flashl.htm
- http://www.electronics-project-design.com/LED-Flasher-Circuit.html
Если вы хотите сделать это программно, как Vlion упоминает, все зависит от используемого оборудования и конструкции схемы, которая подключает светодиод.
Если вы хотите попробовать и возиться с чем-нибудь на вашем компьютере, Вот статья о том, как мигают светодиоды, подключенные к выводам на параллельном порту ПК:
вы можете попробовать поставить светодиод и резистор 300 Ом на последовательный порт передачи (pin 3) на Землю (pin 5). Затем отправьте данные, чтобы включить его.
серийный порт может вероятно только источник 10mA.
удачи.
для быстрых и грязных операций у вас есть 2 простых варианта: последовательный или параллельный порт. Последовательный порт проще, но ограничен в количестве светодиодов.
для того чтобы соединить Сид, вам нужен соединитель раковины (ДБ25/ДБ9) правильного пола, Сид и резистор. Вам придется самому искать значение для вашего резистора.
последовательный порт имеет сигналы потока управления, которые находятся под управлением программиста. Это простой вопрос вывода правильных битов в Регистр MCR (после открытия последовательного порта).
параллельный порт немного сложнее, в том, что есть немного больше рукопожатия, но, как правило, тот же принцип записи в регистр.
возможно, Вам придется бороться с вашей ОС, чтобы получить контроль над портом.
использование линии Tx несколько сложно, так как выходящий сигнал является последовательным битовым потоком данных, записанных в регистр передачи. Я бы придерживался CTS и DSR сигналы.
для быстрой и грязной отладки я только что написал в регистры и наблюдал за огнями модема.
Это также зависит от ОС. В Linux вы можете подключить светодиод непосредственно к параллельному порту (с соответствующим токоограничивающим резистором, конечно) и просто использовать функцию C "outb()" для включения и выключения.
в Windows это намного сложнее, потому что ОС не позволяет пользовательским приложениям напрямую общаться с портами.
самый простой порт для этого будет последовательным или параллельным. Всегда помните, чтобы поставить резистор последовательно со светодиодом или вы сожжете его.