Bài 2: Cách làm đèn LED nhấp nháy theo yêu cầu

Nội dung chính, cần nắm

Hôm nay, chúng ta sẽ tìm hiểu cách để điều khiển một con đèn led nhấp nháy. Nếu bạn muốn điều khiển nhiều con LED hơn, đừng lo, hãy xem bài forarray, từ đó hãy sáng tạo để hiện thực hóa điều mình mong muốn nhé!

Phần cứng

  • Arduino Uno
  • 01 LED (khuyên dùng loại LED siêu sáng 5mm, bạn chỉ cần ra tiệm mua LED siêu sáng 5mm là người ta bán thôi)
  • 01 điện trở 220 Ohm (người ta không bán lẻ từng con điện trở, vì vậy bạn nên mua luôn một bì điện trở khoảng 100 con (vài nghìn), sau này còn dùng nhiều thì mua luôn 1000 con (< 10 nghìn))

Lắp mạch

Như hình vẽ sau

Mã lập trình và giải thích

Trước tiên, cứ mỗi khi dùng một con LED, chúng ta phải pinMode OUTPUT chân Digital mà ta sử dụng cho con đèn LED. Trong ví dụ ngày hôm nay, chúng ta sử dụng chân LED là chân digital 13. Nên đoạn code sau cần nằm trong void setup()

pinMode(13, OUTPUT);

Để bật một con đèn LED, bạn phải digitalWrite HIGH cho chân số 13 (chân Digtal được kết nối với con LED). Đoạn code này nằm trong void loop()

digitalWrite(13,HIGH);

Dòng lệnh trên sẽ cấp một điện thế là 5V vào chân số Digital 13. Điện thế sẽ đi qua điện trở 220ohm rồi đến đèn LED (sẽ làm nó sáng mà không bị cháy, ngoài ra bạn có thể các loại điện trở khác <= 10kOhm). Để tắt một đèn LED, bạn sử dụng hàm: (xem thêm về LOW)

digitalWrite(13,LOW);

Lúc này điện thế tại chân 13 sẽ là 0 V => đèn LED tắt. Và để thấy được trạng thái bật và tắt của đèn LED bạn phải dừng chương trình trong một khoảng thời gian đủ lâu để mắt cảm nhận được (nói vậy thôi, chứ bạn chỉ cần dừng chương trình trong vài miligiây là thấy được rồi). Vì vậy, hàm delay được tạo ra để làm việc này (Dừng hẳn chương trình bao nhiêu mili giây)!

Sau đây là đoạn code full của bài học hôm nay

/*
  Blink - Nhấp nháy
  Đoạn code làm nhấp nháy một đèn LED cho trước
 */
 
// chân digital 13 cần được kết nối với đèn LED
// và chân digital 13 này sẽ được đặt tên là 'led'. Biến 'led' này có kiểu dữ liệu là int và có giá trị là 13
int led = 13;

// Hàm setup chạy một lần duy nhất khi khởi động chương trình
void setup() {                
  // đặt 'led' là OUTPUT
  pinMode(led, OUTPUT);    
}

// Hàm loop chạy mãi mãi sau khi kết thúc hàm setup()
void loop() {
  digitalWrite(led, HIGH);   // bật đèn led sáng
  delay(1000);               // dừng chương trình trong 1 giây => thây đèn sáng được 1 giây
  digitalWrite(led, LOW);    // tắt đèn led
  delay(1000);               // dừng chương trình trong 1 giây => thấy đèn tối được 1 giây
}

Lời kết

Nếu bạn muốn điều khiển nhiều LED hơn? Kích vào đây!

Chúc vui vẻ và thành công!

lên
76 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Arduino Leonardo là gì ?

Chúng ta đã quá quen thuộc với các board mạch Arduino "truyền thống" như Arduino Uno R3, Nano hay phiên bản tối giản là Arduino Pro Mini. Nếu là một người tinh ý, các bạn sẽ dễ dàng nhận thấy board Arduino Leonardo có kích thước giốn với Arduino, pinout cũng tương tự luôn. Thật vậy, với một người yêu thích Arduino, bạn sẽ có một thắc mắc: Tại sao người ta lại làm ra mạch Arduino Leonardo, trong khi nó "khá giống" với Arduino Uno R3, chứ không muốn nói là giống "hệt", liệu nhà phát triển Arduino quá "rãnh"? Vâng, qua bài viết này, bạn sẽ hiểu được vì sao Arduino Leonardo lại ra đời, khi nào nên dùng nó, khi nào không và các thông số kĩ thuật cơ bản.

lên
8 thành viên đã đánh giá bài viết này hữu ích.

Lập trình kéo thả cho các dự án IoT sử dụng Node-Red và iNut Platform

Người nông dân Việt Nam muốn làm ra những sản phẩm nông sản chất lượng tốt, nhưng ngặt nổi với việc sử dụng các giải pháp ở Việt Nam và thế giới vẫn còn quá đắt so với lợi nhuận ròng. Trong quá trình nghiên cứu để tìm ra con đường ứng dụng những thành quả của Cách mạng công nghiệp 4.0, tôi và đội ngũ iNut Platform đã tìm ra một giải pháp lập trình kéo thả với chi phí gần như bằng không để các đối tác nghiên cứu triển khai hệ thống IoT của riêng họ một cách nhanh chóng nhất và an toàn nhất. Thống nhất lại quy chuẩn phát triển IoT với khả năng cung cấp firmware số lượng lớn và không giới hạn cho mọi dự án ở mọi kích cỡ khác nhau, ứng dụng mọi lĩnh vực không chỉ trong lĩnh vực nông nghiệp.

lên
4 thành viên đã đánh giá bài viết này hữu ích.