[Share] I2C keypad.

Từ trước đến h có bạn nào đã từng nghĩ, sẽ thay đổi cách quét bàn phím thông thường bằng cách nào đó nhanh chóng mà không tốn quá nhiều thời gian xữ lý của MCU không ạ, và đó cũng là câu hỏi mà trước đây mình đã từng trăn trở....và sau đó không đợt lâu, tìm nhiều tài liệu, và thử nhiều cách để thay đổi điều này (ví dụ mình đã từng làm bàn phím ADC chỉ dùng duy nhất 1 dây, và vv. ) .Nhưng sau nhiều cách thì mình yêu thích nhất là Keypad theo kiểu I2C.
Nguyên tắc là chúng ta sẽ không quét như bình thường nữa, thay vì thế, mình dùng con PCA9555, mỗi lần có nút nhấn nó liền tạo ra một ngắt báo MCU biết là đang có phím được nhấn và chúng ta sẽ nhảy vào ngắt đọc giá trị thay ghi của PCA về xữ lý, sau đó lập trình tìm đuợc trạng thái thay đổi và biết được nút nào đã được nhấn. :D
Nguyên tắc thì chỉ đơn giản vậy thôi. nhưng các bạn làm rồi sẽ biết nó rắc rối thế nào!!!!!
Đọc Datasheet PCA9555 là vậy, nhưng viết code mới thấy hiểu rõ nó như thế nào.!!!! thú vị lắm.....

In order not to waste time of you guys more, And It's here....Hope so It's helpful for you guys' projects
P/s It requires a MCU having I2C interface, INT interrupt ....That's all. On my layout attachment, I used 2 PCA9555 ICs, one for I2C keypad and another for expand-port application, but wait, I forgot to connect 2 wires SCL and SDA of those ICs together. I suggest, you're better connect it by using wires or relayout. Ok /.
Beside, It also encloses a LCD.h and a LCD.c by using this IC..I think it'll help to save MCU's PIN....OK take a look now. :D
 

Manhdd

Cố Vấn CLB
Staff member
Theo mình hiểu thì cái này chỉ là mở rộng IO thôi nhỉ. MCU cũng phải xử lý việc đọc external IO trong ngắt.
Sao chúng ta không gắn 1 MCU đi kèm keypad, xử lý mọi thao tác đọc keypad và truyền trạng thái qua 2 dây về main MCU nhỉ? TI rất thoải mái trong việc cho sample MSP430 dòng value line mà :d
 
Cái này mình đang định làm, định làm thành một module thương mại, nhưng chưa hoàn thành đâu,...post lên trước cho mọi người tham khảo thôi.
Nó xữ lý cũng nhanh mà. điều này nó chỉ làm khi có ngắt...rất tiết kiệm thời gian xữ lý so với cách quét phải quét liên tục.

Cái này, CLB mình cần có một trang web để bán Module thì OK nhỉ.....chị thấy thế nào chị Phương.
 

Manhdd

Cố Vấn CLB
Staff member
uhm. nhưng nếu VĐK có nhiều IO thì cũng có thể gom việc quét vào ngắt mà :-p
Các module chuyên dụng mình đề xuất truyền 2 dây: 1 dây ngắt, 1 dây thông tin. Dây thông tin truyền theo kiểu 1-wire, có khoảng 3-4 xung clock đồng bộ. Làm vậy có vẻ hay hay :d
 
Vụ VDK nhiều chân, có nhiều loại cũng rẽ, nói chung dùng con này thì chưa kinh tế lắm...vì nó đắt gần bằng một con MCU nhiều chân của TI, nếu dùng con này so với dùng MCU nhiều chân kia thì MCU nhiều chân ưu thế hơn, nhưng....điều cần ở đây là tìm con khác, đơn giản và rẻ hơn thì ok rồi,....điều này không khó đúng không? nói chung nhiều ứng dụng nhỏ (MCU vừa phải) thì dùng Module có sẵn như thế này (giá cũng không quá đắt) vẫn tiện hơn rất nhiều so với việc phải dùng một MCU PIN khủng để ngắt. Cậu đồng ý không?
 
Uhm, thế cậu nghiên cứu cái đó đi được đó, giao tiếp một dây hình như trên diễn đàn có nói đúng không...

cảm ơn vì góp ý nhé....! :)
 

Manhdd

Cố Vấn CLB
Staff member
Cũng không hẳn là giao tiếp 1-wire, vì 1-wire có thể dùng chân Data để cấp nguồn luôn.
Bạn xem INTERFACE TIMING của con TCA5405 - Single-Wire Output Expander sẽ rõ.

Cách giao tiếp này cũng tương tự UART autobaud, khi nào rảnh mình sẽ thử trên module led 7 đoạn xem sao, được sẽ báo kết quả cho :d
 

Rebirth

Cố Vấn CLB
Staff member
Cái này mình đang định làm, định làm thành một module thương mại, nhưng chưa hoàn thành đâu,...post lên trước cho mọi người tham khảo thôi.
Nó xữ lý cũng nhanh mà. điều này nó chỉ làm khi có ngắt...rất tiết kiệm thời gian xữ lý so với cách quét phải quét liên tục.

Cái này, CLB mình cần có một trang web để bán Module thì OK nhỉ.....chị thấy thế nào chị Phương.
Mình sẽ có trang web bán hàng, em cứ yên tâm. Sẽ có version demo trong hè. :D
 

2death

Cố Vấn CLB
Staff member
Hi Nhật,
Chuyển bài viết này của em sang box Chia sẻ nhé.

Nếu có thời gian, em sửa lại bài viết của em ở #1 một chút, cho nội dung nó được rõ ràng và thuận tiện cho mọi người hơn.
Đơn giản nhất là em có thể cho thêm hình ảnh của schematic, add vào bài viết, để mọi người hình dung ra họ chuẩn bị download cái gì về :D
 
Top