Lập trình Arduino không cần viết code - Phần 6: Điều khiển led bằng nút nhấn kiểu 2

Đây là phần 6 của chuỗi bài viết "Lập trình arduino không cần viết code".

- Xem lại phần 5 tại đây

​Ở 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:

int dem=0;
boolean buttonStatus=1;

void setup(){
    pinMode(8,INPUT_PULLUP);
    pinMode(7,OUTPUT);  
}

void loop(){
    if(digitalRead(8)!=buttonStatus){
        dem += 1;
        buttonStatus = digitalRead(8);
    }
    if(fmod(dem,4)==0){
        digitalWrite(7,0);
    }else{
        digitalWrite(7,1);
    }
}

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ả

lên
27 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

Bộ điều khiển PID - ứng dụng phần 2 - xe dò line dùng thuật toán PID

Tiép nối bài viết về xe dò line cảm ơn Đỗ Hữu Toàn đã viết hộ mình phần 4. hôm nay mình sẽ làm cho chiếc xe dò line đi mượt và có hồn hơn 

lên
34 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Lập trình Arduino không cần viết code - Phần 16: Lập trình Arduino thời gian thực - Lập trình sự kiện

Đây là phần 16 của chuỗi bài viết "Lập trình Arduino không cần viết code"

- Xem lại phần 15 tại đây

Xin chào các bạn, hôm nay mình sẽ cho các bạn thấy được sự thú vị nhất của phần mềm lập trình kéo thả mBlock. Đó chính là lập trình thời gian thực. Từ việc lập trình thời gian thực này ta có thể tạo ra được các game hay điều khiển Arduino bằng ứng dụng đồ họa, bởi đơn giản mBlock cũng hỗ trợ tạo ra game hay đồ họa. HeHe, bạn cũng có thể nói rằng nó là sự kết hợp 2 trong 1 của Processing và Arduino. Tất nhiên là ta chỉ làm được khi bạn kết nối Arduino với mBlock.

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

[Khám phá thế giới IoT với bSmart] Bài 0 - Giới thiệu, giải thích, thư viện, hỗ trợ,....

   Xin chào các bạn, xu hướng vạn vật kết nối (Internet of Thing) đang đến gõ cửa từng nhà và chứng tỏ sức ảnh hưởng. Việc đón đầu xu hướng IoT là một điều tất yếu dành cho các nhà phát triển như chúng ta khi thế giới đang tiến nhanh trong cuộc cách mạng 4.0. Để đồng hành và giúp đỡ mọi người làm quen, bước đi trên con đường tiến vào thế giới IoT ấy, mình xin được giới thiệu đến các bạn chuỗi bài viết "Khám phá thế giới IoT cùng bSmart". Hi vọng qua chuỗi bài viết này, mình sẽ giúp đỡ được nhiều bạn trẻ hơn có cùng đam mê công nghệ có thể bước đầu nắm vững và tự sáng tạo cho riêng mình một dự án IoT thật độc đáo.

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