Mục lục:

Bàn phím lập trình: 5 bước (có hình ảnh)
Bàn phím lập trình: 5 bước (có hình ảnh)

Video: Bàn phím lập trình: 5 bước (có hình ảnh)

Video: Bàn phím lập trình: 5 bước (có hình ảnh)
Video: 32 Tổ Hợp Phím Bí Mật Trên Bàn Phím Của Bạn 2024, Tháng mười một
Anonim
Bàn phím lập trình
Bàn phím lập trình
Bàn phím lập trình
Bàn phím lập trình

Trong dự án này, tôi sẽ trình bày cách tạo bàn phím lập trình tương đối đơn giản và rẻ tiền để ánh xạ các phím tắt, ứng dụng được sử dụng nhiều nhất của bạn và hơn thế nữa.

Bàn phím này được phát hiện là bàn phím trong tất cả các hệ điều hành chính, không cần trình điều khiển bổ sung.

Quân nhu

  • Bộ mã hóa vòng quay.
  • Rất nhiều nút nhấn (tùy thuộc vào nhu cầu của bạn).
  • Arduino Pro Micro, Arduino Leonardo hoặc bất kỳ bảng phát triển nào khác có MCU Atmega32U4.
  • Dây, thuốc hàn, mỏ hàn, v.v.
  • (Tùy chọn) Một số đế nặng để giữ bàn phím không bị trượt, tôi đang sử dụng ổ cứng 3.5 "cũ

Bước 1: Mạch điện

Mạch điện
Mạch điện

Tôi đã chọn sử dụng bảng phát triển Arduino Pro Micro với MCU Atmega32U4 có 18 chân kỹ thuật số có thể sử dụng được.

Các chân để kết nối các nút nhấn và bộ mã hóa quay được chọn không có thứ tự cụ thể nào, nhưng cần lưu ý một số điều:

  1. Tất cả các chân có khả năng đọc kỹ thuật số đều có thanh kéo bên trong cho phép giảm thiểu điện trở kéo xuống bên ngoài. Tất nhiên mã phải được cập nhật cho phù hợp, vì nó mong đợi trạng thái của pin đi từ thấp đến cao khi nhấn các nút nhấn.
  2. Trong ví dụ thư viện encoder.h lưu ý rằng hiệu suất tốt nhất của bộ mã hóa đạt được khi cả hai chân kết nối với các chân có khả năng ngắt MCU. Hầu hết các chân tương tự của Atmega32U4 không có khả năng ngắt.
  3. Giá trị điện trở kéo xuống chính xác không quan trọng lắm, bất cứ thứ gì từ 1 kΩ đến 100 kΩ đều hoạt động tốt. Giá trị điện trở lớn hơn cho phép tiêu tán công suất nhỏ hơn nhưng dẫn đến phản ứng của chân chậm hơn với sự thay đổi điện áp. Chỉ cần chọn bất kỳ giá trị nào bạn có điện trở nhất.
  4. Bộ mã hóa cơ học không phải là thứ đáng tin cậy nhất vì sự mài mòn tiếp xúc và nảy. Đó là lý do tại sao một giải pháp gỡ lỗi tốt là cần thiết. Giá trị tụ điện đã chọn của tôi và thời gian trễ trong mã có thể sẽ không cung cấp kết quả tốt nhất cho bạn. Vì vậy, một chút thử nghiệm là cần thiết. Hoặc chuyển sang một thứ gì đó như bộ mã hóa quang học, nhưng giá của nó cao hơn đáng kể.

Bước 2: Lắp ráp

cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp

Tôi muốn làm cho bàn phím trông sạch sẽ nhất có thể, vì vậy tôi đã hàn tất cả các thành phần ở mặt sau của bo mạch nguyên mẫu. Tôi nghĩ rằng bàn phím sẽ tiện dụng hơn nếu nó được sử dụng ở góc nhỏ. Đó là lý do tại sao tôi hàn Arduino Pro Micro trên bo mạch riêng biệt và kết nối tất cả các chân kỹ thuật số bằng dây với các nút nhấn. Nó thuận tiện hơn để kết nối cáp USB theo cách đó.

