Keypad 1 dây

bigboy061293

Thành Viên PIF
Thực tế: keypad hồi đó giờ chúng ta xài, chủ yếu là dùng cách quét theo ma trận, do đó số chân tốn cho vđk là cực kì tốn kém. Dữ lắm thì dùng mở rộng port giao tiếp I2C (PCA9555, 8574, ...) để tiết kiệm chân xuống còn 2, nhưng cách này hơi phức tạp và tốn thêm địa chỉ cho I2C và abcxyz ... nói chung là không tốt bằng phương pháp 1 dây :)

Ý tưởng: keypad này dựa trên ý tưởng chia áp cho từng nút, tức là khi nhấn 1 nút X nào đó, ta sẽ đọc ADC về vđk rồi lưu cái mức đó vào mảng để sau này có bấm lại lần nữa thì dễ quản lí :) (xuất phát từ anh Nhật chung phòng và công ty Microchip :) )

Thực hiện:
mọi người dòm cái "xì ke ma tíc" sau thì sẽ hiểu liền :D



trong quá trình đọc ADC, ai xài mạch debug được thì quá đơn giản rồi, coi liền được cái giá trị đó, còn nếu không thì phải cho qua LCD để đọc. Có cách đơn giản hơn là dùng 10 con led (với ADC 10 bit hay 8 con led với ADC 8 bit) để coi mã nhị phân của nó :)

Kinh nghiệm:
Kinh nghiệm là khi đọc khi bấm nút để đọc cái giá trị thì đừng có đụng tay vào mối hàn :)
Với lại nên dùng ADC 10 bit để cho nó nhuyễn ra và dùng được nhiều nút
Trước khi thực hiện, mọi người nên viết ra một ma trận có giá trị hàng và cột là các giá trị điện trở rồi cộng tương ứng hàng i cột j lại với nhau, coi coi điều chỉnh trở sau cho mấy cái tổng đó khác nhau càng xa càng tốt. Còn nếu chịu chơi thì xài m*n cái biến trở cũng được :)
Đọc xong rồi thì lưu nó vào 1 mảng, sau này khi gọi lại các phím để kiểm tra coi cái nào được nhấn thì nhớ là " if (ADCMEM = giá trị -1) or (ADCMEM = giá trị) or (ADCMEM= giá trị +1)" để cho phím nó nhạy hơn rồi sau đó delay 0.5 hay 1 giây gì đấy.
Khi đọc giá trị phím về, có thể gắn thêm cái tụ 104 song song với chân OUT với mass để cho nó lưu mẫu lại cũng được :)
Dùng nút 4 chân thì nhớ chú ý thứ tự các chân nối với nhau trong nút, nhớ dùng VOM đo để kiểm tra trước, chứ mình đã từ tháo 15 cái nút ra để hàn lại rồi ... rất là đau thương nên có chút kinh nghiệm để mọi người lưu ý :)

sau đây là mấy cái hình tham khảo với nguyên cái xì ke ma tíc với lai ao








Code:
http://www.mediafire.com/?7j1n04mk99p7p7a
(hoặc link thay thế)
Code:
http://www.mediafire.com/?6yl96n6bsi99cli
 

2death

Cố Vấn CLB
Staff member
Good Big boy :D

Các bạn share link mediafire thì nên để trong mã CODE nhé (giảm nguy cơ bị thằng mediafire xóa link, mất file).
 
Ok good boy,.....thế là ae phòng ta là có hai bài về bàn phím rồi.......:D
Sẵn tiện mọi người có gì hay thì chia sẽ cùng nhau ha,...(: ^ :)
 
phản biện(cho vui :D):
_ADC: input analog nên có mấy vấn đề - nhiễu, nguồn cần phải cực kì ổn định để tránh đọc sai (hoặc thêm 1 kênh đọc Vcc để giải quyết vấn đề này). Rồii năng lượng, RAM MCU dùng cho quá trình ADC như thế nào(so với các pp kia)
_Nhiều nút: cái này thì lại càng khó, nhiễu chồng thêm nhiễu là mù luôn:D
Dù sao thì cũng là 1 ý tưởng rất hay:))
 

ionlangle

Trứng gà
mình nghĩ là nên tăng lên thành 4 dây (2 ADC và 2 nguồn) để giảm nhiễu và tăng thêm dc vài phím nữa ;-)
 

mafiaWolf

Chủ tịch Hội phụ nữ PIF
Aaaaaaaaaa bây h thì bé đã hiểu rồi ;))... chắc em phải cho thành 2 chân out đọc giá trị wa' :-ss...đở tốn tiền mua thêm điện trở :D
 

xe đạp

Trứng gà
nếu bấm 2 nút cùng lúc thì sao ta, hoặc nếu sụt nguồn, pic làm việc từ 2.2-5.5 volt mà, sụt phát là liệt phím
 

bigboy061293

Thành Viên PIF
nếu bấm 2 nút cùng lúc thì sao ta, hoặc nếu sụt nguồn, pic làm việc từ 2.2-5.5 volt mà, sụt phát là liệt phím
vậy chắc chỉ bấm được 1 phím thôi :)
Mình thấy ý tưởng tổ hợp phím này hay đó, bạn thử suy nghĩ xem có ý tưởng nào phát triển thêm không ?
 

mafiaWolf

Chủ tịch Hội phụ nữ PIF
hjz..mà sao như schematic k dùng nút 2 chân ạ :(...cái nút 4 chân của em k biết là 4 chân (loại 2 công tắc nhỏ bên trong) hay 4 chân (loại 1 công tắc 2 chân cắm cho chắc) nữa..sao xác định đây ạ :(
 

bigboy061293

Thành Viên PIF
hjz..mà sao như schematic k dùng nút 2 chân ạ :(...cái nút 4 chân của em k biết là 4 chân (loại 2 công tắc nhỏ bên trong) hay 4 chân (loại 1 công tắc 2 chân cắm cho chắc) nữa..sao xác định đây ạ :(
nút loại 4 chân này là loại nút đơn bình thường thôi, mục đích dùng 4 chân là vì bản chất bên trong của nó. Cụ thể là nó có 2 cặp chân được nối với nhau (thường thì cặp chân cùng 2 bên với cái đường xẻ dọc xuống đấy, lật đít nó lên sẽ thấy) còn nếu không thì dùm VOM để kiểm tra --> dùng nút 4 chân sẽ dễ dàng trong việc đi layout hơn là nút 2 chân (cái này ai có làm keypad rồi sẽ hiểu)

À, tiện thể cho hỏi luôn là bạn biết loại nút nhấn 4 chân mà bên trong là 2 nút đơn phải không ? cái đó mua ở chổ nào vậy ? tui từng lục tung cả Nhật Tảo (dưới con mắt hình viên đạn của nhiều ông bà chủ cửa hàng linh kiện) mà không tìm thấy :(
 

mafiaWolf

Chủ tịch Hội phụ nữ PIF
tại đọc trên mạng thấy ngta nói vậy nên k biết hỏi thử thui chứ có bik ở đâu đâu..em gà mà :( hjzhjz... Nhật Tảo vô cao ốc ngon nhất ( khu B a') >"<..hỏi ngta còn chỉ chỗ bán cho nữa :D
 

IceSandwich

Thành Viên PIF
Còn 1 dạng keypad nữa, dùng khi mod lại tay cầm PS2. Đơn giản mà hiệu quả, có thể đọc được tổ hợp phím rất ngon :D. Cách làm như sau:
Dùng IC mux 8 sang 1 74hc151, 3 chân chọn kênh, 1 chân tín hiệu out.
1 IC đọc được 8 nút, tốn 4 chân.
2 IC đọc được 16 nút, tốn 5 chân và cứ thế mở rộng ra.
Đọc trị về bằng cách quét từng chân và lưu giá trị và 1 biến. Cứ mỗi lần quét là ta đọc được trạng thái của tất cả các phím và dựa vào biến lưu trạng thái mà xử lí :1cool_byebye:
 

bigboy061293

Thành Viên PIF
Còn 1 dạng keypad nữa, dùng khi mod lại tay cầm PS2. Đơn giản mà hiệu quả, có thể đọc được tổ hợp phím rất ngon :D. Cách làm như sau:
Dùng IC mux 8 sang 1 74hc151, 3 chân chọn kênh, 1 chân tín hiệu out.
1 IC đọc được 8 nút, tốn 4 chân.
2 IC đọc được 16 nút, tốn 5 chân và cứ thế mở rộng ra.
Đọc trị về bằng cách quét từng chân và lưu giá trị và 1 biến. Cứ mỗi lần quét là ta đọc được trạng thái của tất cả các phím và dựa vào biến lưu trạng thái mà xử lí :1cool_byebye:
em có cái còn hay hơn nè anh:
mình tháo hết mấy cái gì liên qua tới điện đài trong tay cầm ra, chừa lại mấy nút cơ trong đó thôi rồi chế tiếp (thấy quen quen hông ? ) :)
 

Manhdd

Cố Vấn CLB
Staff member
Có bạn nào tháo thử keypad ra chưa? Nó cũng là dạng matrix keypad đó. Với lại nút nhấn của nó không giống nút nhấn thường. Trạng thái không dẫn đo được điện trở 3K :1cool_choler:
 

bigboy061293

Thành Viên PIF
Có bạn nào tháo thử keypad ra chưa? Nó cũng là dạng matrix keypad đó. Với lại nút nhấn của nó không giống nút nhấn thường. Trạng thái không dẫn đo được điện trở 3K :1cool_choler:
keypad anh nói là dạng keypad dẹp dẹp thứ ở Thiên Minh bán phải không anh ?
 

Manhdd

Cố Vấn CLB
Staff member
oh. sr bạn. viết nhầm. gamepad chứ không phải keypad. gamepad là tay cầm PS2 đó :D
 

mafiaWolf

Chủ tịch Hội phụ nữ PIF
Em muốn đọc ADC theo cái keypad này mà dùng MSP430G2553 thì làm sao ạ :(
Nếu mình không có VOM thì có thể tính ra giá trị ADC của từng nút khi nhấn được không ạ?
 

bigboy061293

Thành Viên PIF
à, dùng nếu dùng IAR để viết thì bạn đọc ADC bình thường vào một biến nào đó, trong phần debug có chức năng gọi là "Watch" (mò ở đâu đó, mình cũng quên rồi) Khi chọn cái này, bên phải sẽ hiện ra 1 cái khung, bạn nhập cái biến đó của mình vào. Rồi vừa nhấn nút trên keypad, vừa chọn "break" thì bên khung đó sẽ hiện ra giá trị của biến đọc ADC về.
Còn một cách nữa trực quan hơn là dùng uart, bạn vừa đọc ADC, vừa xuất giá trị đó ra terminal để nhìn cho nó trực quan --> dễ tìm ra giá trị trung bình hơn.
Còn một cách cũng khá dễ dàng hơn nữa là dùng LCD --> đọc giá trị đó lên LCD để coi. Thư viện LCD trên diễn đàn TI có đó.

Toàn bộ các chương trình mẫu về ADC, UART, ... có hết trong phần code mẫu cho msp430g2553 (cái này bạn chịu khó mò ở đâu đó trên diễn đàn TI hay trên trang wiki msp của TI của có)

Chúc bạn thành công :)
(TB: đừng kêu mình là anh, cùng lứa mà :) )
 

honghiep

Cố Vấn CLB
Staff member
còn 1 cách nữa là bạn có thể xuất ra led để quan sát cũng được
 

mafiaWolf

Chủ tịch Hội phụ nữ PIF
hix..mà vẫn là phải làm phần cứng trước hả :(... tại mình muốn làm phần mềm lun :D>..mà ý tưởng UART hay a'..thanks nha
 
Top