Thứ Hai, 26 tháng 10, 2026

Vì sao LED không sáng dù code Arduino không báo lỗi?

Đã "vọc" theo phong cách "tào lao" của DatVietLapTrinh thì không sớm thì muộn, lúc này hay lúc khác chúng ta cũng..."tới công chuyện"! Bạn viết code. Bấm Verify. Arduino IDE báo biên dịch thành công. Bạn bấm Upload, chương trình cũng được nạp vào board mà không báo lỗi gì.


Nhưng khi "hớn hở" nhìn sang chiếc LED trên Breadboard...


Tối thui!


Bạn nhìn màn hình, nhìn Arduino, nhìn LED rồi lại nhìn màn hình. Code "tự tin khẳng định"mọi thứ ổn. LED lại "vênh váo"có ý kiến hoàn toàn khác.


Chào mừng bạn đến với một trong những bài học đầu tiên của Robotics: code chạy được không có nghĩa là mạch điện đã được nối đúng.


Trong lập trình thông thường, bạn có thể tìm lỗi trong code. Nhưng khi làm việc với Arduino, lỗi còn có thể nằm ở dây nối, chiều LED, điện trở, chân GPIO, nguồn điện hoặc chính linh kiện...Nói chung là loạn cào cào hết cả lên!


Hôm nay, chúng ta sẽ kiểm tra từng thứ một, từ dễ nhất đến khó hơn. Không cần vội mua linh kiện mới. Trước tiên, hãy tận dụng những gì bạn đang có.



Vì sao code đúng mà LED vẫn không sáng?

Khi Arduino IDE báo biên dịch thành công, điều đó chủ yếu có nghĩa là chương trình đã vượt qua bước kiểm tra cú pháp và biên dịch.

Nó không có nghĩa là Arduino đã kết nối đúng với LED trên Breadboard.

Hãy tưởng tượng bạn viết một tin nhắn hoàn hảo nhưng gửi nhầm địa chỉ. Nội dung không sai, chỉ có điều người cần nhận chẳng bao giờ nhìn thấy nó.

Mạch điện cũng vậy. Chương trình có thể yêu cầu bật LED, nhưng nếu dây nối sai vị trí hoặc dòng điện không đi qua LED đúng cách thì đèn vẫn không sáng.


Một số nguyên nhân thường gặp:

  • LED bị cắm ngược chiều.
  • Hai chân LED cắm vào cùng một nhóm lỗ trên Breadboard.
  • Dây nối nhầm chân Arduino.
  • Quên điện trở hoặc đấu điện trở sai vị trí.
  • Chương trình điều khiển chân khác với chân đang nối LED.
  • Chưa nối GND đúng cách.
  • Arduino chưa thực sự nạp chương trình mới.
  • LED, dây nối hoặc nguồn điện có vấn đề.


Đừng kiểm tra tất cả cùng một lúc. Làm từng bước sẽ dễ tìm ra thủ phạm hơn.



Bước 1: Kiểm tra LED có bị cắm ngược không

Đây là lỗi rất phổ biến khi mới học điện tử.

LED thông thường có hai chân:

  • Chân dài thường là cực dương (anode).
  • Chân ngắn thường là cực âm (cathode).


Phần vỏ có cạnh phẳng thường giúp nhận biết phía cực âm.



Nếu LED đã bị cắt ngắn hai chân hoặc bạn không chắc về chiều của nó, hãy kiểm tra tài liệu của linh kiện thay vì đoán.

LED có phân cực, nghĩa là dòng điện cần đi qua nó theo chiều phù hợp. Nếu cắm ngược, LED thường không sáng trong mạch thử đơn giản.


Cách kiểm tra:

  • Ngắt nguồn điện trước khi tháo hoặc đổi dây.
  • Kiểm tra chân dương và chân âm của LED.
  • Đổi chiều LED nếu cần.
  • Kiểm tra lại toàn bộ mạch trước khi cấp nguồn.


Chua thêm: LED không giống một bóng đèn dây tóc có thể cắm theo chiều nào cũng được trong mạch DC đơn giản. Đảo hai chân của nó có thể khiến cả buổi thực hành biến thành cuộc thi nhìn chằm chằm vào một bóng đèn không sáng.



Bước 2: Kiểm tra vị trí cắm trên Breadboard