Tôi tìm thấy ổ cứng 3.5 cũ để sử dụng làm giá đỡ cho bàn phím, nó khá nặng và ngăn hình dạng bảng trượt trên bàn khi thao tác (miếng chống trượt cũng giúp ích được). Ngoài ra, nó còn có các lỗ vít 3 mm thuận tiện để tôi vặn các chân đế bằng đồng và cố định bảng ở một góc nhỏ.

Bước 3: Lập trình

Mã được viết bằng Arduino IDE. Bạn sẽ cần cài đặt 2 thư viện:

  • Bộ mã hóa bởi Paul Stoffregen
  • Bàn phím của Arduino

Để biên dịch cho Atmega32U4, bạn cũng cần cài đặt tập tin board Arduino Pro Micro, Sparkfun có hướng dẫn rất hay về cách làm điều đó.

Một điều cần lưu ý trước là hãy cẩn thận không để lại "phím bấm" trong mã của bạn. Điều này đã xảy ra với tôi và MCU đã liên tục gửi thư rác một số tổ hợp phím bấm. Cách duy nhất tôi biết cách khắc phục điều này là ghi lại bộ nạp khởi động vào MCU. Nếu bạn sẽ kết thúc như tôi, bạn có thể làm theo hướng dẫn này để ghi boot-loader, bạn sẽ cần một bảng arduino khác để sử dụng như một lập trình viên.

Trong vòng lặp chính, đầu tiên MCU đọc từng trạng thái của nút nhấn, nếu phát hiện thấy sự thay đổi trạng thái từ THẤP đến CAO, hàm keyboard_shortcut (i) được thực thi. Biến i là id của nút nhấn, tổng số nút nhấn được xác định bởi ALL_BUTTONS (trong trường hợp của tôi là 15). Khi được thực thi, keyboard_shortcut (i) gửi CTRL + SHIFT và sau đó là một ký tự được ánh xạ tới id nút: 1-> A, 2-> B, 3-> C, v.v. Một số kết hợp như CTRL + SHIFT + N bị bỏ qua vì nó đã được sử dụng trong Windows10 theo mặc định (trong trường hợp này là để tạo một thư mục mới). Đây là danh sách tất cả các phím tắt mặc định của Windows. Sau thời gian trễ ngắn, MCU sẽ gửi tín hiệu để giải phóng tất cả các phím và chức năng thoát trở lại vòng lặp chính.

Sau khi tất cả các nút được chọn, MCU sẽ kiểm tra xem vị trí bộ mã hóa quay có thay đổi hay không và nếu có, keyboard_shortcut (i) được thực thi với id duy nhất.

Nút bộ mã hóa nhấn biến boolean encoderButtonFlag đảo ngược. Khi xoay bộ mã hóa, các phím tắt khác nhau được gửi đến PC, tùy thuộc vào hướng quay và giá trị encoderButtonFlag.

Nếu debugFlag được đặt thành 1, thông báo gỡ lỗi sẽ được gửi qua UART tới màn hình nối tiếp.

Bước 4: Định cấu hình phím tắt

Định cấu hình phím tắt
Định cấu hình phím tắt
Định cấu hình phím tắt
Định cấu hình phím tắt

Những gì mỗi phím tắt làm là tùy thuộc vào bạn, tất cả chúng ta đều có các tùy chọn khác nhau. Tôi sẽ cung cấp những phím tắt nào tôi đã tự cấu hình để làm ví dụ. Tôi đang sử dụng Linux Mint 19.3 với trình quản lý máy tính để bàn xfce4, vì vậy các ví dụ của tôi chủ yếu liên quan đến các tập lệnh bash, nhưng tôi cũng sẽ hiển thị một số ví dụ cơ bản cho Windows10.

