2008-10-16 27 views
13

Các bước đơn giản nhất để tạo một mạch nhỏ với đèn flash LED từ chương trình C/C++ là gì?Các bước để thực hiện nháy đèn LED từ chương trình C/C++?

Tôi muốn số lượng phụ thuộc và gói tối thiểu cần thiết.

  • Tôi sẽ kết nối cổng nào?
  • Trình biên dịch nào tôi sẽ sử dụng?
  • Làm cách nào để gửi dữ liệu đến cổng đó?
  • Tôi có cần bộ vi xử lý không? Nếu không, tôi không muốn sử dụng một cho dự án đơn giản này.

EDIT: Quan tâm đến mọi giải pháp cụ thể của hệ điều hành.

Trả lời

17

Đây là hướng dẫn về cách thực hiện với parallel port.

Mặc dù tôi muốn giới thiệu một Arduino có thể được mua với giá rẻ và sẽ chỉ liên quan đến đoạn mã sau:

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

Các liên kết tốt! Arduino trông rất tuyệt. Tôi đã hàn các bảng tạo mẫu Atmel/PIC của riêng tôi, và đó là một loại đau. Nhưng một bo mạch dựa trên vi điều khiển là quá mức cần thiết nếu OP thực sự * chỉ * muốn kết nối một vài đèn LED! –

+0

Arduino là một thiết bị khá tuyệt vời, và giá rẻ quá $ 35. Nhưng liên kết trên Arduino của tôi đề cập đến liên kết để làm điều đó với một cổng song song đó là giải pháp rõ ràng và rẻ hơn nhiều. – mwilliams

+0

Arduino chắc chắn là bóng bẩy. – itsmatt

0

Nó cũng phụ thuộc vào hệ điều hành. Trên Linux, bạn có thể nối dây LED trực tiếp vào cổng song song (với một điện trở hạn chế thích hợp hiện tại), và chỉ cần sử dụng chức năng C "outb()" để bật và tắt nó.

Trên Windows, điều này phức tạp hơn nhiều vì hệ điều hành không cho phép ứng dụng người dùng nói chuyện trực tiếp với cổng.

+0

@Vlion, Linux không có bất kỳ cửa sổ nào có cổng song song cụ thể. Nhưng nó có ioctl() catch-all syscall. Và có ioctls đặc biệt để nói chuyện với các cổng song song: http://www.linuxfocus.org/common/src/article205/ppdev.html –

1

Bạn có thể thử đặt đèn LED và điện trở 300 Ohm trên truyền cổng nối tiếp (chân 3) đến Mặt đất (chân 5). Sau đó gửi dữ liệu để bật tính năng này.

Cổng nối tiếp có thể chỉ có nguồn 10mA.

Chúc may mắn.

0

Cổng dễ nhất để thực hiện việc này sẽ là nối tiếp hoặc song song. Luôn nhớ để đặt một điện trở trong loạt với đèn LED hoặc bạn sẽ ghi nó ra.

6

Những cổng? Cổng song song là lựa chọn ưa thích của tôi vì nó xuất ra + 5V (mức logic TTL) và rất đơn giản cho chương trình. Hầu hết các cổng song song đều có đủ năng lượng để điều khiển đèn LED. Điều quan trọng cần nhớ là các cổng máy tính nói chung được thiết kế để chỉ tạo ra điện áp báo hiệu, và không tạo ra đủ dòng điện để thực sự cấp nguồn cho hầu hết các thiết bị.

Trình biên dịch nào? Không quan trọng. Loại hack phần cứng này thú vị và dễ dàng hơn trong Linux, vì vậy GCC là một lựa chọn tốt.

Tôi làm cách nào để gửi dữ liệu? Phụ thuộc vào cổng và hệ điều hành. USB là phức tạp khủng khiếp cho một dự án đơn giản, vì vậy hãy quên nó đi. Cổng nối tiếp và song song có thể được điều khiển thông qua nhiều giao diện khác nhau. Sở thích của tôi là sử dụng cuộc gọi hệ thống ioctl() trong Linux để điều khiển trực tiếp các chân cổng song song.Dưới đây là thông tin về cách thực hiện điều đó: http://www.linuxfocus.org/common/src/article205/ppdev.html

Tôi có cần bộ vi xử lý không? Không, bạn không cần một bộ vi xử lý trong thiết bị bên ngoài (rõ ràng máy tính của bạn có bộ vi xử lý :-P). Nếu bạn sử dụng cổng song song hoặc nối tiếp, bạn chỉ có thể sử dụng đèn LED và một điện trở hoặc hai và các bộ phận cần thiết để kết nối trực tiếp với đèn LED.

(Ngoài ra: Các Linux Device Drivers cuốn sách, cung cấp miễn phí trên mạng, có thông tin về interfacing thiết bị điện tử đơn giản để song song cổng và viết trình điều khiển hạt nhân cho họ.)

EDIT: Có vẻ là sự nhầm lẫn lớn trong chủ đề này về ý nghĩa của OP, "Tôi có cần một bộ vi xử lý không?" Chính xác, cổng song song một mình có thể lái một đèn LED dựa trên phần mềm trong máy tính. Không cần bộ vi xử lý trong thiết bị. Tuy nhiên, nếu bạn muốn thiết bị có thể tự điều khiển được mà không được kết nối với máy tính, bộ vi xử lý hoặc một số logic số khác là yêu cầu.

1

cho các thao tác nhanh và bẩn, bạn có 2 tùy chọn dễ dàng: cổng nối tiếp hoặc song song. Cổng nối tiếp dễ dàng hơn, nhưng bị hạn chế về số lượng đèn LED.

Để kết nối các đèn LED, bạn cần có đầu nối vỏ (DB25/DB9) của giới tính chính xác, đèn LED và điện trở. Bạn sẽ phải tự tìm kiếm giá trị cho điện trở của mình.

Cổng nối tiếp có các tín hiệu dòng điều khiển nằm dưới sự kiểm soát của lập trình viên. Đó là một vấn đề đơn giản khi xuất các bit chính xác vào thanh ghi MCR (sau khi mở cổng nối tiếp).

Cổng song song hơi khó hơn một chút, trong đó có một chút bắt tay hơn để thực hiện, nhưng nói chung là nguyên tắc tương tự của việc ghi vào sổ đăng ký.

Bạn có thể phải chiến đấu với hệ điều hành của mình để giành quyền kiểm soát cảng.

Sử dụng dòng Tx hơi phức tạp, vì tín hiệu sắp ra là bitstream nối tiếp của dữ liệu được ghi vào thanh ghi truyền. Tôi sẽ dính vào các tín hiệu CTS và DSR.

Để gỡ lỗi nhanh chóng và bẩn, tôi vừa mới ghi vào sổ đăng ký và xem đèn modem.

+0

Tôi phải không đồng ý về cổng nối tiếp và song song: bạn chỉ có thể sử dụng cổng song song làm thiết bị đầu ra TTL thô không bắt tay hay gì cả. Và nó có lợi thế của nhiều chân có sẵn và mức TTL (+ 5V/0V) hơn là mức RS-232 của cổng nối tiếp (phi tiêu chuẩn nhưng thường là + -12V). –

2

Nếu bạn muốn nhấp nháy một đèn LED không có bộ vi xử lý (nghĩa là không có C/C++), một mạch đơn giản sử dụng bộ đếm thời gian 555 sẽ thực hiện thủ thuật. Đây là những dự án chung trong những cuốn sách điện tử mới bắt đầu nuôi cá hoặc bộ dụng cụ bởi vì họ đang thực sự đơn giản và bạn có thể nhận được những phần tại bất kỳ loại Radio Shack của nơi:

Nếu bạn muốn làm điều đó trong phần mềm, như Vlion mentions, mọi thứ phụ thuộc vào phần cứng đang được sử dụng và thiết kế mạch nối lên đèn LED.

Nếu bạn muốn thử và lộn xộn xung quanh với một cái gì đó trên máy tính của bạn, đây là một bài viết về cách nhấp nháy đèn LED được nối với chân trên PC cổng song song: