Giỏ hàng hiện tại chưa có sản phẩm nào!
Giỏ hàng hiện tại chưa có sản phẩm nào!
Nút nhấn là một đối tượng cơ bản được sử dụng trong mạch điện tử để yêu cầu chương trình thực hiện một chức năng nào đó. Như vậy, cách thiết kế và nối dây như thế nào để cho arduino có thể biết được trạng thái nút nhấn và thực hiện nội dung như mong muốn. Nút nhấn và cách lập trình cho nút nhấn trong arduino là bài viết hướng dẫn cả phần cứng và phần mềm để sử dụng cho nút nhấn.
NỘI DUNG BÀI VIẾT
|
1. CẤU TẠO NÚT NHẤN
Nguyên lý cơ bản nút nhấn chính là công tắc nhấn nhả. Nghĩa là khi bạn nhấn thì sẽ được kết nối từ chân A đến chân B của nút nhấn, và khi không còn nhấn nữa thì sẽ ngắt kết nối.
Nút nhấn trên thực tế sẽ có 4 chân, nghĩa là sẽ có 2 cặp chân, trong đó chân A và chân D đã kết nối chung nhau, chân B và chân C kết nối chung nhau.
2. NGUYÊN LÝ KẾT NỐI NÚT NHẤN TRONG MẠCH
Đối với nút nhấn chúng ta có hai cách đấu nối mạch. Hay nói cách khác là chúng ta có 2 dạng mức tích cực. Đó là tích cực mức thấp và tích cực mức cao.
Tích cực mức thấp nghĩa là khi chúng ta chưa nhấn phím thì điện áp tại chân nối với nút nhấn sẽ là 1. Và khi nhấn phím thì điện áp đọc được từ chân tín hiệu là 0. Ngược lại, khi thực hiện nút nhấn với dạng tích cực mức cao, thì khi chưa nhấn tín hiệu đọc được là 0, và khi nhấn thì tín hiệu đọc được là 1.
Ứng với 2 trường hợp sẽ có cách đấu dây khác nhau, tuy nhiên điều cần phải chú ý là dù cách nào đi nữa thì các bạn cần phải có điện trở để tránh tình trạng ngắn mạch khi nhấn phím.
3. CÁCH VIẾT CODE XÁC ĐỊNH NHẤN NÚT
Có 2 cách lập trình để kiểm tra nút nhấn có được nhấn hay không. Cho dù sử dụng cách nào thì bạn cũng cần phải kết hợp với hàm điều kiện if() mới có thể xác định được khi nào có nhấn nút.
Cách 1: tùy vào mạch kết nối dạng tích cực mức thấp hay cao để biết trạng thái nhấn nút là 0 hay 1. Từ đó xét điều kiện đọc vào từ tín hiệu.
Giả sử tôi đang thiết kế nút nhấn theo dạng tích cực mức thấp theo như sơ đồ thiết kế bên trên. Như vậy với cách 1, chúng ta sẽ có đoạn code viết chương trình nhấn nút để bật tắt 1 bóng đèn led như sau:
int BUT = 2; int LED = 12; int TT=0; //Trạng thái 0 là tắt led int NUTNHAN; void setup(){ pinMode(BUT, INPUT_PULLUP); pinMode(LED, OUTPUT); } void loop(){ NUTNHAN = digitalRead(BUT); if (NUTNHAN == 0) // Có nhấn nút { if (TT == 00) { //Nếu led đang tắt thì bật led digitalWrite(LED, HIGH); delay(500); TT =1; } else { //Nếu led đang sáng thì tắt led digitalWrite(LED, LOW); delay(500); TT =0; } } }
Cách 2: các bạn không cần quan tâm đến cách kết nối phần cứng là tích cực mức cao hay thấp. Các bạn chỉ cần xét trạng thái của nút nhấn hiện tại có thay đổi so với trạng thái ban đầu hay không. Nếu trạng thái thay đổi nghĩa là đã có nhấn nút. Từ đó bạn sẽ tiến hành thực hiện lệnh như mong muốn.
Ví dụ với sơ đồ kết nối giống như cách 1. Chúng ta không quan tâm là tích cực mức thấp hay mức cao của nút nhấn. Đoạn code sau đây cũng có thể được áp dụng để bật tắt 1 bóng đèn led.
int BUT = 2; int LED = 12; int TT=0; //Trạng thái 0 là tắt led int NUTNHAN; int NUTNHAN; //Trạng thái nút nhấn int lastNUTNHAN; //Trạng thái trước của nút nhấn void setup(){ pinMode(BUT, INPUT_PULLUP); pinMode(LED, OUTPUT); } void loop(){ NUTNHAN= digitalRead (BUT); if( NUTNHAN != lastNUTNHAN) //Có nhấn nút { if (TT == 00) { //Nếu led đang tắt thì bật led digitalWrite(LED, HIGH); delay(500); TT =1; } else { //Nếu led đang sáng thì tắt led digitalWrite(LED, LOW); delay(500); TT =0; } } lastNUTNHAN = NUTNHAN; //Lưu trạng thái cũ nút nhấn }
4. BÀI TẬP ỨNG DỤNG NÚT NHẤN
Bài 1. Viết chương trình điều khiển 4 led đơn bằng 2 nút nhấn ON và OFF. Khi cấp điện 4 led tắt, bấm ON thì 4 led sáng, bấm OFF thì 4 led tắt.
Linh kiện cần có để thực hiện
Linh kiện | Số lượng |
Bo Arduino Uno R3 | 1 |
Điện trở 1K ohm | 6 |
Đèn led | 6 |
Nút nhấn | 2 |
Điện trở 100 ohm | 2 |
Sơ đồ kết nối
Đoạn chương trình thực hiện được viết như sau:
int ON, OFF; int LED1 = 10; int LED2 = 11; int LED3 = 12; int LED4 = 13; int tt=0; void setup() { pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); pinMode(ON, INPUT_PULLUP); pinMode(ON, INPUT_PULLUP); } void loop() { //Bat ON = digitalRead(2); OFF = digitalRead(3); if(ON==0) tt = 1; if (OFF ==0) tt =0; if(tt==1) { digitalWrite(LED1, HIGH); digitalWrite(LED2, HIGH); digitalWrite(LED3, HIGH); digitalWrite(LED4, HIGH); delay(200); } else { digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); digitalWrite(LED4, LOW); delay(200); } }
Trong bài viết này tôi đã chia sẽ cho các bạn những kiến thức về nút nhấn và cách lập trình cho nút nhấn trong Arduino. Đây là những kiến thức cơ bản nhất để cho các bạn ứng dụng với những yêu cầu phức tạp hơn. Chúc các bạn thành công!
Để lại một bình luận