Bài 6: Nút nhấn và cách lập trình cho nút nhấn trong Arduino

     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  

  • Cấu tạo nút nhấn
  • Nguyên lý kết nối nút nhấn trong mạch
  • Cách viết code xác định nhấn nút
  • Bài tập ứng dụng nút nhấn

  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.

Điều khiển 1 bóng đèn bằng nut nhấn tích cực mức thấp

     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!

 

 

 


Categories:

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *