Mục lục:
- Bước 1: Vật liệu và công cụ
- Bước 2: Cắt dải LED thành các dải nhỏ hơn
- Bước 3: Hàn các màn hình lại với nhau
- Bước 4: Hàn điện tử cốt lõi
- Bước 5: Bộ điều khiển
- Bước 6: Áo sơ mi
- Bước 7: Lập trình
- Bước 8: Thành phẩm
Video: Chơi Pong màn hình linh hoạt trên áo sơ mi: 8 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
Đây là trang phục Halloween của tôi năm 2013. Nó đã được thực hiện trong khoảng một năm và mất khá nhiều giờ để tạo ra. Màn hình có kích thước 14 x 15 pixel, do đó, độ phân giải khá thấp nhưng nó vẫn có thể làm một số điều thú vị. Vật lý linh hoạt theo mọi hướng, mặc dù không thể gấp lại mà không bị hư hại. Nó có một bộ điều khiển bao gồm một nút duy nhất và nắp trượt, được kết nối với một mega chuyên nghiệp qua USB. Để giữ cho nó tồn tại trong thời gian dài, nó sử dụng hai viên pin khổng lồ 2200 mAh mắc nối tiếp để có điện áp cần thiết và sau đó là một bộ điều chỉnh 5 Volt để làm cho nó có thể sử dụng được. Tất cả các thiết bị điện tử được đặt trong các túi bên trong áo sơ mi để chúng có thể được lấy ra và vì vậy áo sơ mi có thể được giặt. Nó chơi một trò chơi chức năng của bóng bàn. Đầu tiên, nó đáng yêu với dòng chữ "PONG PLAY" bằng chữ cái màu xanh lam đáng yêu bằng cách sử dụng phiên bản sửa đổi của phông chữ Tom Thumb (có thể tìm thấy tại https://robey.lag.net/2010/01/23/tiny-monospace-font.html). Sau năm giây, bạn có thể cung cấp tùy chọn nhấn nút để tiếp tục hoặc không nhấn nút và để lại trải nghiệm hoàn toàn tốt. Khi một người chọn nhấn nút, trò chơi bắt đầu. Một mái chèo màu đỏ ở bên phải là mái chèo máy tính và mái chèo màu xanh lá cây bên phải là mái chèo của người chơi, được điều khiển bởi nồi trượt để di chuyển lên và xuống. Bóng nảy xung quanh khi mỗi bên cố gắng ghi một điểm. Người chơi có thể đánh bóng bằng mép mái chèo của họ để tăng tốc độ (một tính năng hay) trong khi máy tính không thể làm điều này, và thay vào đó, họ sẽ bị mắc kẹt khi di chuyển chậm hơn bóng một chút. Khi một điểm được ghi, một điểm ảnh sẽ chuyển thành màu trắng trên thanh điều khiển bên ghi điểm. Nó đếm ở dạng nhị phân từ dưới lên. trong đó màu xanh lá cây hoặc màu đỏ là số 0 và màu trắng là số 1. 21 là số điểm để thắng (hoặc thua tùy thuộc vào người được 21 điểm) và do đó khi mái chèo của người chơi đọc 10101, dòng chữ "YOU WIN" được hiển thị. Một lần nữa trong Tom Thumb đã được sửa đổi. Điều tương tự cũng xảy ra nhưng với "BẠN MẤT" được hiển thị thay thế. Sau khi thắng hoặc thua, trò chơi bắt đầu lại đến điểm ngay sau Pong Play. Để khởi động lại hoàn toàn, hãy nhấn nút khởi động lại trên "Hộp ma thuật", còn được gọi là hộp-có-tất cả-đồ-điện-tử-ngoại-trừ-màn-hình, được nhấn.
Bước 1: Vật liệu và công cụ
Những thứ được đánh dấu * là tùy chọn nhưng được khuyến nghị Và như vậy không theo thứ tự cụ thể nào… Vật liệu: 4 Yards of Adafruit Neopixle 60 pixle trên mét dải 1 áo phông * 1 đôi Dây treo 1/2 yard vải sẽ là quá đủ (Không Kiểu dệt co giãn được ưu tiên) Cáp 6 chân USB A nam sang USB B nam 1 đầu nối USB A nữ 3 đầu nối 2 chân JST nữ 4 dây nam 2 chân JST bộ sạc pin 2 pin 6600 mAh 1 Nút kiểu arcade 1 arduino pro-mega 1 tiêu đề FTDI 1 đầu nối USB B cái với bảng ngắt điện 1 công tắc bật / tắt (chuyển đổi) 1 công tắc đặt lại (chuyển đổi hoặc tạm thời) 1 chiết áp trượt * 1 núm nồi trượt 1 cặp đầu nối amp cao * 1 hộp dự án 1 bộ điều chỉnh điện áp 5V 3+ amp nhỏ một số nhựa hàn một số dây vài sợi * một số keo nóng * một số đàn hồi một thời gian (Có thể nhiều hơn một chút so với "một số") một số kiên trì (Có thể bạn sẽ cần một chút thực tế này) một số ống co nhiệt hoặc băng dính điện một số keo siêu dính một số sắt trên các Công cụ hỗ trợ * Giúp Bàn tay Bình thường s (hoặc ai đó có quyền truy cập vào chúng) Sắt hàn * Súng bắn keo nóng Dremel hoặc giấy nhám Đục dây Dao tuốt dây Máy cắt ghim Súng bắn vít Máy cưa ghim Máy may Cào vải
Bước 2: Cắt dải LED thành các dải nhỏ hơn
Sử dụng dụng cụ cắt ưa thích của bạn và cắt dải thành 14 đoạn, mỗi đoạn dài 15 pixel. Chỉ cắt giữa các vết đồng, có nhãn như "DO" "DIN" "+ 5V" và "GND". Nếu nó đã được hàn trên đồng, họ vừa cắt qua. Cố gắng không cắt quá nhiều vào phần đồng tiếp xúc nhưng nếu bạn cắt nó một chút là được. Sau khi tất cả 14 dải đã được cắt, hãy cắt bớt một chút cao su ở mỗi đầu để tránh hàn các dải.
Bước 3: Hàn các màn hình lại với nhau
Lấy dây và cắt nó thành các đoạn khoảng 3,5 inch (9 cm). Trong trường hợp của tôi, tôi có ba màu khác nhau để giúp giữ thẳng dễ dàng hơn khi hàn, nhưng một màu sẽ hoạt động tốt. Bạn sẽ cần khoảng 40 chiếc trong số này, nhưng hãy cắt thêm một vài chiếc nữa để đề phòng. Khi bạn đã cắt xong dây, hãy dải và thiếc các đầu (Nếu bạn có kinh nghiệm hàn, bạn có thể chuyển sang đoạn tiếp theo), nghĩa là sau khi bạn loại bỏ một chút nhựa, hãy đặt một ít thuốc hàn vào các đầu của mỗi dây. Không làm nóng vật hàn và cố gắng di chuyển đến dây dẫn, hãy làm nóng bằng mỏ hàn bạn đang hàn từ dưới cùng của đồng và đặt vật hàn lên trên. Hãy kiên nhẫn và đợi cho dây nóng để làm tan chảy vật hàn. Thật là hấp dẫn để làm cứng sắt hàn với vật hàn để bắt đầu nó (Sự thiếu kiên nhẫn của tôi và tôi biết chính xác cảm giác của bạn) nhưng vật hàn sẽ không dính. Làm tương tự đối với các vết đồng lộ ra trên mỗi đầu của các phần dải. Nếu nó đã có chất hàn, đừng lo lắng về nó. Đối với dải, bạn có thể muốn xây dựng một chút gò để làm cho nó dễ dàng hơn sau này. Khi làm việc với dải, hãy thực hiện nhanh chóng và cố gắng không mất nhiều thời gian để tác động nhiệt lên dải. Chỉ làm những gì bạn cần làm để làm tan chảy chất hàn trên vết. Hàn một dây trên mỗi vết vào cuối dải đầu tiên (Dải đầu tiên là dải có dây và đầu nối, hãy hàn nó vào đầu hở). Nếu bạn nhìn vào dải, bạn sẽ thấy các mũi tên nhỏ trên nó đi lên đến cuối nơi bạn đã hàn dây. Lấy một dải khác sao cho các mũi tên hướng ngược lại và hàn dây đi từ dấu vết GND với dấu vết GND của dây kia, + 5V đến + 5V, v.v. Lặp lại điều này để đảm bảo rằng các mũi tên chuyển hướng sau mỗi đoạn để nếu bạn đi theo chúng, nó sẽ ngoằn ngoèo lên xuống và cuối cùng nó có thể được kéo dài ra trên một dải dài. Khi tất cả 14 dải đã được hàn, hãy xếp chúng ra và xếp thẳng hàng để đèn LED tạo thành lưới. Sau đó, giữ chúng lại với nhau bằng phương pháp có thể loại bỏ sau này mà không làm hỏng dải. Tôi đã sử dụng băng keo. Nó đủ dính để giữ mọi thứ lại với nhau nhưng không dính đến mức để lại cặn. Tôi không khuyên dùng bất cứ thứ gì cho vĩnh viễn, như kim bấm hoặc băng keo. Khi mọi thứ đã được gắn lại với nhau, hãy hàn một dây từ dải ở phía dưới + 5V với dải ngay bên cạnh nó. Lặp lại cho đến khi toàn bộ phía dưới có các vòi nguồn đi hết chiều ngang. Điều này giúp màn hình không bị mờ khi dòng đèn LED phát triển.
Bước 4: Hàn điện tử cốt lõi
Hàn bảng ngắt USB B (BOB) vào đầu nối USB B. Hàn các dây thích hợp vào đầu nối USB A. Tôi khuyên bạn nên xem đầu ra của trình kết nối như được tìm thấy tại trang web này, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Đừng lo lắng về nơi hàn các đầu dây khác trên đầu nối USB A ngay bây giờ; sẽ được đề cập trong bước bộ điều khiển. Cắt đầu nối dữ liệu khỏi dải, đầu nối cái, không phải đầu nối nam (Đầu nối cái được lấy từ đầu kia). Hàn các đầu nối JST đực vào các đầu của pin sao cho màu đỏ chuyển sang màu đỏ và màu đen chuyển sang màu đen. Làm tan chảy ống co nhiệt trên các dây tiếp xúc (trượt qua trước khi hàn) để chúng không bị chập hoặc sử dụng thứ khác như băng dính điện hoặc keo nóng. Hàn một số dây vào tất cả các đầu nối JST cái. Đảm bảo cắm đầu đực để các chân không bị dịch chuyển xung quanh. Cẩn thận về cực và đảm bảo dây phù hợp với các đầu nối nam. Hàn dây vào một đầu nối điện áp cao (nhưng không phải là cặp), một lần nữa, đảm bảo mọi màu sắc khớp với nhau và chúng được cắm với nhau để tránh bất kỳ chân nào bị dịch chuyển. Hàn đầu nối / cụm dây chỉ cái sao cho chúng được đấu nối tiếp chứ không phải song song, để vượt qua ngưỡng điện áp của bộ điều chỉnh điện. Vì vậy, hãy hàn dây dương với dây âm của cụm còn lại để bây giờ chúng ta có một dây dương chưa hàn và một dây âm chưa hàn và hai dây đã hàn được hàn vào các đầu nối khác nhau. Lấy dây âm và lưu được hàn vào dây âm ở nơi khác. Bây giờ lấy dây dương và hàn nó vào công tắc Nếu có ba chân trở lên (hoặc nhiều hơn một cách "bật"), hãy hàn nó vào chân giữa. Lưu ý rằng "Pin giữa" có thể không nằm ở giữa. Cách để xác định nó là tìm chân cắm mà khi công tắc bật ở bất kỳ trạng thái nào sẽ luôn được kết nối với chân khác. Nếu không có chân nào giống như thế này thì bạn có một công tắc rất đặc biệt; chỉ cần kết nối nó với bất kỳ chân nào và đảm bảo rằng dây tiếp theo được hàn vào công tắc sẽ được kết nối với dây đó ở ít nhất một trạng thái bật. Bây giờ hàn dây nạp dương trên bộ điều chỉnh điện áp vào đầu đối diện của công tắc, như đã thảo luận ở trên. Hàn điện áp dương ra đầu dương của đầu nối dòng điện cao chưa được hàn. Lấy dây nạp âm và hàn nó vào đầu âm của đầu nối dòng điện cao. Bây giờ chúng ta sẽ hàn nguồn song song với Arduino và dải Nguồn. Bây giờ lấy các dây đầu ra của bộ điều chỉnh điện áp và hàn hai đoạn dây ở cả hai đầu cực dương và âm để chúng ra theo hình chữ Y. Hàn đầu nối hai chân vào dây âm và dương của cụm đèn led. Không quan trọng bạn sử dụng loại kết nối nào, nó có thể là JST hoặc trong trường hợp của tôi là một số cáp nguồn / âm thanh hoặc thứ gì đó (tôi không chắc và xin lỗi vì không có bất kỳ hình ảnh nào). Hàn một trong các dây nguồn dương vào đầu dương của đầu nối đối diện cho dải đèn và một trong các dây âm vào chân còn lại trên đầu nối. Làm tương tự nhưng đối với đầu nối JST nam / cụm dây. Trong khi đó, hãy nhớ cách nhiệt các mối nối hàn để tránh quần đùi. Bây giờ, hãy làm gì với đầu nối USB B. Hàn dây dương vào lỗ 5v trên Arduino Pro Mega. Lấy dây nối đất và hàn nó vào một lỗ GND. Lấy D + và hàn nó vào chân kỹ thuật số (hoặc trong trường hợp này là lỗ) 40. Hàn D- với chân tương tự 15. Hàn đầu dữ liệu của đầu nối cái kết hợp với đầu nối nam của dải LED vào chân dữ liệu 6 và dây nối đất đến chân GND. Mặt nạ hoặc băng dính scotch có tác dụng tốt trong việc giữ các dây dẫn vào bảng để chúng không rơi ra ngoài khi lật ngược để hàn. Bây giờ lấy một nút tạm thời và hàn một đầu dây từ một đầu vào chân VCC (hoặc bất kỳ chân đầu ra điện áp nào) và đầu kia vào chân ĐẶT LẠI.
Bước 5: Bộ điều khiển
Đầu tiên là chọn hình dạng phù hợp để bắt đầu. Tất cả phụ thuộc vào cách bạn muốn cấu trúc bộ điều khiển. Tôi muốn có thêm một bộ điều khiển phẳng vì vậy tôi đã có một mảnh ván 3 1/2 "x 3/4". sắp xếp các bộ phận sao cho phù hợp và thoải mái khi làm việc. Sử dụng một đường cong kiểu Pháp, la bàn, hình tam giác và cạnh thẳng để vẽ tất cả các phần sẽ đi đến đâu. Cắt đường viền cơ bản bằng cách sử dụng công cụ cắt mà bạn chọn. Cưa cấm sẽ là tốt nhất nhưng tôi đã sử dụng cưa đối phó, loại này hoạt động tốt. Chà nhám các cạnh để chúng chuyển tiếp mượt mà, sau đó chà nhám các góc để tạo cảm giác thoải mái hơn. Khoan lỗ cho công tắc, sau đó chà nhám, đục và / hoặc đục bỏ bất kỳ phần nào ở phía dưới để làm cho công tắc vừa vặn. Cố gắng không làm bất cứ điều gì với phần trên và chỉ chà nhám những gì bạn cần để có thể lắp nó vào bằng cách vặn, đặt góc hoặc bất cứ điều gì khác để đưa nó vào. Khi nó đã vào, hãy gắn nó với đai ốc bằng nhựa và gắn chuyển. Khoan khu vực để núm chiết áp vừa vặn và đục một khu vực để nó có thể chìm vào và vừa khít với nhau. Khoan một số lỗ để vít có thể giữ nó vào. Bẻ cong các phần nhỏ của đầu nối USB A để làm cho chiều rộng chung của nó tăng lên một chút (xem hình ảnh). Đục một phần cho đầu nối, kiểm tra dần dần để đảm bảo đầu nối vừa vặn. Keo siêu dính đầu nối vào khe cắm của nó. Lấy một ít nhựa và cắt thành hình vừa với đầu nối (xem hình), sau đó ghim vào gỗ. Cắt bỏ bất kỳ phần nào có thể cản trở. Vặn chiết áp và gắn núm vào. Hàn dây dương vào một trong các đầu của biến trở (không phải phần biến trở) và dây âm vào đầu đối diện. Hàn chốt D vào chốt biến thiên trên nồi. Hàn một dây từ chốt trên nồi với dây dương vào một trong các chốt trên nút. Hàn D + vào chân còn lại trên nút. Cắt dây dự phòng và cách điện các đoạn cần dùng.
Bước 6: Áo sơ mi
Tìm một chiếc áo sơ mi thoải mái có thể cho ánh sáng xuyên qua. Tôi đã chọn chiếc áo phông trắng cơ bản này. Màu sắc hay kiểu dáng không thực sự quan trọng miễn là có thể nhìn thấy ánh sáng chiếu qua từ bên trong. Tuy nhiên tôi không khuyến khích đồ họa ở mặt trước. Bố trí mọi thứ trên áo sơ mi để giúp bạn quyết định vị trí bạn muốn và sử dụng công cụ đánh dấu có thể tẩy xóa để vẽ nó lên. Tôi (nghĩa là một số người tôi biết) có một cây bút chì dùng để đánh dấu các loại vải dễ giặt. Đo kích thước của pin, vỏ bộ điều khiển và màn hình và cắt ra các mảnh giấy cho phù hợp. Sau đó ghim giấy vào mảnh vải không co giãn. Một kiểu dệt hoạt động tốt cho điều này. Sau đó, cắt hình chữ nhật để lại khoảng một phần tư inch cho một đường may xung quanh. Sau đó, sử dụng mảnh giấy làm hướng dẫn là ủi các nếp gấp vào vải. Bây giờ giấy có thể được gỡ bỏ. Về phần túi sẽ là phần trên cùng, hãy gấp nó lại chính nó ba lần. Ủi và ghim để giữ cố định. May một đường dọc theo giữa nếp gấp. Bây giờ lấy góc và gấp nó lại để các cạnh chưa may vuông góc với nhau song song và may một dường dọc theo nếp gấp đã ủi gần góc nhất (Hình ảnh thực sự hữu ích). Làm điều này cho cả góc khác. Nếu tình cờ bạn thấy công tắc bật tắt thoát ra từ túi, hãy khâu một lỗ cúc ở đáy túi nơi tiếp xúc với công tắc. Sau đó, khâu một lỗ cúc và cắt bỏ phần ở giữa. Tôi thực sự không thể đưa ra hướng dẫn chi tiết vì tôi đã có một công cụ tuyệt vời để tạo lỗ cúc. Chỉ cần chắc chắn rằng bạn đã tạo các lỗ trước khi may túi. Lấy một số ghim và chọc chúng xuyên qua áo sơ mi ở các góc của các điểm đánh dấu cho túi. Lấy túi và đặt mỗi góc ở một chiếc ghim (ở mặt trong của áo sơ mi), chừa lại một phần tư inch cho đường may và ghim vào áo. Sau khi túi đã được ghim. tháo ghim không giữ túi vào và may túi vào áo. Lặp lại cho tất cả các túi. Đối với túi lớn giữ màn hình để lại một khoảng trống cho các dây ở dưới cùng của túi. Để đặt một lỗ trên áo sơ mi, hãy đánh dấu vị trí đó và lấy một chiếc bàn là ở mặt sau (với phần bóng hơn trên vải) và ủi nó. Sau đó, đối với một lỗ nhỏ (giống như những gì tôi đã sử dụng cho công tắc bật tắt), hãy tạo một lỗ nút. Đối với một lỗ lớn hơn, hãy đánh dấu đường viền và sử dụng một mũi khâu zigzag dọc theo đường (hoặc đường cong hoặc những gì bạn có) và cắt bỏ phần giữa. Nếu bạn muốn, bạn có thể sử dụng dây treo để giữ trọng lượng của túi, hai kẹp giữ vào túi phía trước và kẹp phía sau vào quần. Tôi cũng có một ít vải ở ống tay áo được khâu lại trên các phần của dây treo sẽ chạm vào da của tôi. Hai chiếc áo sơ mi có thể hơi nóng nên tôi đã chọn không mặc và sử dụng phần tay áo bằng vải nhỏ.
Bước 7: Lập trình
Và đây là mã. Có một vài phần được nhận xét tốt nhưng đại đa số thì không. Nếu bạn có thắc mắc về các phần khác nhau, bạn có thể cho tôi số dòng (với #include là dòng số một) hoặc cung cấp cho tôi bản sao của (các) dòng và hàm chứa nó (như loop () hoặc compMovePaddle ()) và tôi sẽ cố gắng hết sức để giải thích cho bạn, sau đó thêm nhận xét vào mã giải thích nó. #include #define PIN 6 // cho biết đâu là chân đầu vào cho trò chơi int buttonPin = 40; // quyết định tỷ số, được giữ trong một mảng nhị phân vì nó lớn hơn int playerScore [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // ra lệnh cho hướng của quả bóng int bvd = 0; // 0 đi xuống, 1 lên trên int bhd = 0; // 0 là phải, 1 là trái // ra lệnh cho vị trí của quả bóng int bvp = 8; int bhp = 6; // kiểm tra xem bóng có ở chế độ nhanh hay không boolean fast = false; // kiểm tra xem đó có phải là điểm không. boolean cIsPoint = false; boolean pIsPoint = false; // các vị trí paddle int cPaddle = 0; int pPaddle = 0; lâu trướcMillis = 0; lâu trướcMillisForComp = 0; // thiết lập thời gian trì hoãn cho quả bóng di chuyển nhanh và chậm, "Int" trong NormInt và fastInt là cho khoảng int normInt = 50; int fastInt = 10; // được sử dụng để kiểm tra chiến thắng. 1 là người chơi giành chiến thắng, -1 trong chiến thắng máy tính và 0 là chưa có gì xảy ra int win = 0; // để loại bỏ một lỗi. được sử dụng trong câu lệnh addOne và không ở đâu khác. int mà = 0; // Điều hiển thị trước khi bắt đầu, -1 là một lối thoát int pongPlay = {1, 2, 3, 4, 10, 11, 12, 13, 16, 18, 20, 27, 29, 33, 34, 41, 42, 61, 62, 63, 70, 71, 72, 76, 85, 86, 88, 91, 92, 94, 100, 101, 102, 103, 131, 132, 136, 139, 144, 145, 146, 147, 148, 161, 162, 166, 175, 183, 185, 192, 194, 195, 196, 197, 198, 199, 204, 205, 206, 207, 208, -1}; // nếu bạn thắng int youWin = {1, 2, 3, 4, 5, 16, 17, 18, 19, 20, 27, 33, 34, 39, 46, 47, 48, 49, 54, 55, 56, 57, 58, 77, 78, 79, 84, 88, 91, 92, 93, 94, 95, 99, 103, 106, 110, 114, 118, 130, 131, 132, 144, 145, 146, 147, 151, 162, 163, 168, 169, 170, 177, 181, 192, 193, 204, 205, 206, 207, -1}; // nếu bạn mất int youLose = {1, 3, 5, 16, 17, 18, 19, 20, 24, 26, 28, 31, 32, 32, 33, 34, 35, 39, 46, 47, 48, 49, 62, 65, 77, 78, 79, 84, 86, 88, 91, 94, 99, 103, 106, 110, 122, 123, 124, 130, 131, 132, 144, 148, 152, 153, 154, 162, 163, 168, 169, 170, 181, 192, 193, 204, 205, 206, 207, 208, -1}; // thiết lập dải dẫn Adafruit_NeoPixel dải = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // thiết lập, không quay chân 40 cho đầu vào, bắt đầu dải, hiển thị thông báo // và hiển thị nó. void setup () {pinMode (buttonPin, INPUT); dải.begin (); for (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } dải.show (); chậm trễ (5000); while (digitalRead (buttonPin) == LOW) {// Đó là một cái bẫy! (cho đến khi nút được nhấn.)}} void loop () {clearScreen (); // vẽ các mái chèo để hiển thị điểm số cho (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } else if ((playerScore == 0)) {dải.setPixelColor (204-i, dải. Color (0, 255, 0)); } if (compScore == 1) {dải.setPixelColor (5 + i, dải. Color (255, 255, 255)); } else if ((compScore == 0)) {dải.setPixelColor (5 + i, dải. Color (255, 0, 0)); }} // vẽ quả bóng ở vị trí bắt đầu của nó là strip.setPixelColor (98, strip. Color (255, 255, 255)); dải.show (); // quyết định xem quả bóng đi lên hay đi xuống trong khi (pIsPoint == false && cIsPoint == false) {clearScreen (); unsigned long currentMillis = millis (); // gán vị trí paddle của trình phát pPaddle = checkPaddlePos (); // kiểm tra vị trí tiếp theo checkNext (); // di chuyển quả bóng if (fast == false) {if (currentMillis - beforeMillis> normInt) {beforeMillis = currentMillis; moveBall (); }} else if (fast == true) {if (currentMillis - beforeMillis> fastInt) {beforeMillis = currentMillis; moveBall (); }} // vẽ quả bóng if (bhp% 2! = 0) {strip.setPixelColor (bhp * 15 + 14-bvp, strip. Color (255, 255, 255)); } else if (bhp% 2 == 0) {strip.setPixelColor (bhp * 15 + bvp, strip. Color (255, 255, 255)); } // chuyển động mái chèo máy tính compMovePaddle (); // draw là paddles drawPaddles (); // thực tế đã đưa mọi thứ lên.dải.show (); // kiểm tra xem một điểm đã được ghi chưa if (pIsPoint == true) {which = 0; bhd = 0; cộng một(); nghỉ; } else if (cIsPoint == true) {which = 1; bhd = 1; cộng một(); nghỉ; }} if (win == 1) {clearScreen (); for (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); dải.show (); } delay (5000); for (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } win = 0; } else if (win == -1) {clearScreen (); for (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); dải.show (); } delay (5000); for (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } win = 0; } pIsPoint = false; cIsPoint = false; bvp = 8; bhp = 6; bvd = random (0, 2); // 0 giảm, 1 tăng nhanh = false; } // AI cho trò chơi void compMovePaddle () {unsigned long currentMillis = millis (); if (currentMillis - beforeMillisForComp> 51) {beforeMillisForComp = currentMillis; if (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } else if (bvp = 0 && cPaddle <10) {cPaddle ++; } else if (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } else if (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}} // di chuyển quả bóng void moveBall () {if (bhd == 0) {bhp--; } else if (bhd == 1) {bhp ++; } if (bvd == 0) {bvp--; } else if (bvd == 1) {bvp ++; }} // thêm một vào mảng. Nếu whichOne là 0, nó sẽ cộng thêm điểm của người chơi. Nếu là 1, nó sẽ thêm vào máy tính void addOne () {if (which == 0) {// nếu đó là điểm của người chơi // Thêm một. Đây là cách đơn giản nhất mà tôi biết. for (int i = 0; i <5; i ++) {// vòng lặp if (playerScore == 0) {// nếu giá trị đó là zero playerScore = 1; // làm cho nó 1 break; // sau đó biến mất} else {// nếu là 1 playerScore = 0; // biến nó thành 0 và lặp lại}}} else if (which == 1) {for (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; nghỉ; } else {compScore = 0; }}} // Kiểm tra xem có ai thắng không. if (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {win = -1; } else if (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {win = 1; }} // kiểm tra vị trí tiếp theo của quả bóng void checkNext () {// kiểm tra xem một điểm đã được ghi chưa if (bhp == 13) {pIsPoint = true; } else if (bhp == 0) {cIsPoint = true; } // nếu một điểm đã được ghi thì bỏ qua phần còn lại của nội dung này if (pIsPoint == false || cIsPoint == false) {// kiểm tra quả bóng theo chiều dọc nếu (bvp + bvd == 15) {bvd = 0; } else if (bvp + bvd == 0) {bvd = 1; } // kiểm tra quả bóng theo phương ngang if (bhp + bhd == 13) {// đầu tiên ở phía máy tính if (bvp> = 10-cPaddle && bvp <= 10-cPaddle + 4) {if (bhd == 1) {bhd = 0; } else if (bhd == 0) {bhd = 1; } nhanh = false; } else if (bvp + bvd == 10-cPaddle || bvp + bvd == 10-cPaddle + 5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1; } else if (bvd == 1) {bvd = 0; } bhd = 1; } else if (bvp == 0 || bvp == 14) {bhd = 1; } nhanh = false; }} else if (bhp + bhd == 1) {// thì ở phía trình phát if (bvp> = pPaddle && bvp <= pPaddle + 4) {// nó có đang chạm mái chèo ở vị trí bình thường không? //đập bóng! if (bhd == 1) {bhd = 0; } else if (bhd == 0) {bhd = 1; }} else if (bvp + bvd == pPaddle || bvp + bvd-5 == pPaddle) {// có phải nó đang chạm vào mái chèo ở góc if (bvp! = 0 && bvp! = 14) {// không không lên cao hay xuống thấp? //Đập bóng! if (bvd == 0) {bvd = 1; } else if (bvd == 1) {bvd = 0; } bhd = 1; nhanh = true; } else if (bvp == 0 || bvp == 14) {// nó lên cao hay xuống thấp? //đập bóng! bhd = 0; fast = true; // đặt giá trị để sau đó quả bóng di chuyển nhanh}}}}} int checkPaddlePos () {// đọc pot và quyết định vị trí mái chèo theo cách ghi nếu (analogRead (A15) <93) {return 0; } else if (analogRead (A15) <186) {return 1; } else if (analogRead (A15) <279) {return 2; } else if (analogRead (A15) <372) {return 3; } else if (analogRead (A15) <465) {return 4; } else if (analogRead (A15) <558) {return 5; } else if (analogRead (A15) <652) {return 6; } else if (analogRead (A15) <745) {return 7; } else if (analogRead (A15) <837) {return 8; } else if (analogRead (A15) <= 931) {return 9; } else if (analogRead (A15) <= 2014) {return 10; }} void drawPaddles () {// vẽ các mái chèo vào đúng vị trí và hiển thị điểm số trên mái chèo cho (int i = 0; i <5; i ++) {if (playerScore == 1) {dải. setPixelColor (pPaddle + i, dải. Color (255, 255, 255)); } else if ((playerScore == 0)) {strip.setPixelColor (pPaddle + i, strip. Color (255, 0, 0)); } if (compScore == 1) {strip.setPixelColor (199 + cPaddle-i, strip. Color (255, 255, 255)); } else if ((compScore == 0)) {dải.setPixelColor (199 + cPaddle-i, dải. Color (0, 255, 0)); }}} void clearScreen () {for (int i = 0; i <= 210; i ++) {strip.setPixelColor (i, strip. Color (0, 0, 0)); } dải.show (); }
Bước 8: Thành phẩm
Và bạn đây, chiếc áo đã hoàn thành!
Đề xuất:
FLEXBALL - Bóng PCB linh hoạt hàng trăm điểm ảnh với WiFi: 6 bước (có hình ảnh)
FLEXBALL - Bóng PCB linh hoạt một trăm điểm ảnh với WiFi: Xin chào các nhà sản xuất, đó là nhà sản xuất moekoe! Flexball dựa trên một PCB linh hoạt được trang bị 100 đèn LED định địa chỉ WS2812 2020. Nó được điều khiển bởi một ESP8285-01f - mô-đun dựa trên ESP nhỏ nhất của Espressif. Ngoài ra, nó có gia tốc kế ADXL345
Bộ điều khiển trò chơi tự làm dựa trên Arduino - Bộ điều khiển trò chơi Arduino PS2 - Chơi Tekken với tự làm trò chơi Arduino: 7 bước
Bộ điều khiển trò chơi tự làm dựa trên Arduino | Bộ điều khiển trò chơi Arduino PS2 | Chơi Tekken với Bàn điều khiển Arduino tự làm: Xin chào các bạn, chơi game luôn thú vị nhưng chơi với Bộ điều khiển trò chơi tùy chỉnh tự làm của riêng bạn sẽ thú vị hơn
Tự làm một bộ điều khiển đa năng linh hoạt và giải thích cách hoạt động: 4 bước
Tự làm một bộ điều khiển đa năng linh hoạt và giải thích cách hoạt động: Bộ điều khiển đa năng linh hoạt là một mạch không có trạng thái ổn định và tín hiệu đầu ra của nó dao động liên tục giữa hai trạng thái không ổn định, mức cao và mức thấp mà không có bất kỳ kích hoạt bên ngoài nào. Vật liệu cần thiết: 2 x 68k điện trở 2 x 100μF
Ma trận LED trong suốt linh hoạt khổng lồ dưới $ 150. Dễ thực hiện: 8 bước (có hình ảnh)
Ma trận LED trong suốt linh hoạt khổng lồ dưới $ 150. Dễ kiếm: Tôi muốn bắt đầu bằng cách nói rằng tôi không phải là dân chuyên nghiệp, tôi không có bất kỳ bằng cấp nào về điện tử. Tôi chỉ đơn giản là thích làm việc với đôi tay của mình và tìm ra mọi thứ. Tôi nói điều đó để khích lệ tất cả các bạn không chuyên như tôi. Bạn có khả năng
ĐÈN KHÔNG DÂY MẶT TRỜI CÓ CÁNH TAY LINH HOẠT TỪ TỪ: 8 bước (có hình ảnh)
ĐÈN KHÔNG DÂY MẶT TRỜI VỚI QUÂN ĐỘI LINH HOẠT TỪ CHỮ: Dự án này được làm từ một chiếc đèn hỏng & nodeMCU. Đèn trang trí này có thể được điều chỉnh theo bất kỳ hướng nào & gắn trên vật liệu từ tính hoặc đặt trên bàn. Nó có thể được điều khiển ở hai chế độ như sau: - Chế độ điều khiển không dây, như