+ Bài này ko dám gọi là TUT, chỉ là một chia sẻ nhỏ cho bạn nào đang tìm hiểu về touchpad! ^^
+ Có nhiều cách để thực hiện 1 capacitive touchpad, nguyên tắc chung là phải nhận biết được sự thay đổi điện dung khi có tay chạm vào. Đầu tiên các bạn có thể ghé qua topic này để download các tài liệu do anh Cao Long chia sẻ:
http://www.payitforward.edu.vn/forum/threads/807/
+ Ở đây mình xin chia sẻ 1 cách khác so với cách mà bạn Hồng Hiệp đã nêu ở trên, giống nhau hoàn toàn về nguyên tắc chung, chỉ khác nhau ở thuật toán để đo điện dung thôi. Vi điều khiển sử dụng MSP430G2553
+ Về phần cứng sơ đồ nguyên lí như sau:
+ Sơ đồ trên dùng cho 5 nút nhấn cảm ứng, mỗi nút nhấn xem như một tụ điện được mắc song song với một điện trở có giá trị lớn (tầm mega ohm, có thể dùng 2M). Với cách mắc như vậy thì tụ sẽ được nạp rất nhanh thông qua chân vi điều khiển (vđk) sau đó sẽ xả chậm hơn qua điện trở (trở càng lớn xả càng chậm), ta sẽ đo khoảng thời gian xả này để xác định điện dung của nút nhấn nên việc xả chậm là cần thiết để vđk kịp nhận biết.
+ Về layout:
+ Các bạn có thể layout theo kiểu mình thích nhưng lưu ý các điểm sau:
1. Dây nối từ nút nhấn đến chân vđk càng ngắn càng tốt, nếu bạn nào dùng launchpad thì nên làm theo kiểu hàn header cái rồi cắm trực tiếp lên launchpad giống như các sản phẩm ở trên. Dùng bus nối sẽ bị nhiễu rất nặng, thậm chí ko sử dụng được.
2. (dành cho bạn nào làm trên launchpad) Không nên nối nút nhấn đến các chân có chức năng đặc biệt như Led, Button, UART,...để có thể dùng vào việc khác, layout trên mình sơ ý nên nối 1 nút vào led P1.0, các bạn có thể dời sang một chân khác
3. Cái layout share ở trên khi in phải
mirror lại thì khi ủi mới đúng!
4. ..........các bạn tự suy nghĩ thêm...........^^
+ Về phần mềm mới cái quan trọng đây, phần cứng đơn giản là thế nhưng nếu các bạn code tốt sẽ có một touchpad với rất nhiều trò hay ho như nút nhấn, slider, wheel,... ta dùng giải thuật đo điện dung của nút nhấn theo lưu đồ sau:
+ Mỗi nút nhấn sẽ có một điện dung "nền" base, tức là điện dung khi chưa được chạm, khi có tay chạm vào điện dung của nút nhấn sẽ tăng lên kéo theo thời gian xả sẽ tăng. Có thể dùng thuật toán sau để kiểm tra một nút nhấn:
Code:
delta = 0;
measure();
delta = meas - base;
if (delta > threshold)
{
action();
}
else adjust();
+ Base là điện dung nền, meas là điện dung đo được bằng hàm measure() (hàm measure có lưu đồ như đã trình bày ở hình trên), delta là độ chênh lệch giữa điện dung nền và đo được, nếu mức chênh lệch này vượt qua 1 ngưỡng threshold nào đó thì xem như có tay chạm và ta cho vdk thực hiện 1 action() nào đó. Ở đây thuật toán có dùng thêm 1 bước điều chỉnh điện dung nền của nút nhấn tuy nhiên các bạn có thể bỏ qua phần này.
+ Muốn thực hiện trên nhiều nút nhấn ta chỉ cần quét lần lượt từng nút và áp dụng thuật toán trên cho mỗi nút, khi đã quét được nhiều nút các bạn có thể làm tiếp slider, wheel,... phần này các bạn xem thêm trong code của bạn Hiệp đã chia sẻ. Bài dài quá viết hết nổi rồi...@@