Node.js: Node.js Raspberry Pi GPIO - Đèn LED và nút bấm

Sử dụng cả Đầu vào và Đầu ra
Trong phần trước, chúng ta đã học cách sử dụng Raspberry Pi và GPIO của nó để tạo đèn LED nhấp nháy. Để làm được điều đó, chúng ta đã sử dụng chân GPIO làm "Đầu ra". Trong chương này, chúng ta sẽ sử dụng một chân GPIO khác làm "Đầu vào". Thay vì nhấp nháy trong 5 giây như phần trước thì lần này sẽ hướng dẫn, đèn LED sáng lên khi bạn nhấn một nút được kết nối với breadboard.
Vậy chúng ta cần gì?
Trong phần này, chúng ta sẽ tạo một ví dụ đơn giản trong đó chúng ta điều khiển đèn LED bằng Nút ấn.
Để 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
- Breadboard (x1)
- Điện trở 68 Ohm (x1)
- Điện trở 1k Ohm (x1)
- Đèn LED xuyên lỗ (x1)
- Nút ấn (x1)
- Dây cắm có hai đầu (đầu đực- đầu cái) (x4)
- Dây cắm có hai đầu (đầu đực- đầu đực) (x1)
Nhấp vào liên kết trong danh sách trên để biết mô 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 đang sử dụng, 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.
(Trong phần này, chúng ta sẽ xây dựng trên mạch mà chúng ta đã xây dựng trong chương trước, vì vậy bạn sẽ nhận ra một số phần trong danh sách trên)
Xây dựng mạch
Bây giờ là lúc để xây dựng mạch trên Breadboard (theo hướng dẫn). Chúng ta sẽ sử dụng mạch mà chúng ta đã tạo trong phần trước làm điểm bắt đầu.Nếu bạn chưa quen với thiết bị điện tử, có một lời khuyễn dành cho bạn là 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 khỏi Raspberry Pi (hoặc vặn dải nguồn mà nó được kết nối).
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.
Bắt đầu với mạch chúng ta đã tạo trong phần trước:
- Trên Raspberry Pi, kết nối chân cái của dây với chân nguồn 5V. Trong ví dụ này đã sử dụng Chân vật lý 2 (5V, hàng 1, cột bên phải).
- Trên Breadboard, nối chân đực của dây nối với nguồn 5V, với Power 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, chúng tôi đã đính kèm nó vào hàng 1.
- Trên Breadboard, kết nối nút ấn sao cho nó vừa với Rãnh. Trong ví dụ này, nó kết nối với hàng 13 và 15, cột E và F.
- Trên Breadboard, kết nối một chân của điện trở 1k ohm với cột Ground Bus ở bên phải và chân còn lại với hàng Tie-Point bên phải nơi nó kết nối với một trong các chân bên phải của nút ấn. Trong ví dụ này đã gắn một mặt vào hàng Tie-Point 13, cột J và mặt còn lại vào Ground Bus gần nhất.
- Trên Breadboard, kết nối một dây đực - đực từ Power Bus bên phải, đến hàng Tie-Point bên phải kết nối với chân còn lại của nút ấn. Trong ví dụ này đã gắn một bên vào hàng Tie-Point 15, cột J và bên kia vào lỗ Power Bus gần nhất.
- Trên Raspberry Pi, kết nối chân cái của dây với chân GPIO. Trong ví dụ này đã sử dụng Chân vật lý 11 (GPIO 17, hàng 6, cột bên trái).
- Trên Breadboard, kết nối chân nam của dây với hàng Tie-Point bên trái, chân Nút ấn nằm ngay trên chân kết nối Ground . Trong ví dụ này đã đính kèm nó vào hàng 13, cột A.
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.
Bây giờ 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 LED và đoạn mã lệnh của nút ấn
Chuyển đến thư mục "nodetest" và tạo một tệp mới có tên "buttonled.js":
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 như sau:
var LED = new Gpio(4, 'out'); //use GPIO pin 4 as output
var pushButton = new Gpio(17, 'in', 'both'); //use GPIO pin 17 as input, and 'both' button presses, and releases should be handled
pushButton.watch(function (err, value) { //Watch for hardware interrupts on pushButton GPIO, specify callback function
if (err) { //if an error
console.error('There was an error', err); //output error message to console
return;
}
LED.writeSync(value); //turn LED on or off depending on the button state (0 or 1)
});
function unexportOnClose() { //function to run when exiting program
LED.writeSync(0); // Turn LED off
LED.unexport(); // Unexport LED GPIO to free resources
pushButton.unexport(); // Unexport Button GPIO to free resources
};
process.on('SIGINT', unexportOnClose); //function to run when user closes using ctrl+c
Nhấn "Ctrl+x" để lưu mã. Xác nhận bằng "y" và xác nhận tên bằng "Enter".
Chạy mã:
Bây giờ, đèn LED sẽ bật khi bạn nhấn nút và tắt khi bạn nhả nút.
Kết thúc chương trình bằng Ctrl+c.