Bài 11: Xác định trạng thái của một nút nhấn (button) - INPUT_PULLUP

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

Tại bài viết Bài 3: Xác định trạng thái của một nút nhấn (button), bạn đã biết được cách để đọc tín hiệu từ một button bằng cách thiết đặt chân digital là INPUT. Hôm nay, ta cũng đào xới vấn đề đọc trạng thái của một nút nhấn, nhưng đi theo một hướng khác (không dùng điện trở như trong Bài 3). Cách làm này đơn giản hơn và thực tế thường được ứng dụng.

Phần cứng

Lắp mạch

Click vào ảnh để xem kích thước thật và lắp mạch bạn nhé

Lập trình và giải thích

Trước tiên, ta cần phải biết sự khác nhau của INPUT_PULLUPINPUT, nếu bạn chưa rõ thì cần tham khảo đường dẫn sau. Thực chất INPUT_PULLUP cũng như là INPUT thôi, nhưng cái điện trở mắc ngoài như ở INPUT được "thiết đặt sẵn" bên trong con vi điều khiển của Arduino và khi bạn pinMode một chân là INPUT_PULLUP thì bạn đã kích hoạt cái điện trở này lên. Và sau khi pinMode các chân digital là INPUT_PULLUP, nếu bạn digitalRead các chân này thì sẽ nhận được giá trị HIGH (điều này ngược lại với hướng dẫn tại bài 3). Nếu bạn nhấn button xuống thì chân  digitalRead sẽ trả về LOW. Bởi vì nguyên lý chỉ rất đơn giản như vầy thôi, nếu trong khuôn khổ bài viết này, tôi giải thích cặn cẽ tại sao lại như thế thì sẽ làm rối các bạn và không cần thiết. Để hiểu rõ nó hoạt động trong thực tế như thế nào thì hãy chạy đoạn mã dưới đây!

void setup(){
  // khởi động cổng Serial ở baudrate 9600
  Serial.begin(9600);
  // Cài đặt các chân digital
  pinMode(8, INPUT_PULLUP); //INPUT_PULLUP chân button
  pinMode(3, OUTPUT); // OUTPUT chân led

}

void loop(){
  //đọc tín hiệu chân digital
  int sensorVal = digitalRead(8);
  //Xuất tín hiệu ra serial
  Serial.println(sensorVal);
 

  if (sensorVal == HIGH) { //nếu chưa nhấn
    digitalWrite(3, LOW); // tắt đèn
  }  else {  // nếu đã nhấn 
    digitalWrite(3, HIGH);// bật đèn
  }
}
lên
28 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ả

iNut platform là gì?

Nhắc tới dòng mạch iNut dùng để lập trình, cái đầu tiên mà người ta thường nói tới chính là dòng iNut Cảm biến – một trong các mạch cho việc lập trình IoT. Hiện dòng mạch này đã phát triển tới thế hệ thứ 2 (iNut Sensor R2). Bạn sẽ bắt đầu đến với nền tảng iNut Platform thông qua mạch này. Bạn có thể dùng firmware iNut cảm biến cũng được nhưng bạn nên dùng bo mạch iNut Sensor R2 vì nó rất gọn và tương thức với Arduino Uno và Arduino Mega.

lên
4 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 

Giấy phép nguồn mở, giấy phép tài liệu mở - Quyền lợi, nghĩa vụ của bạn trong thế giới nguồn mở

Trong thời đại số này, việc tiếp cận và sử dụng những tri thức đã không còn khó khăn, bạn chỉ cần một trình duyệt và một máy tính cùng với đường truyền mạng mà đã có thể truy cập vào nguồn tri thức rộng lớn trên thế giới. Nhưng, có bao giờ bạn tự nghĩ, ngoài quyền lợi cực lớn là được tiếp xúc với tri thức mở và được tác giả hỗ trợ khi gặp lỗi, bạn có trách nhiệm và nghĩa vụ gì? Và khi là bạn là tác giả, bạn sẽ được những quyền gì và với việc ý thức được quyền của mình, bạn sẽ cảm thấy tự tin hơn trong thế giới nguồn mở. Bạn sẽ hiểu được: không phải thứ gì mình có source thì nó đều là "nguồn mở", không phải thứ gì cho mình dùng miễn phí đều là nguồn mở,... Ý thực được điều này, giúp bạn đi nhanh và xa trong thế giới nguồn mở thế giới!

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