Professional Documents
Culture Documents
Bài 3 - Xác Định Trạng Thái Của Một Nút Nhấn (Button) - Cộng Đồng Arduino Việt Nam
Bài 3 - Xác Định Trạng Thái Của Một Nút Nhấn (Button) - Cộng Đồng Arduino Việt Nam
Vút bay...
Bài viết có thể chưa rõ ràng. Hãy đóng góp thông qua việc bình luận.
﴾/﴿
ĐĂNG NHẬP
Bài 3: Xác định trạng thái của một nút nhấn
﴾button﴿
Connect
Bài viết này sẽ hướng dẫn bạn cách xác định trạng thái của một nút nhấn ﴾nhấn / thả﴿, mô tả cách sử dụng một công cụ giao
Đăng nhập
tiếp giữa Arduino với máy tính ﴾cũng như với mạch Arduino khác﴿ để xem trạng thái nút nhấn vừa đọc được.
﴾http://arduino.vn/bai‐viet/80‐bai‐3‐xac‐dinh‐trang‐thai‐cua‐mot‐nut‐nhan‐button﴿
﴾http://k2.arduino.vn/img/2014/05/26/0/473_88220‐1401074110‐0‐nut‐nhan‐500x500.jpg﴿
Nếu bạn đã biết đến cái công tắc đóng / mở thì nút nhấn cũng hoạt động tương tự như vậy. Thay vì chỉ có 2 chân như công
tắc, nút nhấn có 4 chân chia làm 2 cặp. Những chân trong cùng một cặp được nối với nhau, những chân khác cặp thì ngược lại.
Khi bạn nhấn nút, cả 4 chân của nút nhấn đều được nối với nhau, cho phép dòng điện từ một chân bất kì có thể tới 3 chân còn Chia sẻ tình yêu với
lại. ﴾http://arduino.vn/bai‐
viet/diem‐cong‐
dong/giai‐thuong﴿
﴾http://k3.arduino.vn/img/2014/05/26/0/474_81220‐1401075921‐0‐untitled‐sketch‐
Arduino
﴾http://arduino.vn/bai‐
Tham khảo Nào cùng làm! Đăng bài Tải về Cuộc thi Về chúng tôi Bài tập
viet/diem‐cong‐
dong/giai‐thuong﴿
schem.png﴿ ﴾http://arduino.vn/bai‐
viet/diem‐cong‐
Bạn cần những gì ? dong/giai‐thuong﴿
• Mạch Arduino ﴾ở đây mình sử dụng Arduino UNO﴿. BÌNH LUẬN GẦN ĐÂY
• Breadboard ﴾một số nơi gọi là Test Board﴿.
• Điện trở 10 kΩ.
• Nút nhấn ﴾hoặc công tắc tương đương﴿.
Lắp mạch
﴾https://disqus.com/by/arduinovnn‐
56c3b2c6ea3a83aaeeff35eeb45d700d/﴿
HoaTho94
﴾https://disqus.com/by/arduinovnn‐
56c3b2c6ea3a83aaeeff35eeb45d700d/﴿
http://arduino.vn/baiviet/80sudungdigitalreadvagiaotiepserialdigitalreadserial 1/8
3/20/2017 Bài 3: Xác định trạng thái của một nút nhấn (button) | Cộng đồng Arduino Việt Nam
sao em gui du lieu bằng RF
HC11 mà khi gửi thì tín hiệu đầu
tiên gửi đi khi nhấn nút thì đèn
bên RF nhận và sáng tốt. Còn khi
mình gửi tín hiệu thứ 2 bằng nút
nhân thứ...
﴾http://k2.arduino.vn/img/2014/06/25/0/588_88220‐1403664964‐0‐aaaaaaaaaaaaa.png﴿ ﴾https://disqus.com/by/arduinovnn‐
f64be92fc42691c03917865d7c8ceb96/﴿
Sơ đồ nguyên lí tuan1320199
﴾https://disqus.com/by/arduinovnn‐
f64be92fc42691c03917865d7c8ceb96/﴿
﴾http://k1.arduino.vn/img/2014/06/25/0/640_12320‐1403665113‐0‐eeeeeeeeeeeeee.png﴿
Khi bạn chưa nhấn nút, chân D2 được nối với GND qua một điện trở 10 kΩ, do đó lệnh digitalRead(2) sẽ trả về giá trị 0
﴾LOW﴿. Khi bạn nhấn nút, chân D2 sẽ được nối trực tiếp với 5V và nối với GND thông qua 1 điện trở 10kΩ,
Mục lục ﴾https://disqus.com/by/yinnnguyen/﴿
lệnh digitalRead(2) sẽ trả về giá trị 1 ﴾HIGH﴿.
Yinn Nguyen
﴾https://disqus.com/by/yinnnguyen/﴿
Vì sao lại là 1 mà không phải là 0 ? Bạn hãy thử dùng định luật Ôm học ở lớp 9 để kiểm tra nhé.
không được bạn ơi. hix.. có khi
nào con arduino của mình die
Khi chưa nhấn nút, nếu bạn nối chân D2 với GND qua 1 điện trở thì người ta gọi điện trở này là điện trở pulldown. Trái lại,
rồi không.
nếu bạn nối D2 với chân 5V qua một điện trở thì người ta gọi nó là điện trở pullup. Cách nối ở trên hình sử dụng cách nối
điện trở pulldown. Hướng dẫn nạp chương trình
đơn giản cho Arduino Uno R3
Vì sao ta lại cần đến điện trở này ? Mình sẽ để bạn tự khám phá ở bước tiếp theo ... ﴾http://arduino.vn/bai‐viet/402‐
huong‐dan‐nap‐chuong‐trinh‐
don‐gian‐cho‐arduino‐uno‐
r3﴿ · 9 hours ago
﴾http://arduino.vn/bai‐viet/402‐
Lập trình huong‐dan‐nap‐chuong‐trinh‐
don‐gian‐cho‐arduino‐uno‐
r3#comment‐3211818211﴿
﴾https://disqus.com/by/arduinovnn‐
5b7fce29c95e235aef97ee358962a3ca/﴿
Vui Đen Thui
http://arduino.vn/baiviet/80sudungdigitalreadvagiaotiepserialdigitalreadserial 2/8
3/20/2017 Bài 3: Xác định trạng thái của một nút nhấn (button) | Cộng đồng Arduino Việt Nam
int button = 2; ﴾https://disqus.com/by/arduinovnn‐
5b7fce29c95e235aef97ee358962a3ca/﴿
﴾https://disqus.com/by/arduinovnn‐
56c3b2c6ea3a83aaeeff35eeb45d700d/﴿
HoaTho94
﴾http://k2.arduino.vn/img/2014/05/26/0/474_88220‐1401096014‐0‐ ﴾https://disqus.com/by/arduinovnn‐
56c3b2c6ea3a83aaeeff35eeb45d700d/﴿
pinMode(button, INPUT); ﴾https://disqus.com/by/yinnnguyen/﴿
Yinn Nguyen
Bạn hãy sửa INPUT thành INPUT_PULLUP rồi tải lại code của bạn lên mạch Arduino. Bạn có thể tháo điện trở 10 kΩ ra và xem ﴾https://disqus.com/by/yinnnguyen/﴿
kết quả ... Đó là vì trong vi điều khiển ATmega328 của Arduino UNO đã có sẵn điện trở pullup tương tự điện trở pulldown mà
BẠN ƠI... CỦA MÌNH NÓ KHÔNG
bạn đang mắc, tuy nhiên nếu bạn khai báo là INPUT như mặc định thì nó sẽ không được sử dụng, trái lại việc khai
HIỆN CỔNG COM KẾT NỐI VỚI
báo INPUT_PULLUP sẽ kích hoạt điện trở này. ARDUIINO LÊN.... THÌ LÀM SAO
ĐÂY.. MÌNH ĐÃ THỬ CẮM Ở CẢ
Từ khóa:
3 CỔNG USB CỦA MÁY
Tham khảo ﴾/tags/tham‐khao﴿ button ﴾/tags/button﴿ digital ﴾/tags/digital﴿ serial ﴾/tags/serial﴿ Rate node
TÍNH.VĐỀU KHÔNG NHẬN.
Chuyên mục:
Level: Beginner ‐ Vỡ lòng ﴾/chuong‐trinh‐mau/level‐beginner‐vo‐long﴿ Hướng dẫn nạp chương trình
đơn giản cho Arduino Uno R3
﴾http://arduino.vn/bai‐viet/402‐
34 thành viên đã đánh giá bài viết này hữu ích.
huong‐dan‐nap‐chuong‐trinh‐
Cầm tay chỉ việc don‐gian‐cho‐arduino‐uno‐
r3﴿ · 19 hours ago
Các bài viết được nói rất kỹ về các vấn đề mà bạn cần phải biết khi bắt đầu với Arduino!
﴾http://arduino.vn/bai‐viet/402‐
huong‐dan‐nap‐chuong‐trinh‐
don‐gian‐cho‐arduino‐uno‐
r3#comment‐3211362837﴿
Thích 23 người thích nội dung này. Hãy là người đầu tiên trong số bạn bè của bạn.
﴾https://disqus.com/by/arduinovnn‐
8d37be25170778cefa6d23801922dc97/﴿
Đỗ Doãn Cường
﴾https://disqus.com/by/arduinovnn‐
BÀI LIÊN QUAN 8d37be25170778cefa6d23801922dc97/﴿
• Bài 2: Cách làm đèn LED nhấp nháy theo yêu cầu ﴾/bai‐viet/77‐bai‐2‐cach‐lam‐den‐led‐nhap‐nhay‐theo‐yeu‐cau﴿ là j v
• Giới thiệu thư viện RobotMove ‐ Thư viện điều khiển Xe, Robot di chuyển sử dụng module L298 ﴾/bai‐viet/1022‐gioi‐
thieu‐thu‐vien‐robotmove‐thu‐vien‐dieu‐khien‐xe‐robot‐di‐chuyen‐su‐dung‐module﴿
Điều khiển 8 đèn LED sáng theo
ý muốn của bạn, dễ hay khó ?
﴾https://disqus.com/by/arduinovnn‐
if ﴾/reference/if﴿ eeb74a8ddfbb606f20020fd92e80aa0f/﴿
quocbao ﴾/users/quocbao﴿ gửi vào Chủ nhật, 25 Tháng 5, 2014 ‐ 01:59 Top Manga Onpice
﴾https://disqus.com/by/arduinovnn‐
7 BÌNH LUẬN ﴾/REFERENCE/IF#DISQUS_THREAD﴿ 29959 LƯỢT XEM ﴾/REFERENCE/IF﴿ eeb74a8ddfbb606f20020fd92e80aa0f/﴿
http://arduino.vn/baiviet/80sudungdigitalreadvagiaotiepserialdigitalreadserial 4/8
3/20/2017 Bài 3: Xác định trạng thái của một nút nhấn (button) | Cộng đồng Arduino Việt Nam
có bác nào từng làm mạch định
Câu lệnh Nếu thì vị gps sử dụng module sim808
với arduino chưa ạ , cho em ít
kinh nghiệm với
Thích 19 người thích nội dung này. Hãy là người đầu tiên trong số bạn bè của bạn.
Rate node ST7565 | Hướng dẫn sử dụng
glcd ST7565 homephone và chia
sẻ thư viện.
﴾http://arduino.vn/tutorial/1319‐
st7565‐huong‐dan‐su‐dung‐
15 thành viên đã đánh giá bài viết này hữu ích. glcd‐st7565‐homephone‐va‐
chia‐se‐thu‐vien﴿ · 1 day ago
sqrt﴾﴿ ﴾/reference/sqrt﴿ ﴾http://arduino.vn/tutorial/1319‐
st7565‐huong‐dan‐su‐dung‐
quocbao ﴾/users/quocbao﴿ gửi vào Thứ tư, 28 Tháng 5, 2014 ‐ 23:36
glcd‐st7565‐homephone‐va‐
BÌNH LUẬN ﴾/REFERENCE/SQRT#DISQUS_THREAD﴿ 1684 LƯỢT XEM ﴾/REFERENCE/IF﴿
chia‐se‐thu‐vien#comment‐
3210377944﴿
Giới thiệu
BÀI ĐỌC NHIỀU
sqrt() là hàm dùng để tính căn bậc 2 của một số bất kì ﴾có thể là số nguyên hoặc số thực tùy ý﴿ và trả về kết quả này.
﴾http://arduino.vn/reference/sqrt﴿
ST7565 và ESP8266 ‐ Màn hình
Thích Hãy là người đầu tiên trong số bạn bè của bạn thích nội dung này. LCD bự chà bá chưa đến 100k
Rate node cho thế giới IoT
﴾http://arduino.vn/result/1519‐
st7565‐va‐esp8266‐man‐hinh‐
lcd‐bu‐cha‐ba‐chua‐den‐100k‐
cho‐gioi‐iot﴿
0 thành viên đã đánh giá bài viết này hữu ích.
6 comments · 1 week ago
26 Comments Arduino.vn Login
LCD màu TFT 3.2 inch cho board
Adruino Mega 2560
Recommend 5 ⤤ Share Sắp xếp theo mới nhất
﴾http://arduino.vn/bai‐viet/1500‐
lcd‐mau‐tft‐32‐inch‐cho‐board‐
Join the discussion… adruino‐mega‐2560﴿
}
Hơi dài :D
△ ▽ • Reply • Share ›
Long Trần Tuấn • 4 tháng trước
e thử dùng INPUT_PULLUP và rút điện trở 10k ra nhưng nó vẫn chỉ là 1111111111..... khi e cắm 10k vào thì nó
mới bình thường lại.
△ ▽ • Reply • Share ›
Heart > Long Trần Tuấn • 4 tháng trước
Bạn rút điện trở ra như hình này nó 1 là đúng rồi , vì lúc này nó ko có cái gì nối với GND thì làm sao mà
nó chuyển qua 0 dc
Cái đầu nối với 5V của nút nhấn tháo ra , rồi dùng đầu đó nối với GND , bấm sẽ có thay đổi
△ ▽ • Reply • Share ›
Hoàng Sỹ Lực > Heart • 5 ngày trước
"Cái đầu nối với 5V của nút nhấn tháo ra , rồi dùng đầu đó nối với GND" ???
△ ▽ • Reply • Share ›
Heart > Hoàng Sỹ Lực • 4 ngày trước
Do code của bạn ấy nên lúc nào nó cũng mức 1 , sửa lại phần cứng mới chạy dc
1 △ ▽ • Reply • Share ›
Trần Quang Linh • 5 tháng trước
EM đang làm 1 chiếc bàn phím kết nối với con mega 2560 dựa trên lí thuyết này nhưng khi em nhấn button hiển
thị a thì nó ra rất nhiếu chữ a ạ em dùng loại nút nhấn như trên ạ
gia_tri = digitalRead(13);
if (gia_tri == 0 ){ GLCD.print("A"); }
????
△ ▽ • Reply • Share ›
Heart > Trần Quang Linh • 5 tháng trước
Thì đúng rồi , do mấy cái này xử lý quá nhanh khi bạn nhấn nút đối với nó là giữ nút nhấn chứ ko phải
nhấn rồi thả
Ráng nhai cái đó dùng cũng dc lắm
http://playground.arduino.c...
△ ▽ • Reply • Share ›
Anh Linh • 9 tháng trước
e dùng proteus thì hiện cái cửa số serial đó ntn ạ
△ ▽ • Reply • Share ›
tuangjv • 2 năm trước
nếu em thêm 1 LED gắn vào chân 13 nhận giá trị của công tắc để tắt ság sao không được ạ? mọi người xem
giúp em. em cảm ơn
⛺
△ ▽ • Reply • Share ›
herolovevtc > tuangjv • 9 tháng trước
cho mình hỏi bạn dùng soft giả lập gì vậy
△ ▽ • Reply • Share ›
Heart > herolovevtc • 9 tháng trước
http://arduino.vn/baiviet/...
Nhưng tốt nhất sài cái dưới vì nó hỗ trợ dừng ở dòng lệnh và cho ta thấy giá trị tại thời điểm đó
luôn (debug)
http://arduino.vn/baiviet/...
△ ▽ • Reply • Share ›
phamkhanh1103 • 2 năm trước
Mình đã khai báo button là INPUT_PULLUP nhưng khi mình tháo điện trở 10k ra vẫn bị đoản mạch. Ad giải
thích chi tiết giúp mình, mình mới bắt đầu nên không hiểu lắm :)
△ ▽ • Reply • Share ›
http://arduino.vn/baiviet/80sudungdigitalreadvagiaotiepserialdigitalreadserial 6/8
3/20/2017 Bài 3: Xác định trạng thái của một nút nhấn (button) | Cộng đồng Arduino Việt Nam
tamnguyen • 2 năm trước
Câu này: 'Hãy thử tháo điện trở 10 kΩ trên breadboard ra và quan sát lại cửa sổ Serial Monitor ..." nếu người
đọc hiểu rằng tháo điện trở và nối chân D2 trực tiếp với GND thì khi ấn nút chân 5V nối trực tiếp với GND, liệu
có die Arduino không các bạn ơi
△ ▽ • Reply • Share ›
quocbao > tamnguyen • 2 năm trước
Không, vì trước đó đã đặt D2 ở INPUT_PULLUP rồi. Về nguyên tắc thì phải có điện trở, còn thực tế thì
không có cũng được bất chấp trạng thái của D2 là INPUT hay INPUT_PULLUP.
Bạn có thể xem thêm bài viết sau của mình
Làm sao để phá hỏng Arduino Uno R3 http://arduino.vn/baiviet/...
△ ▽ • Reply • Share ›
healwayssmiles2801 • 2 năm trước
Vậy nếu tháo ra và chạy thử thì có hư gì k AD?
△ ▽ • Reply • Share ›
quocbao > healwayssmiles2801 • 2 năm trước
Dĩ nhiên là không hư :)) Vì nếu hư thì mình đã không hướng dẫn bạn làm như vậy :P Câu hỏi của bạn
khá hài :))
△ ▽ • Reply • Share ›
healwayssmiles2801 > quocbao • 2 năm trước
:D AD thông cảm cho, tại mình cũng mới bắt đầu nên cũng còn nhiều thứ không biết
△ ▽ • Reply • Share ›
nếu tháo điện trở ra thì mạch bạn sẽ ko chạy đc! Lý do? Bạn thử giải thích xem :). Ở trên mình có nêu
định nghĩa từ đó bạn có thể dễ dàng suy luận ra :)
△ ▽ • Reply • Share ›
ledongthuc > admin • 2 năm trước
"Nếu tháo điện trở ra thì mạch bạn sẽ ko chạy đc! Lý do?"
1. Khi button chưa được nhấn: chân D2 sẽ nối trực tiếp với GND. Theo như tài liệu của arduino
thì nếu bất cứ chân nào được cấu hình là INPUT_MODE và không có bất thứ gì, cũng như
không có bất kì mạch điện nào kết nối vào nó, thì giá trị đọc được trên chân INPUT này sẽ bị
nhiễu. Có nghĩa là kết quả nhận được không ổn định và cho ra ngẫu nhiên. Thực tế cho thấy là
trên Serial Monitor nhảy ra kết quả 0, 1 lộn xộn, không ổn định. Theo như vài tài liệu thì giá trị sẽ
thay đổi ngẫu nhiên giữa HIGH (1) và LOW (0).
2. Khi button đang được nhấn (closed): Chân 5V sẽ nối trực tiếp với GND. Theo định luật Ohm,
cường độ dòng điện tỉ lệ nghịch với điện trở trên mạch. Do nối trược tiếp, điện trở trên mạch này
gần như bằng 0 (rất nhỏ), đồng nghĩa với việc cường độ dòng điện trên mạch cực lớn, điều này
sẽ gây ra hiện tượng đoản mạch (cháy nổ tùy trường hợp). Nhưng do trên arduino có cầu chì tự
phục hồi nên mạch sẽ đơ ra 1 chút. Nếu trên những dạng mạch khác thì đừng nên làm như vậy.
Mình thì không có kiến thức nhiều trên arduino cũng như hệ thống mạch, nên nếu có gì sai, mong
mọi người correct lại để cho đúng kiến thức nha.
1 △ ▽ • Reply • Share ›
Tại sao lại cần dùng điện trở tại chân nối với cực âm của button?
Đó là bởi vì nhấn button, dòng điện sẽ đi vào chân tín hiệu, tuy nhiên cũng đi vào cực âm. Nếu không có điện
trở hạn dòng sẽ gây ra hiện tượng đoản mạch (http://arduino.vn/baiviet/.... Vì vậy, trước cực âm, chúng ta cần
có một bé điện trở tối thiểu 125ohm (tớ khuyên nên dùng điện trở 10kOhm). Như vậy dòng điện sẽ đi vào chân
digital và cực âm là khá nhỏ (tiếp kiệm điện,...)
△ ▽ • Reply • Share ›
good :)
1 △ ▽ • Reply • Share ›
ALSO ON ARDUINO.VN
5_LED_BLINK ESP8266 kết nối Internet Phần 2: Arduino gặp
THÀNH VIÊN TRỰC TUYẾN THÀNH VIÊN MỚI VỀ CHÚNG TÔI LIÊN KẾT
• Duc Hoa ﴾/users/duc‐hoa﴿ • Servicewbl ﴾/users/servicewbl﴿ hiện tại 2.3 tên mã Chia sẻ tình yêu với
Arduino ﴾http://arduino.vn/changelog﴿.
• minh﴿
hiểu thêm ﴾http://arduino.vn/ve‐
• Viết Tiến ﴾/users/viet‐tien﴿
Vũ Đức Minh ﴾/users/vu‐duc‐ chung‐toi﴿
(http://creativecommons.org/licenses/bysa/4.0/)
Nội dung trên trang Arduino.vn (http://arduino.vn/) được phân phối theo giấy phép Creative Commons AttributionShareAlike 4.0
International License (http://creativecommons.org/licenses/bysa/4.0/).
Vui lòng ghi rõ nguồn và link về bài gốc nếu bạn tham khảo nội dung từ website (http://masocongty.vn) này.
http://arduino.vn/baiviet/80sudungdigitalreadvagiaotiepserialdigitalreadserial 8/8