Bạn đã học ở bài trước rằng các lỗ trên Breadboard được nối điện theo từng nhóm.

Ở loại Breadboard phổ biến, năm lỗ thuộc nhóm A–E trên cùng một hàng thường nối với nhau. Nhóm F–J cũng vậy, nhưng được ngăn cách bởi khe ở giữa bảng.

Điều này rất quan trọng khi cắm LED.

Nếu hai chân LED cùng nằm trong một nhóm lỗ được nối điện với nhau, bạn có thể đã vô tình nối hai chân LED vào cùng một điểm điện. Khi đó, dòng điện không đi qua LED theo đường mà bạn dự định.


Cách kiểm tra:

  • Ngắt nguồn.
  • Quan sát hai chân LED đang cắm ở đâu.
  • Đảm bảo chúng thuộc các nhóm kết nối phù hợp để tạo thành đường đi của dòng điện.
  • Kiểm tra các dây jumper có thật sự nối đến đúng hàng hay không.


Đừng mặc định rằng các lỗ nằm gần nhau thì chắc chắn được nối điện với nhau. Hãy kiểm tra sơ đồ của đúng loại Breadboard bạn đang sử dụng.



Bước 3: Kiểm tra điện trở

LED cần được giới hạn dòng điện bằng điện trở nối tiếp phù hợp, trừ khi mạch đã có sẵn phương pháp giới hạn dòng tương đương.


Trong bài trước, bạn cho biết mình có:

  • LED 1,5V – 20mA.
  • Hai viên pin AA 1,5V.
  • Điện trở 1kΩ.


Với hai viên pin AA mắc nối tiếp, điện áp danh định là khoảng 3V.


Nếu dùng điện trở 1kΩ, dòng điện ước tính trong điều kiện lý tưởng là:

  • I = (3V - 1,5V) / 1.000Ω
  • I = 0,0015A = 1,5mA


LED có thể sáng ở dòng điện này, nhưng thường sẽ mờ hơn so với khi chạy ở dòng lớn hơn.

Vì vậy, nếu bạn dùng điện trở 1kΩ để thử với hai viên pin AA mà LED sáng mờ, điều đó không nhất thiết là lỗi. Đó là kết quả hợp lý khi điện trở giới hạn dòng khá nhiều.

Tuy nhiên, nếu LED hoàn toàn không sáng, đừng vội kết luận điện trở 1kΩ là nguyên nhân. Hãy tiếp tục kiểm tra chiều LED, đường đi của dòng điện, tình trạng pin và các kết nối.


Lưu ý: Không tháo điện trở ra chỉ để thử xem LED có sáng hơn không. Nối LED trực tiếp vào nguồn mà không có giới hạn dòng phù hợp có thể làm hỏng LED.



Bước 4: Kiểm tra bạn đã nối đúng chân Arduino chưa

Giả sử bạn dùng Arduino Uno và muốn điều khiển LED bằng chân digital số 12 (bạn có thể dùng các chân 0-13)


Trong code, bạn khai báo:

const int ledPin = 12;


Nhưng nếu dây thực tế lại cắm vào chân số 7 thì sao?

Chương trình vẫn có thể biên dịch thành công. Arduino không tự biết bạn đã cắm nhầm dây ở đâu.

Kết quả là LED không hoạt động theo mong đợi.


Cách kiểm tra:

  • Đọc số chân được khai báo trong code.
  • Nhìn lại vị trí dây nối trên board.
  • Đảm bảo dây tín hiệu thực sự cắm vào đúng chân.
  • Kiểm tra đầu dây có tiếp xúc chắc chắn không.


Nếu bạn đổi chân kết nối, hãy cập nhật code cho phù hợp.



Bước 5: Kiểm tra code có thực sự điều khiển LED không

Đây là ví dụ đơn giản để bật tắt LED nối với chân số 8 qua điện trở 220Ω.


Sơ đồ kết nối:

Arduino D8 → Điện trở 220Ω → Chân dương LED → Chân âm LED → GND


Ví dụ này giả định bạn dùng board có chân digital mức logic 5V, như Arduino Uno tiêu chuẩn.


const int ledPin = 8;



void setup() {

  pinMode(ledPin, OUTPUT);

}



void loop() {

  digitalWrite(ledPin, HIGH);

  delay(1000);



  digitalWrite(ledPin, LOW);

  delay(1000);

}



