So sánh 2 cách lập trình bằng mBlock và Arduino IDE cho nút nhấn

15/06/2019
so-sanh-2-cach-lap-trinh-bang-mblock-va-arduino-ide-cho-nut-nhan

Xin chào các bạn! Hôm nay chúng ta sẽ cùng tìm hiểu về cách điều khiển led bằng một cái nút nhấn (Loại đàn hồi nha).

Mục tiêu: Hướng dẫn các bạn sử dụng nút nhấn(Button) bằng kiểu pin INPUT_PULLUP để điều khiển.

INPUT_PULLUP là gì?

Đây là một kiểu pin dùng trong hàm pinMode, dùng để đọc điện áp tại pin. Khi một pin được khai báo là kiểu này thì: nếu như pin này không được nối thì sẽ mang điện áp cao và khi nó được nối với một điện thế nào đó thì pin này sẽ mang điện thế đó (Nối với cực âm thì sẽ mang điện thế âm, nối cực dương thì mang điện thế dương).

Thực hành

Chuẩn bị

  • Arduino ( loại nào cũng được )
  • Nút nhấn
  • Led nối tiếp với điện trở 220 ôm
  • Cần thiết thì cần thêm 1 điện trở 1K -> 10K ôm

Lắp như sơ đồ sau, mình quên mắc điện trở cho led rùi, sorry,để đảm bảo an toàn bạn nên mắc nối tiếp điện trở từ 1K -> 10K ôm với nút nhấn.

Lập trình bằng mBlock

Nhớ chọn chế độ Arduino Mode nha. Sau đó lập trình theo sơ đồ sau (Không hiểu thì xem lại phần 3,4 nha)

Vì mBlock không có sẵn chế độ INPUT_PULLUP nên cần chỉnh code bằng tay một tí. Chọn Edit with Arduino IDE.

Trong hàm setup, tại dòng pinMode(7,INPUT), thay chữ INPUT thành INPUT_PULLUP.

Xong, up code (Up bằng arduino IDE nha, chứ không phải bằng mBlock).

Lập trình bằng Arduino IDE

Phần cứng thì như trên, phần code thì như dưới :))

  1. void setup(){
  2. pinMode(8,INPUT_PULLUP);
  3. pinMode(7,OUTPUT);
  4. }
  5.  
  6. void loop(){
  7.  
  8. if(digitalRead(8)==0){
  9. digitalWrite(7,1);
  10. }else{
  11. digitalWrite(7,0);
  12. }
  13. }

Xong, cho lên dĩa luôn.

Kết luận

Như vậy là chúng ta vừa tìm hiểu xong cách điều khiển led bằng nút nhấn với kiểu pin INPUT_PULLUP. Tuy nhiên nó có 1 điểm yếu đó là phải giữ thì mới sáng led. Ở những phần sau, mình sẽ hướng dẫn cách chỉ cần nhấn thả 1 lần là sáng và nhấn thả 1 lần nữa để tắt. Chúc các bạn thành công. Xin cảm ơn

 

Ở phần trước, mình đã hướng dẫn lập trình điều khiển led bằng nút nhấn kiểu 1, tuy nhiên kiểu này có 1 điểm yếu là giữ nút thì mới sáng led. Và ở phần này, mình sẽ nói đến kiểu 2 khắc phục nhược điểm trên. Tuy nhiên có thể nó cũng không phải là nhược điểm nếu như bạn cần nó vào 1 việc gì đó.

Nguyên lí hoạt động

Các bạn hãy để ý kĩ sẽ thấy rằng khi nút nhấn được nhấn 1 lần thì sẽ có 2 lần thay đổi trạng thái: khi nhấn xuống 2 mút của nút được nối là một, khi thả ra 2 mút hở là hai :3. Lợi dụng điều này, ta sẽ tạo 1 biến để đếm số lần thay đổi trạng thái, khi nhấn lần 1(Bật) số lần thay đổi trạng thái là 2 và đèn sáng, khi nhấn lần 2(Tắt) số lần thay đổi là 4, cứ như vậy ta nhận thấy nếu ta nhấn để bật thì số lần thay đổi trạng thái không chia hết cho 4 và khi nhấn để tắt thì số lần thay đổi trạng thái chia hết cho 4 (Lúc đầu số lần thay đổi trạng thái là 0 chia cho 4 dư 0 nên cũng tính là chia hết cho 4 và lúc đầu sẽ tắt).

Thực hành

Chuẩn bị 

  • Arduino
  • Led nối tiếp 1 điện trở 220 ôm
  • Nút nhấn (Loại đàn hồi)
  • Điện trở 1K - 10K ôm nối tiếp nút nhấn để đảm bảo an toàn cho mạch (Không nhất thiết là phải có)

Sơ đồ mạch, hehe lần này không quên mắc điện trở nữa đâu nhé :D

Lập trình bằng mBlock

Chọn Arduino Mode và lập trình theo sơ đồ sau, không hiểu chỗ nào cmt ngay nha!

Vì ta dùng INPUT_PULLUP cho chân nút nhấn nên cần chỉnh lại code một tí, không hiểu đoạn này thì xem lại phần 5 nha.

Thay dòng pinMode(8,INPUT); thành pinMode(8,INPUT_PULLUP);

Up code và hưởng thụ :))

Lập trình bằng Arduino IDE

Phần cứng như đã nói, code thì cái này:

 
  1. int dem=0;
  2. boolean buttonStatus=1;
  3.  
  4. void setup(){
  5. pinMode(8,INPUT_PULLUP);
  6. pinMode(7,OUTPUT);
  7. }
  8.  
  9. void loop(){
  10. if(digitalRead(8)!=buttonStatus){
  11. dem += 1;
  12. buttonStatus = digitalRead(8);
  13. }
  14. if(fmod(dem,4)==0){
  15. digitalWrite(7,0);
  16. }else{
  17. digitalWrite(7,1);
  18. }
  19. }

Kết luận

Như vậy là qua 2 phần 5 và 6 ta đã biết được 2 cách để điều khiển led bằng nút nhấn. Mình hi vọng rằng chuỗi bài này sẽ mang lại nhiều kiến thức mới và giúp cho các bạn newbie. Chúc các bạn thành công và lập trình vui vẻ.

Đây là thành quả

Bình luận
Nội dung này chưa có bình luận, hãy gửi bình luận đầu tiên của bạn.
VIẾT BÌNH LUẬN CỦA BẠN