Что нужно сделать, чтобы светодиодный индикатор мигал в программе на C / C++?

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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
13
0
56 530
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

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

@Vlion, Linux не имеет системных вызовов, специфичных для параллельного порта. Но у него есть универсальный системный вызов ioctl (). И есть ioctl, специально предназначенные для работы с параллельными портами: linuxfocus.org/common/src/article205/ppdev.html

Dan Lenski 16.10.2008 22:25

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

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

Удачи.

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

Ответ принят как подходящий

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

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

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

Хорошие ссылки! Arduino выглядит круто. Я спаял свои собственные макетные платы Atmel / PIC, и это своего рода боль. Но плата на основе микроконтроллера - это перебор, если OP действительно Только хочет подключить несколько светодиодов!

Dan Lenski 16.10.2008 22:21

Arduino - довольно фантастическое устройство, к тому же дешевое - 35 долларов. Но ссылка над моей Arduino упоминает ссылки на использование параллельного порта, что является очевидным и гораздо более дешевым решением.

mwilliams 16.10.2008 22:24

Arduino определенно хорош.

itsmatt 16.10.2008 22:27

@ Дэн ОП не сказал, что у них есть ПК. Вы могли бы сказать, что покупка ПК и установка операционной системы и компилятора излишни, если они просто хотят мигать светодиодом.

Martin Beckett 19.11.2010 02:36

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

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

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

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

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

Обновлено: Похоже, в этой теме существует большая путаница относительно того, что означает OP, говоря: «Нужен ли мне микропроцессор?» Подчеркнем, что один только параллельный порт может управлять светодиодом на основе программного обеспечения в компьютере. В устройстве не требуется микропроцессор. Однако, если вы хотите, чтобы устройство могло управлять самим без подключения к компьютеру, потребуется микропроцессор или другая цифровая логика является.

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

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

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

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

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

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

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

Я бы не согласился с последовательным и параллельным портом: вы можете просто использовать параллельный порт как необработанное устройство вывода TTL без квитирования или чего-то еще. И он имеет преимущество в виде большего количества доступных контактов и уровней TTL (+ 5V / 0V), а не уровней RS-232 последовательного порта (нестандартные, но часто + -12V).

Dan Lenski 16.10.2008 22:58

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

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

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

Другие вопросы по теме