Node.js: Node.js Raspberry Pi GPIO - Đèn LED nhấp nháy

Sử dụng GPIO cho đầu ra
Trong phần này, chúng ta sẽ sử dụng Raspberry Pi và GPIO của nó để tạo đèn LED nhấp nháy. Chúng ta sử dụng Node.js với mô-đun bật tắt để điều khiển GPIO. Để bật đèn LED, ta sử dụng chân GPIO làm "Đầu ra" và tạo tập lệnh để bật và tắt (nhấp nháy).
Vậy chúng ta cần những gì?
Trong phần này, chúng ta sẽ tạo một ví dụ đơn giản nơi chúng ta điều khiển đèn LED.
Đẻ làm được điều này, bạn cần:
- Raspberry Pi với Raspian, internet, SSH, đã cài đặt Node.js
- Mô-đun bật tắt cho Node.js
- Breaboard (x1)
- Điện trở 68 Ohm (x1)
- Đèn LED xuyên lỗ (x1)
- Dây cắm có hai đầu (đầu đực - đầu cái) (x2)
Nhấp vào liên kết trong ở phần trên để biết về các thành phần khác nhau.
Lưu ý: Điện trở bạn cần có thể khác với điện trở trong hướng dẫn, tùy thuộc vào loại đèn LED bạn sử dụng. Hầu hết các đèn LED nhỏ chỉ cần một điện trở nhỏ, khoảng 200-500 ohms. Nói chung, giá trị chính xác mà bạn sử dụng không quan trọng, nhưng giá trị của điện trở càng nhỏ thì đèn LED càng sáng.
Xây dựng mạch
Bây giờ là lúc để xây dựng mạch trên Breadboard. Có một lời khuyên dành cho bạn là nếu bạn chưa quen với thiết bị điện tử thì ban nên tắt nguồn Raspberry Pi và sử dụng thảm chống tĩnh điện hoặc dây nối đất để tránh làm hỏng nó.
Tắt Raspberry Pi đúng cách bằng lệnh:
Sau khi đèn LED ngừng nhấp nháy trên Raspberry Pi, rút phích cắm nguồn ra khỏi Raspberry Pi (hoặc tắt dải nguồn được kết nối với nó).
Lưu ý: Chỉ rút phích cắm mà không tắt đúng cách có thể gây hỏng thẻ nhớ.
Nhìn vào hình minh họa trên của mạch.
- Trên Raspberry Pi, kết nối chân cái của dây đầu tiên với Ground. Bạn có thể sử dụng bất kỳ chân GND nào. Trong ví dụ này, chúng ta sẽ sử dụng Chân vật lý 9 (GND, hàng 5, cột bên trái)
- Trên Breadboard, kết nối chân nam của dây đầu tiên với cột Ground Bus ở bên phải. Toàn bộ cột trong bảng mạch khung của bạn được kết nối với nhau, vì vậy hàng nào không quan trọng. Trong ví dụ này gắn nó vào hàng 1.
- Trên Raspberry Pi, kết nối chân cái của dây thứ hai với chân GPIO. Trong ví dụ này, ta sẽ sử dụng Chân vật lý 7 (GPIO 4, hàng 4, cột bên trái)
- Trên Breadboard, kết nối chân nam của dây nhảy thứ hai với hàng Tie-Point mà bạn chọn. Trong ví dụ này, kết nối nó với hàng 5, cột A
- Trên Breadboard, kết nối một chân của điện trở với cột Ground Bus ở phía bên phải. Toàn bộ cột trong bảng mạch khung của bạn được kết nối với nhau, vì vậy hàng nào không quan trọng. Trong ví dụ này, gắn nó vào hàng 5
- Trên Breadboard, kết nối chân còn lại của điện trở với hàng Tie-Point bên phải mà bạn chọn. Trong ví dụ này, ta sẽ sử dụng hàng 5, cột J
- Trên Breadboard, kết nối chân cực âm (chân ngắn nhất) của đèn LED với cùng một hàng Tie-Point mà bạn đã kết nối điện trở từ GND với. Trong ví dụ này đã sử dụng hàng 5, cột F
- Trên Breadboard, kết nối chân anode (chân dài nhất) của đèn LED với cùng một hàng Tie-Point mà bạn đã kết nối jumper từ chân GPIO. Trong ví dụ này, ta đã sử dụng hàng 5, cột E
Bây giờ mạch của bạn đã hoàn tất và các kết nối của bạn sẽ trông khá giống với hình minh họa ở trên và cũng là lúc khởi động Raspberry Pi và viết tập lệnh Node.js để tương tác với nó.
Raspberry Pi và Node.js và đèn LED nhấp háy (Đoạn mã lệnh)
Bây giờ chúng ta đã thiết lập xong mọi thứ, chúng ta có thể viết một đoạn mã lệnh để bật và tắt đèn LED.
Bắt đầu bằng cách tạo một thư mục nơi chúng ta có thể giữ các tập lệnh Node.js của mình:
Chuyển đến thư mục mới :
Bây giờ chúng ta sẽ tạo một tệp mới có tên "blink.js" bằng Nano Editor:
Tệp hiện đang mở và có thể được chỉnh sửa bằng Trình chỉnh sửa Nano tích hợp sẵn.
Viết hoặc dán đoạn mã sau:
var LED = new Gpio(4, 'out'); //use GPIO pin 4, and specify that it is output
var blinkInterval = setInterval(blinkLED, 250); //run the blinkLED function every 250ms
function blinkLED() { //function to start blinking
if (LED.readSync() === 0) { //check the pin state, if the state is 0 (or off)
LED.writeSync(1); //set pin state to 1 (turn LED on)
} else {
LED.writeSync(0); //set pin state to 0 (turn LED off)
}
}
function endBlink() { //function to stop blinking
clearInterval(blinkInterval); // Stop blink intervals
LED.writeSync(0); // Turn LED off
LED.unexport(); // Unexport GPIO to free resources
}
setTimeout(endBlink, 5000); //stop blinking after 5 seconds
Press "Ctrl+x
" to save the code. Confirm with "y
", and confirm the name with "Enter
".
Chạy mã:
Giờ đèn LED có thể nhấp nháy 10 lần / 5 giây trước khi tắt lại!