Chương trình này yêu cầu LED sáng trong một giây, sau đó tắt trong một giây rồi lặp lại.

Hãy chú ý ba dòng quan trọng.


pinMode(ledPin, OUTPUT);

Dòng này đặt chân số 8 ở chế độ xuất tín hiệu.


digitalWrite(ledPin, HIGH);

Dòng này đưa chân số 8 lên mức HIGH để bật LED trong cách mắc đang dùng.


digitalWrite(ledPin, LOW);

Dòng này đưa chân số 8 xuống mức LOW để tắt LED.


Nếu bạn đã nối LED vào chân số 8 nhưng code lại điều khiển chân số 7, LED sẽ không hoạt động theo ý muốn.


Chua thêm: Arduino không có khả năng đọc suy nghĩ của người lập trình. Bạn cắm dây ở chân 8 nhưng viết code cho chân 7 thì nó vẫn làm theo code, chứ không tự nói: "Bạn ơi, hình như bạn cắm nhầm rồi!"



Bước 6: Thử LED tích hợp trên Arduino

Đây là một cách hữu ích để tách lỗi phần mềm khỏi lỗi mạch điện bên ngoài.

Nhiều board Arduino có LED tích hợp sẵn trên board, thường được điều khiển qua hằng số LED_BUILTIN. Trên Arduino Uno phổ biến, LED tích hợp thường gắn với chân digital 13.


Bạn có thể thử chương trình sau mà không cần nối thêm LED ngoài:


void setup() {

  pinMode(LED_BUILTIN, OUTPUT);

}



void loop() {

  digitalWrite(LED_BUILTIN, HIGH);

  delay(1000);



  digitalWrite(LED_BUILTIN, LOW);

  delay(1000);

}


Nếu LED tích hợp nhấp nháy, đó là dấu hiệu tốt: board đã thực thi được chương trình thử nghiệm này.

Khi đó, bạn có thể tập trung kiểm tra mạch LED bên ngoài, gồm dây nối, điện trở, chiều LED và chân tín hiệu.

Tuy nhiên, LED tích hợp không có trên mọi board, và một số board có cách ánh xạ chân khác nhau. Hãy xem tài liệu của đúng mẫu board bạn đang dùng.

Nếu LED tích hợp không nhấp nháy, hãy kiểm tra xem bạn đã chọn đúng board và cổng trong Arduino IDE chưa, sau đó thử nạp lại chương trình.



Bước 7: Kiểm tra dây nối và GND

Trong mạch điện, dòng điện cần có đường đi phù hợp từ nguồn qua các linh kiện và trở về nguồn.


Với ví dụ LED ngoài điều khiển bằng Arduino, đường đi dự kiến là:

D8 → Điện trở → LED → GND


Nếu dây GND không nối đúng, bị lỏng hoặc cắm nhầm vị trí, mạch có thể không hoạt động.

Một lỗi khác là dây jumper nhìn như đã cắm vào đúng hàng nhưng thực tế lại lệch một lỗ. Breadboard có nhiều lỗ gần nhau nên chuyện này xảy ra thường xuyên.


Cách kiểm tra:

  • Ngắt nguồn trước khi chỉnh dây.
  • Kiểm tra từng đầu dây.
  • Đối chiếu đường đi của mạch với sơ đồ.
  • Kiểm tra GND có được nối đúng hay không.
  • Nếu có đồng hồ vạn năng, dùng chế độ đo thông mạch khi mạch đã ngắt nguồn để kiểm tra các đường kết nối cần thiết.


Không bao giờ dùng chế độ đo thông mạch trên mạch đang được cấp điện.



Bước 8: Kiểm tra việc nạp chương trình

Arduino IDE có thể biên dịch code thành công, nhưng bạn vẫn cần phân biệt hai việc:

  • Verify: kiểm tra và biên dịch chương trình.
  • Upload: nạp chương trình vào board.


Nếu chỉ bấm Verify mà chưa Upload, Arduino vẫn có thể đang chạy chương trình cũ.

Ngoài ra, hãy chú ý thông báo ở khu vực dưới cùng của Arduino IDE sau khi Upload. Nếu quá trình nạp gặp lỗi, bạn cần xử lý lỗi đó trước.


Một số việc nên kiểm tra:

  • Đã chọn đúng loại board.
  • Đã chọn đúng cổng kết nối.
  • Cáp USB hỗ trợ truyền dữ liệu, không chỉ cấp nguồn.
  • Quá trình Upload hoàn tất thành công.


Đừng vội thay LED hoặc mua board mới khi chưa xác nhận chương trình đã được nạp đúng.



Một quy trình tìm lỗi đơn giản

Khi LED không sáng, hãy kiểm tra theo thứ tự này:

  • Xác nhận chương trình đã Upload thành công.
  • Kiểm tra code đang điều khiển đúng chân.
  • Kiểm tra chiều LED.
  • Kiểm tra vị trí cắm trên Breadboard.
  • Kiểm tra điện trở và các dây nối.
  • Kiểm tra GND và nguồn điện.
  • Thử LED tích hợp trên board nếu có.
  • Nếu vẫn không tìm ra nguyên nhân, kiểm tra từng linh kiện bằng dụng cụ đo phù hợp.


Làm từng bước sẽ dễ khoanh vùng lỗi hơn là thay dây, đổi code và di chuyển linh kiện cùng lúc. Nếu bạn thay đổi năm thứ một lượt rồi LED sáng trở lại, bạn vẫn chưa biết chính xác điều gì đã sửa được lỗi.



Những hiểu lầm người mới học thường gặp


"Code không báo lỗi thì mạch chắc chắn đúng."

Không đúng. Trình biên dịch không thể biết dây ngoài đời của bạn đang cắm ở đâu.


"LED không sáng nghĩa là LED đã hỏng."

Chưa chắc. Có thể LED bị ngược chiều, chân cắm không tiếp xúc hoặc đường điện chưa hoàn chỉnh.


"Điện trở 1kΩ làm LED không thể sáng."

Không hẳn. Với nguồn danh định 3V và LED 1,5V, điện trở 1kΩ cho dòng ước tính khoảng 1,5mA. LED có thể sáng ở dòng này, dù độ sáng có thể thấp.


"Cứ bỏ điện trở ra thử là biết ngay."

Đừng làm vậy. LED cần được giới hạn dòng phù hợp. Thử nghiệm không an toàn có thể khiến linh kiện hỏng, và bạn cũng không cần mạo hiểm để tìm lỗi.



Checklist "chuẩn không cần chỉnh"


  • Code đã được Upload thành công.
  • Chân trong code trùng với chân đang nối dây.
  • LED được cắm đúng chiều.
  • Hai chân LED không bị cắm vào cùng một nhóm lỗ dẫn điện.
  • Điện trở nối tiếp có giá trị phù hợp.
  • Dây GND và dây tín hiệu được nối đúng.
  • Nguồn điện còn hoạt động.
  • Đã kiểm tra các đầu dây và vị trí cắm.
  • Đã thử LED tích hợp nếu board có hỗ trợ.


Nếu đã kiểm tra các mục trên mà LED vẫn không sáng, lúc đó mới nên kiểm tra sâu hơn bằng đồng hồ vạn năng hoặc thử từng linh kiện với một mạch đã biết là hoạt động tốt.



Câu hỏi thường gặp


Vì sao Arduino IDE báo "Done compiling" nhưng LED không sáng?

Thông báo đó cho biết chương trình đã biên dịch xong, không xác nhận rằng mạch điện được nối đúng. Hãy kiểm tra việc Upload, chân điều khiển, LED, điện trở và dây nối.


Dùng điện trở 1kΩ có làm hỏng LED không?

Với mạch hai pin AA mắc nối tiếp và LED 1,5V trong ví dụ này, điện trở 1kΩ giới hạn dòng xuống khoảng 1,5mA theo tính toán danh định. LED có thể sáng mờ. Hãy vẫn kiểm tra thông số linh kiện và điện áp nguồn thực tế.


Khi nào nên dùng đồng hồ vạn năng?

Khi đã kiểm tra code và các kết nối cơ bản nhưng vẫn chưa tìm ra lỗi, đồng hồ có thể giúp bạn kiểm tra điện áp nguồn, tính liên tục của dây và một số vấn đề về kết nối. Luôn ngắt nguồn trước khi đo thông mạch.



Bạn có thể cũng đang gặp những vấn đề này


Arduino là gì? 

Breadboard là gì? 

Relay là gì? 

Servo và Stepper khác nhau thế nào?

Sensor là gì?