Trong hình đầu tiên, bạn có thể thấy những tập lệnh nào tôi đã ánh xạ tới các phím tắt nào. Nó được thực hiện từ menu cài đặt xfce, quá trình này sẽ diễn ra ngay lập tức. Bạn có thể tìm thấy các tập lệnh này trong kho lưu trữ GitHub của tôi

6 nút nhấn nhỏ hơn ở phía dưới dùng để khởi động các ứng dụng như trình duyệt web hoặc trình quản lý tệp, một số ứng dụng này được gọi từ tập lệnh start_only_one_app.sh, lấy tên tất cả các ứng dụng đã bắt đầu và tìm kiếm ứng dụng bạn muốn khởi động. Nếu cửa sổ ứng dụng đã tồn tại, nó sẽ được lấy tiêu điểm, phiên bản mới khác của ứng dụng sẽ được khởi động.

Các tập lệnh khác:

  • 2nd_display_control.sh - BẬT / TẮT màn hình thứ hai.
  • moon_lamp.sh - BẬT / TẮT Đèn Mặt Trăng của tôi.
  • pc_load.sh - tạo bong bóng thông báo với nhiệt độ và mức sử dụng CPU và GPU hiện tại.
  • shutdown.sh - khởi tạo tắt máy tính với độ trễ 1 phút và tạo bong bóng thông báo trong đó thời gian còn lại được hiển thị.
  • spec_vpn.sh - kết nối với máy chủ OpenVPN cụ thể hoặc nếu kết nối đã tồn tại, hãy ngắt kết nối khỏi máy chủ.
  • shortcut_controll.sh - lấy lệnh (cộng, trừ, tab, đóng) làm đối số, phát hiện cửa sổ nào hiện được lấy tiêu điểm và nếu ứng dụng cụ thể được tìm thấy đang hoạt động sẽ thực hiện hành động điều khiển. Ví dụ: để mở tab mới trong trình soạn thảo văn bản sublime phím tắt mặc định là "CTRL + N" và trong thiết bị đầu cuối xfce - "CTRL + T", vì vậy tập lệnh này cho phép mở tab mới trong sublime và terminal bằng cùng một nút nhấn.

Chức năng đầu tiên của bộ mã hóa vòng quay là điều khiển âm lượng, chức năng thứ hai là điều khiển thu phóng cửa sổ đang hoạt động thông qua shortcut_controll.sh.

Đối với hệ điều hành Windows, bạn có thể ánh xạ các phím tắt đến các ứng dụng thông qua cửa sổ thuộc tính chương trình như trong hình thứ hai. Đối với bất kỳ điều gì khác, bạn sẽ muốn sử dụng AutoHotkey. Đó là ngôn ngữ kịch bản tự động hóa dành cho Windows.

Một số ví dụ đơn giản về cú pháp AHK:

;Kiểm soát âm lượng

^ + t:: Gửi {Volume_Up}

trở lại

^ + v:: Gửi {Volume_Down}

trở lại

; Đóng cửa sổ đang hoạt động

^ + h:: WinGetTitle, Title, A

PostMessage, 0x112, 0xF060,,% Title%

trở lại

;Tắt máy tính

^ + b:: Chạy tắt máy / s

Bước 5: Cải tiến

Cải tiến
Cải tiến

Một số cải tiến có thể có:

  • Các nút nhấn chất lượng tốt hơn.
  • PCB nguyên mẫu sẽ uốn cong khá nhiều khi các nút được nhấn.
  • Ánh sáng RGB để thay đổi màu sắc tùy thuộc vào chức năng bộ mã hóa quay được đặt thành.
  • Nhiều nút hơn (sử dụng IC mở rộng IO).
  • Bộ mã hóa quay tốt hơn (hoặc giải pháp gỡ lỗi tốt hơn).

Đề xuất: