Mục lục:

Osu! Bàn phím: 8 bước (có hình ảnh)
Osu! Bàn phím: 8 bước (có hình ảnh)

Video: Osu! Bàn phím: 8 bước (có hình ảnh)

Video: Osu! Bàn phím: 8 bước (có hình ảnh)
Video: Đây là cách mình học gõ bàn phím bằng 10 ngón !!! 2024, Tháng mười một
Anonim
Osu! Bàn phím
Osu! Bàn phím

Gần đây tôi đã bắt đầu chơi một trò chơi nhịp điệu có tên là osu! và sau khi xem một video về bàn phím mini thương mại, tôi nghĩ rằng sẽ là một dự án thú vị khi tự mình thiết kế một chiếc bàn phím này. Không lâu sau đó, tôi quyết định rằng sẽ là một ý tưởng hay nếu đưa nó vào các tài liệu hướng dẫn như là dự án đầu tiên của tôi.

Nếu bạn muốn sao chép dự án này chính xác đến hướng dẫn cuối cùng thì hãy là khách của tôi, nhưng một số mong muốn của tôi không dựa trên giá thấp nhất hoặc chất lượng tốt nhất. Một số thành phần được chọn gần như thuần túy vì tôi đã để chúng nằm xung quanh. Nếu bạn có thể xử lý nó, tôi khuyến khích bạn tùy chỉnh dự án của mình.

Lưu ý 1: Các thành phần SMD (thiết bị điện tử nhỏ) được sử dụng nên nếu bạn tái tạo dự án này thì cần phải có kỹ năng hàn. có thể một phiên bản dễ hàn sẽ được thêm vào nhưng những đèn led này không đi kèm trong gói lỗ rãnh

Lưu ý 2: Tôi đã cập nhật mã nhiều lần và tôi đã cập nhật lên phiên bản 3ish ngay bây giờ. Tôi sẽ để tất cả mã trực tuyến nhưng tôi khuyên bạn nên sử dụng phiên bản cuối cùng. Nó hiện không có chức năng dẫn đầu nhưng nó phải là chức năng hoạt động tốt nhất.

Bước 1: Vật liệu và giải thích

Vật liệu và giải thích
Vật liệu và giải thích

Tùy thuộc vào cách bạn thực hiện dự án của mình, bạn có thể cần các thành phần khác nhau, nhưng những thành phần này là những thành phần tôi đã sử dụng. Nếu bạn có thời gian và muốn tiết kiệm mony, hãy đặt hàng mẫu aliexpress và không đặt hàng PCB.

1 cáp Arduino pro micro + USB

3 công tắc màu đỏ Kailh BOX

3 điện trở 10k (0805 SMD)

3 tụ điện 100nF (0805 SMD)

4 đèn LED APA102 rgb (5050 SMD)

3 keycaps

1 Bảng mạch in (PCB) được cung cấp trong dự án này

1 trường hợp in 3D được cung cấp trong dự án này

Tại sao tôi sử dụng vi mạch Arduino pro?

Hầu hết các bo mạch arduino như Uno (Atmega328) không có hỗ trợ riêng cho giao tiếp USB. Có, bạn có thể lập trình chúng qua USB rất dễ dàng và tôi nghĩ rằng có những cách giải quyết, nhưng tôi muốn giữ cho nó đơn giản khi nói đến giao tiếp USB và tôi không biết liệu các giải pháp đó có đáp ứng được không. Các bo mạch đó sử dụng chip bên ngoài để có thể giao tiếp USB trong khi vi mạch Arduino pro (Atmega32U4) được tích hợp sẵn.

Công tắc

Có rất nhiều công tắc cơ học mà bạn có thể sử dụng. Tuyến tính, xúc giác hoặc nhấp nháy từ Kailh hoặc Cherry MX. Chọn bất kỳ cái nào bạn thích. Tôi đã sử dụng công tắc Kailh vì chúng rẻ trên Ailexpress. Nếu bạn chọn sử dụng PCB, bạn sẽ cần các công tắc Kailh BOX. Màu sắc quyết định cảm giác.

Các thành phần điện tử

Không phải giải thích nhiều về chúng trong chương này, nhưng nếu bạn không sử dụng PCB, tôi khuyên bạn chỉ nên sử dụng các thành phần lỗ rãnh thông thường để dễ hàn. Thật không may, các đèn led được sử dụng không có sẵn trong các gói lỗ máng. Tôi cũng không khuyên bạn nên sử dụng dây trên các gói SMD trừ khi bạn rất tự tin vào kỹ năng hàn của mình. Ngay cả đối với SMD trên PCB kỹ năng hàn "nâng cao" cũng được trang bị.

Nhà ở

Tôi có cung cấp một căn nhà trong dự án này, nhưng nó là sai sót tại thời điểm này. Cần chỉnh sửa để lắp bu lông, chỗ hở cho led chưa tối ưu, arduino bị hở và cần khoét một phần để lắp USB vào. Trong tương lai, một khu nhà mới có thể được thêm vào. Nếu bạn có một máy in 3D, hãy tiếp tục và in nó, nhưng vui lòng không cố gắng in trường hợp sai sót này nếu bạn không sử dụng và chỉ sử dụng một số loại hộp dự án.

Bước 2: Sơ đồ

Sơ đồ
Sơ đồ

Sơ đồ cho dự án này khá đơn giản, nhưng tôi muốn giải thích các thành phần cho những người quan tâm và không biết cách triển khai này.

Chuyển kết nối sang Arduino

Các công tắc được kết nối với các chân 0, 2 và 3 của Arduino vì các chân đó có thể được sử dụng làm ngắt bên ngoài. Điều này được giải thích thêm trong phần mã.

Mạch khử mùi

Ở phía bên trái của giản đồ là một mạch được sao chép 3 lần. Mạch này được sử dụng để gỡ lỗi công tắc. Để biết gỡ lỗi là gì, bạn cần hiểu tính năng bật nảy của công tắc và không khó để hiểu.

Trước tiên, hãy nhìn vào mô phỏng này để vẽ một bức tranh đầu tiên (nhấp nhanh vào công tắc và nhìn vào tín hiệu bên dưới)

Khi bạn nhấn hoặc nhả một công tắc, nó sẽ bật lại và tín hiệu của bạn thay đổi giữa mức cao và mức thấp một vài lần trong vài mili giây. Arduino thực sự nhanh và đọc mọi mức cao và thấp trong thời gian ngắn này. Chương trình sẽ gửi một phím nhấn hoặc thả mỗi khi đọc mức cao hoặc thấp, do đó, với mỗi lần nhấn, máy tính của bạn sẽ nhận được nhiều lần nhấn phím. Không lý tưởng cho một trò chơi nhịp điệu.

Mạch debounce này sẽ làm chậm đường giảm tín hiệu. Tín hiệu đến Arduino sẽ không thể thay đổi nhanh như hiện tượng nảy xảy ra vì vậy nó sẽ được đọc bằng một lần nhấn. Đừng lo lắng về việc nó sẽ chậm lại trong lần nhấn thực tiếp theo vì nó sẽ xảy ra.

Nâng cao:

Atmaga32U4 đọc mức thấp kỹ thuật số ở mức 0,2Vcc - 0,1V = 0,9 volt. Điện áp của tụ điện tại bất kỳ thời điểm nào trong quá trình phóng điện của nó là Vcc * e ^ (- t / RC). Nếu bạn đo thời gian tắt khác trên công tắc của mình, bạn có thể tính toán các giá trị điện trở và tụ điện của mình.

biểu mẫu công thức

Đèn LED

Các đèn LED rgb là đèn LED APA102 có thể định địa chỉ riêng bằng cách sử dụng đồng hồ và đường dữ liệu. Không cần các thành phần bên ngoài để làm cho chúng hoạt động. Đối với nhiều đèn LED, bạn nên sử dụng một tụ điện song song với 5 volt và nối đất nhưng chỉ với 4 đèn LED thì bạn không cần nó.

Bước 3: Thiết kế bảng

Ban thiết kế
Ban thiết kế

PCB được thiết kế trong JLCPCB. Tôi không được họ tài trợ nhưng đối với các nguyên mẫu rẻ tiền, họ tạo ra PCB xuất sắc. Đối với 2 đô la, bạn nhận được 10 của cùng một bảng, nhưng vận chuyển là khoảng 11 đô la đối với tôi. Nếu bạn không nhất thiết muốn ánh sáng rgb và chỉ định sản xuất một chiếc, bạn nên cân nhắc việc chế tạo bàn phím không có PCB.

Thiết kế của hội đồng quản trị khá thẳng thắn. Tôi chỉ cần thêm một thành phần cho các công tắc, nhưng sau khi xem một số video, tôi đã hiểu nó. Lỗ hổng duy nhất mà tôi nhận ra là vị trí của các lỗ hơi quá gần với các công tắc.

Để đặt mua PCB, hãy truy cập https://jlcpcb.com/ và chọn tùy chọn 2 lớp. Nó sẽ yêu cầu bạn cung cấp một tệp Gerber. tải xuống tệp ".zip" và kéo nó vào cửa sổ. Bạn không cần phải giải nén nó. Các cài đặt sẽ ổn và bạn có thể tiếp tục và hoàn thành đơn đặt hàng.

Bước 4: Mẹo thiết kế và lắp ráp trường hợp

Mẹo thiết kế và lắp ráp trường hợp
Mẹo thiết kế và lắp ráp trường hợp
Mẹo thiết kế và lắp ráp trường hợp
Mẹo thiết kế và lắp ráp trường hợp
Mẹo thiết kế và lắp ráp trường hợp
Mẹo thiết kế và lắp ráp trường hợp
Mẹo thiết kế và lắp ráp trường hợp
Mẹo thiết kế và lắp ráp trường hợp

Thiết kế

Như đã đề cập trước đây, thiết kế của tôi có sai sót nhưng bạn vẫn có thể in nó nếu bạn muốn. thiết kế được thực hiện trong Fusion 360. Đây là một phần mềm tạo mô hình 3D miễn phí và với kinh nghiệm của tôi từ nhà phát minh và solidworks, nó khá dễ dàng để làm việc với. Các vòng tròn ở các góc của hộp đựng để tránh bong tróc lớp in.

Nếu bạn làm cho trường hợp của riêng bạn, chỉ có một điều thực sự quan trọng. Công tắc của bạn cần được đặt chắc chắn và không thể di chuyển. Tôi đã cung cấp hình ảnh về các hình cắt vuông với kích thước để bạn có thể sử dụng nó cho thiết kế của riêng mình giả sử bạn sử dụng công tắc Kailh BOX.

cuộc họp

Bây giờ bạn có tất cả các thành phần cần thiết để lắp ráp. Có một đơn đặt hàng để lắp ráp phiên bản đầu tiên này vì các thiết bị chuyển mạch được hàn.

1. Hàn các thành phần SMD. đây là các điện trở, tụ điện và đèn LED.

2. Hàn vi mạch Arduino pro.

3. Đặt 3 công tắc vào tấm bìa in 3D trước khi hàn. Không thể tháo tấm che sau khi hàn các công tắc. Không nên phá hủy các công tắc và có thể phá hủy chúng.

4. Bây giờ hàn các công tắc tại chỗ. Làm điều này càng nhanh càng tốt vì các công tắc nhựa có thể bị chảy và làm hỏng chúng hoặc giảm đáng kể số lần nhấp của chúng.

5. Đặt tấm bìa đã lắp ráp vào hộp được in 3D và cố định bằng băng dính hoặc sử dụng bu lông nếu chúng không ảnh hưởng đến các chốt khóa.

6. Đặt keyCaps trên các công tắc và bạn đã hoàn tất.

Gợi ý

Hủy bỏ hoặc che các đèn LED trên arduino sau khi tải lên mã của bạn. Đèn led rất đẹp nếu mã của bạn không tải lên nhưng không đẹp khi nhìn như một sản phẩm hoàn chỉnh. Cần có kỹ năng và nhíp nhọn.

Ngoài ra, một số chân kẹp ở phía dưới rất đẹp để chống trượt và cho ánh sáng rgb chiếu qua.

Bước 5: Mã V1 (lỗi phần cứng)

Mã V1 (lỗi phần cứng)
Mã V1 (lỗi phần cứng)
Mã V1 (lỗi phần cứng)
Mã V1 (lỗi phần cứng)

Mã cho dự án này không thân thiện với người mới bắt đầu vì vậy nếu bạn mới bắt đầu lập trình trong arduino thì mã này có thể sẽ khiến bạn sợ một chút. Tuy nhiên, tôi sẽ cố gắng giải thích những gì đang diễn ra tốt nhất có thể. Một số điều sẽ được giải thích sau này trong tin nhắn này, vì vậy nếu bạn có thắc mắc, trước tiên hãy đọc toàn bộ.

Tải lên mã

Đầu tiên hãy tải xuống tất cả 3 tệp ".ino" và đặt chúng vào một thư mục. Nếu bạn không có Arduino IDE, chỉ cần tải xuống miễn phí trên trang arduino chính thức.

Kết nối Arduino với PC và mở "OSU_Keyboard_code_V1.ino". Trong Bảng công cụ, chọn "Arduino / Genuino Micro". Cũng trong Công cụ chọn cổng COM phù hợp. Điều này đôi khi có thể thay đổi. Để tải mã lên Arduino của bạn, chỉ cần nhấp vào mũi tên ở trên cùng bên trái của màn hình và đợi cho đến khi nó cho bạn biết nó đã hoàn thành ở phía dưới bên trái.

OSU_Keyboard_code_V1

Bao gồm và xác định

Trước tiên, bạn cần bao gồm thư viện Bàn phím. Điều này giúp bạn có thể sử dụng Arduino làm bàn phím.

Tiếp theo tôi xác định một số giá trị. Định nghĩa giống như một biến nhưng chúng không thể thay đổi trong khi chương trình đang chạy. 9 đầu tiên là ký tự bàn phím, số pin arduino và các bit cổng.

Sau đó là các bit cổng của dữ liệu LED và đồng hồ.

Ngoài ra, số lượng đèn led được xác định và một biến cho góc của bánh xe màu.

Cài đặt

Phần mã này sẽ chỉ được thực thi một lần khi arduino được cắm vào.

Đầu tiên, đồng hồ và chân dữ liệu của đèn LED được đặt làm đầu ra và chân chuyển mạch làm đầu vào. Đây là phiên bản nâng cao của pinMode (). Nếu bạn quan tâm tìm kiếm "thao tác cổng trực tiếp".

Keyboard.begin () chỉ cần khởi động kết nối usb làm bàn phím.

3 ngắt tiếp theo được liên kết với các chân công tắc. Mỗi khi một thay đổi được phát hiện trên chân công tắc, một chương trình nhỏ sẽ được thực thi. Chương trình nhỏ này sẽ được thực hiện thêm vào.

Vòng

Phần này sẽ liên tục lặp lại trong khi arduino được cấp nguồn.

Tôi chỉ sử dụng nó để thay đổi và cập nhật màu sắc của đèn LED.

Ngắt

Ở đây, các chương trình nhỏ, sẽ chỉ được thực thi khi phát hiện thấy sự thay đổi trên các chân công tắc, được thực hiện. Chúng giống hệt nhau ngoại trừ việc chúng phản ứng với chân nào.

Đầu tiên, nó sẽ kiểm tra xem nút được nhấn hoặc nhả ra và gửi lệnh bàn phím chính xác.

LED (giải thích theo một thứ tự khác)

Nếu bạn tò mò về cách các đèn LED được điều khiển, bạn nên xem biểu dữ liệu APA102.

OneBit

Đây lại là phiên bản thao tác cổng trực tiếp của ghi kỹ thuật số.

Đầu tiên, nó kiểm tra xem nó sẽ gửi 0 hay 1 và tương ứng kéo chân dữ liệu xuống thấp hoặc cao. Sau đó, nó ghi chân đồng hồ lên cao rất ngắn và ghi xuống thấp một lần nữa.

OneByte

Điều này lặp lại oneBit 8 lần với vòng lặp "for". Nó đọc bit đầu tiên trong một byte và chuyển giá trị của nó cho hàm oneBit và thực hiện tương tự cho 7 bit tiếp theo.

LedData

Điều này lặp lại oneByte 4 lần để cung cấp dữ liệu cần thiết cho một đèn led. Byte đầu tiên bắt đầu bằng 111xxxxx và giá trị độ sáng 5 bit ở vị trí của xxxxx. Độ sáng có thể được đặt từ 0 đến 31 (2 ^ 5 = 32 mức).

3 byte tiếp theo dành cho các giá trị xanh lam, xanh lục và đỏ. Một byte cho mỗi màu.

ColorWheelThisLed

Hàm này gọi ledData cung cấp cho nó các màu rgb tùy thuộc vào một góc trong bánh xe màu.

Giá trị 16 bit là cổ tức trong 6 phần cách đều nhau 60 độ. Nhìn vào hình ảnh có thể giúp bạn hiểu rõ hơn.

(phiên bản 8 bit cũng được cung cấp nhưng bị nhận xét vì nó quá chập chờn)

StartEndFrame

Khung bắt đầu cần được sử dụng mỗi khi bạn muốn gửi màu mới cho led và muốn cập nhật màu thực của led

Tôi chỉ sử dụng khung bắt đầu vì khung cuối không cần thiết. Khung bắt đầu là 4 byte của 0. Khung kết thúc là 4 byte là 255 (11111111).

Bước 6: Mã V2 (phần mềm Debounce With Timers)

Code V2 (phần mềm Debounce With Timmers)
Code V2 (phần mềm Debounce With Timmers)

Sau một thời gian chơi, tôi nhận thấy một số vấn đề khai thác hai lần với lỗi phần cứng. Điều này có thể được khắc phục bằng một số điện trở hoặc tụ điện có giá trị khác, nhưng vì các nút và nắp không thể tháo rời nên tôi nghĩ rằng gỡ lỗi phần mềm sẽ là một giải pháp tốt. Việc gỡ lỗi phần mềm sẽ hoạt động tốt hơn việc gỡ lỗi phần cứng có được thực hiện hay không. Trong thiết lập hiện tại của tôi, tôi không tháo nắp nên tôi chỉ để lại các điện trở và tụ điện tại chỗ.

Tôi sẽ không giải thích mã rộng rãi như phiên bản trước vì nó khó giải thích hơn một chút.

Về cơ bản, hầu hết các mã hoạt động giống nhau và mã dẫn được giữ nguyên. những gì đã thay đổi là các ngắt bên ngoài không sử dụng các chức năng arduino nữa. Bây giờ nó hoạt động trong mã C thuần túy. Và bây giờ những gì được thêm vào là phần mềm bị gián đoạn. Đối với điều này, tôi đã sử dụng bộ định thời AVR để đợi một khoảng thời gian nhất định cho đến khi ngừng hoạt động. Bởi vì các bộ định thời được ngắt dựa trên thời gian giảm dần không bị ảnh hưởng bởi bất kỳ điều gì xảy ra trong vòng lặp.

Nhược điểm duy nhất mà tôi có thể đưa ra là không thể sử dụng các chức năng trì hoãn của arduino nữa. Bởi vì các chức năng trì hoãn sử dụng Timer 0 và chương trình này sử dụng Timer 0 để gỡ lỗi.

Trong hình ảnh, bạn có thể thấy mã hoạt động gần như thế nào. Bit ghi nhớ cho biết nếu một bộ đếm thời gian đang chạy. Điều không được mô tả là trường hợp ở cuối nút nhấn, đầu vào thấp. Trong trường hợp này, chỉ một lần nhấn phím sẽ được gửi trong khi nút đã được thả. Điều đó có nghĩa là phím sẽ được giữ ở mức liên quan đến máy tính. Đối với tiếng kêu hiếm hoi này, một séc sẽ được định dạng trước khi bộ đếm thời gian hết hạn. Nếu vào cuối bộ đếm thời gian mà nút này không được nhấn, một lệnh keyrelease sẽ được gửi.

Bước 7: Mã V3 (phần mềm Debounce With Vertical Counter) (khuyến nghị) (không có đèn LED)

Mã V3 (phần mềm Debounce With Vertical Counter) (khuyến nghị) (không có đèn LED)
Mã V3 (phần mềm Debounce With Vertical Counter) (khuyến nghị) (không có đèn LED)

Mã này CŨNG có một phiên bản mà bạn không cần điện trở kéo xuống. Đảm bảo bạn kết nối từng nút với đầu vào và PHÁT TRIỂN! Trình kéo lên tích hợp được sử dụng

Tôi cũng đã trải nghiệm một số lần nhấn chưa đăng ký trong mã V2. Tôi nghĩ rằng mã chỉ trở nên quá phức tạp với bộ đếm thời gian và ngắt bên ngoài của nó và tôi có thể đã bỏ lỡ một số ngoại lệ. Vì lý do này, tôi đã cố gắng từ đầu với việc tìm kiếm trên internet các phương pháp gỡ lỗi phần mềm.

(thành thật mà nói, ít nhất một nửa dự án này đã trở thành nút gỡ lỗi vào thời điểm này)

Sau một số tìm kiếm, tôi bắt gặp bài đăng này:

www.compuphase.com/electronics/debouncing….

Thành thật mà nói, tôi đã mất khá nhiều thời gian để hiểu đầy đủ về cách thức hoạt động chính xác của nó. Nó liên quan đến một số thao tác bit khá phức tạp, nhưng tôi sẽ cố gắng làm cho nó dễ dàng nhất có thể. Tuy nhiên, những giải thích của tôi sẽ chỉ là phần bổ sung cho bài đăng, vì vậy ít nhất bạn nên đọc "bộ đếm dọc", "triển khai có chú thích" và "giảm độ trễ".

Lời giải thích của tôi

Sơ đồ thời gian (được tạo trong WaveDrom) mà tôi đã thêm vào sẽ làm cho phép toán bit khó hiểu này ít nhất là dễ hiểu hơn một chút. Lưu ý rằng hình ảnh có 2 bit bộ đếm, nhưng mã của tôi có 3. Điều này có nghĩa là thời gian gỡ lỗi lâu hơn.

Một bit cho mỗi giá trị

Với việc triển khai bộ đếm dọc, có thể gỡ bỏ nhiều nút cùng một lúc, song song. Tất cả các giá trị có kiểu Byte (uint8_t) và bao gồm 8 bit. chúng tôi không quan tâm đến giá trị của bất kỳ byte nào trong số này, mà chúng tôi quan tâm đến các bit của riêng chúng. Mỗi buton được gỡ lỗi chỉ sử dụng một bit của mỗi byte. Nút đầu tiên chỉ sử dụng bit đầu tiên của mỗi byte, nút thứ hai sử dụng bit thứ hai, v.v.

Tất cả cùng một lúc

Bằng cách sử dụng toán học bit, có thể thực hiện song song các lỗi pin này. Và, mặc dù toán học bit khá phức tạp, nhưng nó rất hiệu quả đối với bộ xử lý.

Với kiểu dữ liệu 8 bit, có thể thực hiện điều này cho 8 nút. Sử dụng các kiểu dữ liệu lớn hơn cho phép nhiều lần gỡ lỗi hơn cùng một lúc.

Sự ra đi

Quy trình gỡ lỗi được thực hiện cứ sau 1 mili giây với một ngắt hẹn giờ.

khi nhấn nút, Trạng thái nút, là trạng thái đã gỡ bỏ, sẽ giảm dần, cho biết một lần nhấn nút. Để phát hiện một bản phát hành, nút phải ở mức cao đủ lâu, cho thấy nó đã không bị trả lại trong một thời gian nhất định. Toggle được sử dụng để biểu thị sự thay đổi của nút. Các bit bộ đếm được sử dụng cho…. đếm bao lâu không có một lần thoát.

Delta chỉ ra sự khác biệt giữa đầu vào và trạng thái đã gỡ bỏ. Chỉ khi có sự khác biệt, bộ đếm sẽ tính. bộ đếm sẽ được thiết lập lại khi phát hiện bị trả lại (delta là 0).

Bước 8: Kết quả

Image
Image

Nếu mọi thứ suôn sẻ, bây giờ bạn sẽ có một bàn phím hoạt động để chơi Osu! trên. Cá nhân tôi không nhận thấy bất kỳ độ trễ nào cả. Nếu bạn làm xin vui lòng cho tôi biết. Ngoài ra nếu có bất kỳ câu hỏi nào hãy hỏi bất cứ điều gì.

Những đề cập trước đây về V2 không có ý nghĩa như một lời hứa, vì vậy đừng hoãn dự án này vì bạn muốn đợi V2.

Tôi hy vọng bạn thích bàn phím của mình!

Osu! tên: Thomazzz3

Xử lý sự cố

Nếu bạn cho rằng mình đang gặp sự cố với bàn phím, trước tiên hãy mở trình soạn thảo văn bản và nhấn từng phím một lần trong thời gian ngắn.

Một hoặc nhiều phím không hoạt động?

Có thể bạn đã phá hủy một công tắc bên trong khi đang hàn. Nếu bạn có đồng hồ vạn năng đặt nó liên tục / phát ra tiếng bíp, hãy đặt nó song song với công tắc trong khi Arduino chưa được kết nối và nhấn phím. Nó sẽ phát ra tiếng bíp.

Các ký tự bạn vừa nhập có khớp với các phím bạn đã định cấu hình trong Osu không! ?

Thay đổi các ký tự trong mã arduino trong 3 #Defines đầu tiên ('' là nessecary!).

Hoặc thay đổi Osu của bạn! cài đặt để sử dụng các khóa đã định cấu hình.

Một hoặc nhiều phím được lặp lại một vài lần?

Mạch gỡ lỗi chắc chắn không hoạt động cho các thiết bị chuyển mạch của bạn hoặc không được hàn chính xác. Kiểm tra các kết nối hàn của bạn. Nếu nó vẫn xảy ra, hãy thử giá trị tụ điện là 1uF. Điều này sẽ rất khó khăn cho người dùng PCB.

Nếu bạn đang gặp sự cố với đèn LED của mình

Đèn LED có nhấp nháy không?

Kết nối hàn có thể bị lỏng. Nếu bạn sử dụng PCB, hãy xác nhận rằng thiếc hàn thực sự chảy trên miếng đệm trên bản in.

Không có đèn LED nào hoạt động hoặc từ một số đèn LED nhất định ngừng hoạt động?

Kiểm tra các điểm ngắn giữa các hình nón của đèn LED đầu tiên (theo dõi) và kiểm tra xem có được kết nối tốt trên các đầu ra của Arduino và lại đèn LED đầu tiên hay không. Nếu xác nhận đúng và vẫn còn lỗi, bạn có thể cần phải thay thế đèn LED đầu tiên.

Nếu điều này được khắc phục, nó sẽ lặp lại cho các đèn LED tiếp theo nếu cần.

Đề xuất: