สารบัญ:

โป่งเล่นจอยืดหยุ่นบนเสื้อ : 8 สเต็ป (มีรูป)
โป่งเล่นจอยืดหยุ่นบนเสื้อ : 8 สเต็ป (มีรูป)

วีดีโอ: โป่งเล่นจอยืดหยุ่นบนเสื้อ : 8 สเต็ป (มีรูป)

วีดีโอ: โป่งเล่นจอยืดหยุ่นบนเสื้อ : 8 สเต็ป (มีรูป)
วีดีโอ: อย่าๆๆๆ 🤣❤️ 2024, ธันวาคม
Anonim
โป่งเล่นจอยืดหยุ่นบนเสื้อ
โป่งเล่นจอยืดหยุ่นบนเสื้อ
โป่งเล่นจอยืดหยุ่นบนเสื้อ
โป่งเล่นจอยืดหยุ่นบนเสื้อ
โป่งเล่นจอยืดหยุ่นบนเสื้อ
โป่งเล่นจอยืดหยุ่นบนเสื้อ

นี่คือชุดฮัลโลวีนของฉันสำหรับปี 2013 มันอยู่ในผลงานมาประมาณหนึ่งปีแล้วและต้องใช้เวลาสองสามชั่วโมงในการสร้าง หน้าจอมีขนาด 14 x 15 พิกเซล ดังนั้นความละเอียดค่อนข้างต่ำ แต่ก็ยังสามารถทำอะไรสนุกๆ ได้บ้าง มีความยืดหยุ่นในทุกทิศทาง แม้ว่าจะไม่สามารถพับเก็บได้โดยไม่มีความเสียหาย มีตัวควบคุมประกอบด้วยปุ่มเดียวและหม้อสไลด์ เชื่อมต่อกับโปรเมก้าผ่าน USB เพื่อให้มันมีชีวิตอยู่เป็นเวลานาน มันใช้แบตเตอรี่ขนาดมหึมา 2200 mAh สองก้อนต่ออนุกรมเพื่อรับแรงดันไฟฟ้าที่จำเป็น และจากนั้นตัวควบคุม 5 โวลต์เพื่อให้ใช้งานได้ อุปกรณ์อิเล็กทรอนิกส์ทั้งหมดอยู่ในกระเป๋าที่ด้านในของเสื้อเพื่อให้สามารถถอดออกและซักเสื้อได้ มันเล่นเกมปิงปอง ครั้งแรกที่ประดับประดาด้วยคำว่า "ปอง เพลย์" ด้วยตัวอักษรสีน้ำเงินแสนน่ารัก โดยใช้ฟอนต์ Tom Thumb เวอร์ชันดัดแปลง (ดูได้ที่ https://robey.lag.net/2010/01/23/tiny-monospace-font.html) หลังจากผ่านไปห้าวินาที คุณสามารถเลือกที่จะกดปุ่มเพื่อไปต่อหรือไม่กดปุ่มและทิ้งประสบการณ์ดีๆ ไว้เบื้องหลัง เมื่อเลือกกดปุ่ม เกมก็จะเริ่มต้นขึ้น ไม้พายสีแดงทางด้านขวาคือแป้นคอมพิวเตอร์ และแป้นสีเขียวทางด้านขวาคือแป้นของผู้เล่น ซึ่งควบคุมโดยหม้อสไลด์เพื่อเลื่อนขึ้นและลง ลูกบอลกระดอนไปรอบ ๆ ขณะที่แต่ละฝ่ายพยายามทำคะแนน ผู้เล่นสามารถตีลูกบอลด้วยขอบของไม้พายเพื่อเร่งความเร็ว (คุณลักษณะที่ดี) ในขณะที่คอมพิวเตอร์ไม่สามารถทำได้ และจบลงด้วยการติดอยู่กับการเคลื่อนไหวช้ากว่าลูกบอลเล็กน้อย เมื่อมีการให้คะแนน พิกเซลจะเปลี่ยนเป็นสีขาวบนพายด้านให้คะแนน นับเป็นเลขฐานสองจากด้านล่าง โดยที่สีเขียวหรือสีแดงเป็นศูนย์และสีขาวคือ 1. 21 คือคะแนนที่จะชนะ (หรือแพ้ขึ้นอยู่กับว่าใครได้ 21 คะแนน) ดังนั้นเมื่อผู้เล่นพายเรืออ่าน 10101 ข้อความ "YOU WIN" จะปรากฏขึ้น อีกครั้งใน Tom Thumb ที่ดัดแปลง สิ่งเดียวกันนี้เกิดขึ้น แต่มีคำว่า "YOU LOSE" ปรากฏขึ้นแทน หลังจากชนะหรือแพ้เกมจะเริ่มต้นใหม่จนถึงจุดหลังจากเล่นพงษ์ ในการรีสตาร์ททั้งหมด ให้กดปุ่มรีสตาร์ทบน "Magic Box" หรือที่เรียกว่า the-box-with-all-the-electronics-except-the-screen

ขั้นตอนที่ 1: วัสดุและเครื่องมือ

วัสดุและเครื่องมือ
วัสดุและเครื่องมือ
วัสดุและเครื่องมือ
วัสดุและเครื่องมือ

สิ่งที่ทำเครื่องหมายด้วย * เป็นตัวเลือก แต่แนะนำ และไม่เรียงลำดับโดยเฉพาะ… วัสดุ: Adafruit Neopixle 4 หลา แถบ 60 พิกเซลต่อเมตร เสื้อยืด 1 ตัว *1 สายเอี๊ยมผ้า 1/2 หลาจะเกินพอ (ไม่ใช่ แนะนำให้ใช้ผ้ายืด) 6 ฟุต USB A ตัวผู้กับสาย USB B ตัวผู้ 1 ขั้วต่อ USB A ตัวเมีย 3 ขั้วต่อ JST ตัวเมีย 2 พิน 4 พิน JST ตัวผู้สาย 2 ตัว เครื่องชาร์จแบตเตอรี่ 2 6600 mAh แบตเตอรี่ 1 สไตล์อาเขต ปุ่ม 1 arduino pro-mega 1 หัวต่อ FTDI 1 ขั้วต่อ USB B ตัวเมียพร้อมบอร์ดฝ่าวงล้อม 1 สวิตช์เปิด/ปิด (สลับ) 1 สวิตช์รีเซ็ต (สลับหรือชั่วขณะ) 1 โพเทนชิออมิเตอร์แบบสไลด์ *1 ลูกบิดหม้อสไลด์ 1 คู่ขั้วต่อแอมป์สูง *1 กรณีโครงการ 1 5V 3+ ตัวควบคุมแรงดันไฟฟ้าแอมป์ขนาดเล็ก พลาสติกบางส่วน บัดกรีลวด ด้าย * กาวร้อนบางส่วน * ยืดหยุ่นบ้างในบางครั้ง (อาจจะมากกว่า "บางส่วน") ความอุตสาหะ (คุณอาจต้องการสิ่งนี้จริง ๆ สักหน่อย) ท่อหดความร้อนหรือเทปไฟฟ้า กาวติดเหล็กบางส่วนบนเครื่องมือสำรอง *ช่วยมือปกติ (หรือใครก็ตามที่เข้าถึงได้) หัวแร้ง *ปืนกาวร้อน Dremel หรือกระดาษทราย สิ่ว คีมปอกสายไฟ เครื่องตัดลวด ปืนหลัก ไขควง หมุดเลื่อย จักรเย็บผ้า กรรไกรผ้า

ขั้นตอนที่ 2: ตัดแถบ LED เป็นแถบที่เล็กลง

ตัดแถบ LED เป็นแถบที่เล็กลง
ตัดแถบ LED เป็นแถบที่เล็กลง
ตัดแถบ LED เป็นแถบที่เล็กลง
ตัดแถบ LED เป็นแถบที่เล็กลง
ตัดแถบ LED เป็นแถบที่เล็กลง
ตัดแถบ LED เป็นแถบที่เล็กลง

ใช้อุปกรณ์ตัดที่คุณต้องการตัดและตัดแถบเป็น 14 ส่วน แต่ละส่วนยาว 15 พิกเซล ตัดเฉพาะระหว่างรอยทองแดง ติดป้ายกำกับว่า "DO" "DIN" "+5V" และ "GND" หากบัดกรีทับทองแดงแล้ว ก็ให้ตัดผ่าน พยายามอย่าเจาะทองแดงที่เปิดออกมากเกินไป แต่ถ้าคุณเจาะมันเล็กน้อยก็ไม่เป็นไร เมื่อตัดแถบทั้งหมด 14 แถบแล้ว ให้ตัดยางออกเล็กน้อยจากปลายแต่ละด้านเพื่อนำออกให้พ้นทางสำหรับการบัดกรีแถบ

ขั้นตอนที่ 3: ประสานหน้าจอเข้าด้วยกัน

บัดกรีหน้าจอด้วยกัน
บัดกรีหน้าจอด้วยกัน
บัดกรีหน้าจอด้วยกัน
บัดกรีหน้าจอด้วยกัน
บัดกรีหน้าจอด้วยกัน
บัดกรีหน้าจอด้วยกัน

นำลวดแล้วตัดเป็นท่อนๆ ประมาณ 3.5 นิ้ว (9 ซม.) ในกรณีของฉัน ฉันมีสามสีที่ต่างกันเพื่อให้ตรงได้ง่ายขึ้นเมื่อบัดกรี แต่สีเดียวก็ใช้ได้ดี คุณจะต้องการเจ้าตัวเล็กประมาณ 40 คน แต่ตัดเพิ่มอีกสองสามตัวเผื่อไว้ เมื่อคุณตัดลวด ปอก และปิดปลายลวดเสร็จแล้ว (หากคุณมีประสบการณ์การบัดกรี คุณสามารถข้ามไปยังย่อหน้าถัดไปได้) หมายความว่าหลังจากที่คุณเอาพลาสติกเล็กน้อยออกแล้ว ให้ทำการบัดกรีที่ปลายลวดแต่ละเส้น อย่าทำให้บัดกรีร้อนและพยายามย้ายไปที่ลวด ให้ความร้อนโดยที่คุณบัดกรีหัวแร้งจากด้านล่างของทองแดงแล้ววางบัดกรีไว้ด้านบน อดทนและรอให้ลวดร้อนละลายตัวประสาน เป็นการดึงดูดให้หัวแร้งแข็งถึงตัวประสานเพื่อเริ่มต้น (ความอดทนของฉันและฉันรู้ดีว่าคุณรู้สึกอย่างไร) แต่หัวแร้งจะไม่เกาะติดเช่นกัน ทำเช่นเดียวกันกับรอยทองแดงที่โผล่ออกมาที่ปลายแต่ละด้านของส่วนแถบ หากมีบัดกรีอยู่แล้วก็อย่ากังวลกับมัน สำหรับแถบนี้คุณอาจต้องการสร้างเนินดินเล็กน้อยเพื่อให้ง่ายขึ้นในภายหลัง เมื่อทำงานกับแถบ ให้ทำอย่างรวดเร็ว และพยายามอย่าใช้เวลามากในการประคบร้อนบนแถบ ทำสิ่งที่คุณต้องทำเท่านั้นเพื่อหลอมโลหะประสานบนรอย บัดกรีลวดในแต่ละเส้นไปที่ส่วนท้ายของแถบแรก (แถบแรกเป็นแถบที่มีสายไฟและขั้วต่อ ถ้าคุณดูที่แถบนี้ คุณจะเห็นลูกศรเล็กๆ ติดอยู่ที่เส้นลวดที่คุณบัดกรี ใช้แถบอื่นเพื่อให้ลูกศรชี้ไปในทิศทางตรงกันข้าม และบัดกรีลวดที่มาจากเส้น GND ไปยังเส้น GND ของอีกเส้น +5V ถึง +5V เป็นต้น ทำซ้ำเพื่อให้แน่ใจว่าลูกศรเปลี่ยนทิศทางหลังจากทุกส่วน ดังนั้นหากคุณต้องปฏิบัติตามมันจะซิกแซกขึ้นและลง และสามารถยืดออกไปบนแถบยาวได้ในที่สุด เมื่อบัดกรีทั้ง 14 แถบแล้ว ให้จัดวางและเรียงแถวขึ้นเพื่อให้ไฟ LED กลายเป็นตาราง จากนั้นนำมารวมกันโดยใช้วิธีการที่สามารถถอดออกได้ในภายหลังโดยไม่ทำให้แถบเสียหาย ฉันใช้สก๊อตเทป มันเหนียวพอที่จะเก็บทุกอย่างไว้ด้วยกัน แต่ไม่เหนียวมากจนเหลือสารตกค้าง ฉันไม่แนะนำอะไรให้ถาวรเช่นลวดเย็บกระดาษหรือเทปพันสายไฟ เมื่อทุกอย่างถูกพันเข้าด้วยกันแล้ว ให้บัดกรีลวดจากแถบด้านล่าง +5V ไปยังเส้นที่อยู่ถัดจากนั้นทันที ทำซ้ำจนกว่าด้านล่างทั้งหมดจะมีก๊อกเปิดปิดอยู่ตลอดทาง เพื่อให้หน้าจอไม่หรี่ลงเมื่อเส้น LED คืบหน้า

ขั้นตอนที่ 4: การบัดกรี Core Electronics

บัดกรีแกนอิเล็กทรอนิกส์
บัดกรีแกนอิเล็กทรอนิกส์
บัดกรีแกนอิเล็กทรอนิกส์
บัดกรีแกนอิเล็กทรอนิกส์
บัดกรีแกนอิเล็กทรอนิกส์
บัดกรีแกนอิเล็กทรอนิกส์

ประสานบอร์ดฝ่าวงล้อม USB B (BOB) เข้ากับขั้วต่อ USB B บัดกรีสายไฟที่เหมาะสมกับขั้วต่อ USB A ฉันแนะนำให้ดูที่พินเอาต์ของตัวเชื่อมต่อตามที่พบในเว็บไซต์นี้ https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout-p.webp

ขั้นตอนที่ 5: ตัวควบคุม

คอนโทรลเลอร์
คอนโทรลเลอร์
คอนโทรลเลอร์
คอนโทรลเลอร์
คอนโทรลเลอร์
คอนโทรลเลอร์

อันดับแรกคือการเลือกรูปร่างที่เหมาะสมเพื่อเริ่มต้น ทั้งหมดขึ้นอยู่กับว่าคุณต้องการให้ตัวควบคุมมีโครงสร้างอย่างไร ฉันต้องการตัวควบคุมแบบแบนมากกว่านี้ ดังนั้นฉันจึงได้แผ่นไม้ขนาด 3 1/2" x 3/4" จัดเรียงชิ้นส่วนต่างๆ ให้เหมาะสมและใช้งานได้สะดวก ใช้เส้นโค้งแบบฝรั่งเศส เข็มทิศ สามเหลี่ยม และขอบตรงเพื่อวาดว่าชิ้นส่วนทั้งหมดควรไปทางไหน ตัดโครงร่างพื้นฐานออกโดยใช้เครื่องมือตัดที่คุณเลือก เลื่อยแบนจะดีที่สุด แต่ฉันใช้เลื่อยเผชิญปัญหาซึ่งทำงานได้ดี ทรายลงที่ขอบเพื่อให้มันเคลื่อนตัวได้อย่างราบรื่น จากนั้นขัดมุมลงเพื่อให้รู้สึกสบายขึ้น เจาะรูสำหรับสวิตช์ จากนั้นใช้ทราย สิ่ว และ/หรือ Dremel ออกส่วนใดๆ ที่ด้านล่างเพื่อให้พอดี พยายามอย่าทำอะไรกับด้านบนและขัดเฉพาะสิ่งที่คุณต้องเพื่อให้สามารถใส่เข้าไปได้โดยการบิด มุม หรืออะไรก็ตามเพื่อให้เข้าไปได้ เมื่อเข้าไปแล้ว ให้แนบด้วยน็อตพลาสติกแล้วติด สวิตซ์. เจาะพื้นที่สำหรับปุ่มโพเทนชิออมิเตอร์ให้พอดีและสกัดพื้นที่เพื่อให้สามารถจมและใส่เข้าไปได้ตลอด เจาะรูบางรูเพื่อให้สกรูยึดได้ งอส่วนเล็กๆ ของขั้วต่อ USB A ที่ทำให้ความกว้างทั่วไปเพิ่มขึ้นเล็กน้อย (ดูภาพ) แยกส่วนของขั้วต่อออก ค่อยๆ ตรวจสอบเพื่อให้แน่ใจว่าขั้วต่อพอดี กาวขั้วต่อเข้ากับช่องเสียบ นำพลาสติกชิ้นเล็กๆ มาตัดเป็นรูปทรงที่พอดีกับขั้วต่อ (ดูรูป) แล้วเย็บติดกับไม้ ตัดชิ้นส่วนที่อาจขวางทางออก ขันโพเทนชิออมิเตอร์และติดลูกบิด บัดกรีลวดบวกกับปลายด้านหนึ่งของโพเทนชิออมิเตอร์ (ไม่ใช่ส่วนที่แปรผันได้) และลวดลบกับปลายอีกด้าน ประสานพิน D กับพินตัวแปรบนหม้อ บัดกรีลวดจากหมุดบนหม้อด้วยลวดบวกกับหมุดตัวใดตัวหนึ่งบนปุ่ม ประสาน D+ กับหมุดอีกอันบนปุ่ม ตัดลวดสำรองและหุ้มฉนวนชิ้นส่วนที่ต้องการ

ขั้นตอนที่ 6: เสื้อเชิ้ต

เสื้อ
เสื้อ
เสื้อ
เสื้อ
เสื้อ
เสื้อ

หาเสื้อใส่สบายที่จะให้แสงลอดผ่าน ฉันเลือกเสื้อยืดสีขาวพื้นฐานตัวนี้ ไม่สำคัญหรอกว่าสีหรือสไตล์จะเป็นแบบไหนตราบใดที่มองเห็นแสงที่ส่องผ่านจากด้านใน อย่างไรก็ตามฉันไม่แนะนำกราฟิกที่ด้านหน้า จัดวางทุกอย่างบนเสื้อเพื่อช่วยในการตัดสินใจว่าคุณต้องการเสื้อตัวไหนและใช้เครื่องมือทำเครื่องหมายที่ลบได้เพื่อวาด ฉัน (หมายถึงบางคนที่ฉันรู้จัก) มีดินสอสำหรับทำเครื่องหมายผ้าที่ล้างออกง่าย วัดขนาดของแบตเตอรี่ กล่องควบคุม และหน้าจอ แล้วตัดกระดาษให้ตรงกัน จากนั้นหนีบกระดาษกับผ้าที่ไม่ยืด การทอผ้าทำงานได้ดีสำหรับสิ่งนี้ จากนั้นตัดสี่เหลี่ยมผืนผ้าออกเหลือประมาณหนึ่งในสี่นิ้วสำหรับตะเข็บไปรอบ ๆ จากนั้นใช้แผ่นกระดาษเป็นไกด์รีดพับผ้า ตอนนี้กระดาษสามารถถอดออกได้ ในส่วนของกระเป๋าที่จะพับด้านบนนั้นเองสามครั้ง รีดและปักหมุดให้เข้าที่ เย็บดูตลอดทางตรงกลางพับ ตอนนี้ใช้มุมแล้วพับเพื่อให้ขอบที่ไม่ได้เย็บตั้งฉากขนานกันและเย็บตามรอยพับที่รีดใกล้กับมุมมากที่สุด (รูปภาพช่วยได้มาก) ทำสิ่งนี้กับอีกมุมเช่นกัน ถ้าเป็นไปได้ คุณจะมีสวิตช์เปิดปิดออกมาจากกระเป๋า ให้เย็บรูกระดุมที่ฐานของกระเป๋าตรงที่สวิตช์สัมผัส จากนั้นเย็บรูกระดุมแล้วตัดส่วนตรงกลางออก ฉันไม่สามารถให้คำแนะนำโดยละเอียดได้เพราะฉันมีเครื่องมือเจ๋งๆ ในการทำรูกระดุม เพียงให้แน่ใจว่าคุณทำรูก่อนที่จะเย็บกระเป๋า หยิบหมุดแล้วจิ้มเข้าไปในเสื้อที่มุมของเครื่องหมายที่กระเป๋า นำกระเป๋าออกมาแล้วติดหมุดแต่ละมุม (ด้านในของเสื้อ) เหลือรอยต่อหนึ่งในสี่นิ้วแล้วปักหมุดที่เสื้อ หลังจากติดกระเป๋าเรียบร้อยแล้ว ถอดหมุดที่ไม่ได้จับกระเป๋าและเย็บกระเป๋าเข้ากับเสื้อ ทำซ้ำสำหรับกระเป๋าทั้งหมด สำหรับกระเป๋าขนาดใหญ่ที่ถือหน้าจอให้เว้นช่องว่างสำหรับสายไฟที่ด้านล่างของกระเป๋า ในการเจาะรูบนเสื้อให้ทำเครื่องหมายสถานที่แล้วเอาเตารีดรองด้านหลัง (โดยให้ส่วนที่แวววาวกว่าบนผ้า) แล้วรีดเข้าไป จากนั้นสำหรับรูเล็ก ๆ (เช่นที่ฉันใช้สำหรับสวิตช์สลับ) ให้ทำรูกระดุม สำหรับรูที่ใหญ่ขึ้น ให้ทำเครื่องหมายที่โครงร่างและใช้ตะเข็บซิกแซกตามแนวเส้น (หรือเส้นโค้งหรือสิ่งที่คุณมี) แล้วตัดส่วนตรงกลางออก ถ้าคุณต้องการ คุณสามารถใช้สายเอี๊ยมเพื่อยึดน้ำหนักของกระเป๋ากางเกง คลิปสองตัวที่ยึดกระเป๋าด้านหน้าและคลิปด้านหลังติดกับกางเกง ฉันยังได้รับผ้าผืนเล็กๆ เย็บทับส่วนสายเอี๊ยมที่จะสัมผัสผิวหนังของฉัน เสื้อสองตัวอาจร้อนเกินไปเล็กน้อย ฉันจึงเลือกไม่ใช้ปลอกผ้าตัวเล็ก

ขั้นตอนที่ 7: การเขียนโปรแกรม

การเขียนโปรแกรม
การเขียนโปรแกรม

และนี่คือรหัส มีบางส่วนที่แสดงความคิดเห็นได้ดี แต่ส่วนใหญ่ไม่ หากคุณมีคำถามในส่วนต่าง ๆ คุณสามารถให้หมายเลขบรรทัดแก่ฉัน (โดยมี #include เป็นบรรทัดที่หนึ่ง) หรือให้สำเนาของบรรทัดและฟังก์ชันที่อยู่ (เช่น loop() หรือ compMovePaddle()) และฉันจะพยายามอย่างเต็มที่เพื่ออธิบายให้คุณทราบ จากนั้นเพิ่มความคิดเห็นในโค้ดที่อธิบาย #include #define PIN 6 // ระบุว่าเป็นพินอินพุตสำหรับปุ่ม int เกมพิน = 40; // กำหนดคะแนน เก็บไว้ในอาร์เรย์ bianary เพราะเป็น esier int playerScore[5] = {0, 0, 0, 0, 0}; int compScore[5] = {0, 0, 0, 0, 0}; // กำหนดทิศทางของลูกบอล int bvd=0;//0 ลดลง 1 ขึ้นไป int bhd=0;//0 ถูกต้อง 1 ด้านซ้าย // กำหนดตำแหน่งลูกบอล int bvp = 8; int bhp = 6; //ตรวจสอบเพื่อดูว่าลูกบอลอยู่ในโหมดเร็วบูลีนเร็ว = เท็จหรือไม่ //ตรวจสอบว่าเป็นคะแนนหรือไม่ cIsPoint บูลีน = เท็จ; pIsPoint บูลีน = เท็จ; //ตำแหน่งพาย int cPaddle = 0; int pPaddle = 0; นานก่อนหน้ามิลลิวินาที = 0; นานก่อนหน้าMillisForComp = 0; //ตั้งเวลาหน่วงสำหรับลูกบอลที่เคลื่อนที่เร็วและช้า "Int" ใน normInt และ fastInt สำหรับช่วง int normInt = 50; int fastInt = 10; //ใช้ตรวจสอบการชนะ 1 คือผู้เล่นชนะ -1 ในคอมพิวเตอร์ชนะ และ 0 คือไม่มีอะไรเกิดขึ้นเลย int win = 0; //เพื่อกำจัดแมลง ใช้ในคำสั่ง addOne และไม่มีที่อื่น int ซึ่ง = 0; //สิ่งที่แสดงก่อนเริ่ม -1 คือจุดหนี 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}; // ถ้าคุณชนะ 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}; // ถ้าคุณเสียความตั้งใจ คุณจะสูญเสีย = {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}; //ตั้งค่าแถบนำ Adafruit_NeoPixel แถบ = Adafruit_NeoPixel(210, PIN, NEO_RGB + NEO_KHZ800); // ตั้งค่า, ไม่เปลี่ยนพิน 40 สำหรับอินพุต, เริ่มแถบ, แสดง //ข้อความ และแสดง การตั้งค่าเป็นโมฆะ () { pinMode (buttonPin, INPUT); แถบ.begin(); สำหรับ (int i = 0; pongPlay>0; i++){ strip.setPixelColor(pongPlay, strip. Color(0, 0, 255)); } strip.show(); ล่าช้า (5000); while (digitalRead(buttonPin) == LOW){ //มันเป็นกับดัก!(จนกว่าจะกดปุ่ม) } } void loop() { clearScreen(); //ดึงไม้พายเพื่อแสดงคะแนนสำหรับ(int i = 0; i < 5; i++){ if (playerScore==1){ strip.setPixelColor(204-i, strip. Color(255, 255, 255)); }อื่น if((playerScore==0)){ strip.setPixelColor(204-i, strip. Color(0, 255, 0)); } if (compScore==1){ strip.setPixelColor(5+i, strip. Color(255, 255, 255)); }อื่น if((compScore==0)){ strip.setPixelColor(5+i, strip. Color(255, 0, 0)); } } //ดึงลูกบอลในตำแหน่งเริ่มต้น strip.setPixelColor(98, strip. Color(255, 255, 255)); แถบ.show(); //ตัดสินใจว่าลูกบอลจะขึ้นหรือลงในขณะที่ (pIsPoint == false && cIsPoint == false){ clearScreen(); ไม่ได้ลงนามยาว currentMillis = millis(); //กำหนดตำแหน่งผู้เล่นพายเรือ pPaddle=checkPaddlePos(); //ตรวจสอบตำแหน่งถัดไป checkNext(); // เคลื่อนลูกบอล if (เร็ว == false){ if(currentMillis - PreviousMillis > normInt){ PreviousMillis = currentMillis; ย้ายบอล(); } } อื่น if(fast == true){ if(currentMillis - PreviousMillis > fastInt){ PreviousMillis = currentMillis; ย้ายบอล(); } } // ดึงลูกบอล if(bhp%2 != 0){ strip.setPixelColor(bhp*15+14-bvp, strip. Color(255, 255, 255)); } อย่างอื่น if (bhp%2 == 0){ strip.setPixelColor(bhp*15+bvp, strip. Color(255, 255, 255)); } // การเคลื่อนที่ของพายคอมพิวเตอร์ compMovePaddle(); //draw คือไม้พาย drawPaddles(); //เอาจริงเอาจังทุกอย่างแถบ.show(); //ตรวจสอบเพื่อดูว่าได้คะแนนหรือไม่ (pIsPoint == true){ which = 0; bhd=0; addOne(); หยุดพัก; } else if(cIsPoint == true){ ซึ่ง = 1; bhd=1; addOne(); หยุดพัก; } } if (ชนะ == 1){ clearScreen(); สำหรับ (int i = 0; youWin>0; i++){ strip.setPixelColor(youWin, strip. Color(255, 0, 0)); แถบ.show(); } ล่าช้า (5000); สำหรับ (int i = 0; i <5; i++) { playerScore = 0; compScore = 0; } ชนะ = 0; }หรือถ้า (ชนะ == -1){ clearScreen(); สำหรับ (int i = 0; youLose>0; i++){ strip.setPixelColor(youLose, strip. Color(0, 255, 0)); แถบ.show(); } ล่าช้า (5000); สำหรับ (int i = 0; i <5; i++) { playerScore = 0; compScore = 0; } ชนะ = 0; } pIsPoint = เท็จ; cIsPoint = เท็จ; bvp = 8; แรงม้า = 6; bvd=random(0, 2);//0 ลดลง 1 ขึ้นเร็ว = false; } //AI สำหรับเกมเป็นโมฆะ compMovePaddle(){ unsigned long currentMillis = millis(); ถ้า (currentMillis - PreviousMillisForComp > 51) { PreviousMillisForComp = currentMillis; if (bvp >= 13 && 10-cPaddle 0){ cPaddle--; }อื่น if(bvp = 0 && cPaddle < 10){ cPaddle++; }อื่น if(bvp-3 > 10-cPaddle && 10-cPaddle >= 0 && cPaddle > 0){ cPaddle--; }อื่น if(bvp < 10-cPaddle && 10-cPaddle <= 10){ cPaddle++; } } } // ย้ายลูกบอล โมฆะ moveBall(){ if (bhd == 0){ bhp--; }อื่น if(bhd == 1){ bhp++; } if (bvd == 0){ bvp--; }อื่น if(bvd == 1){ bvp++; } } // เพิ่มหนึ่งรายการในอาร์เรย์ ถ้าใครเป็น 0 จะเพิ่มคะแนนของผู้เล่น หากเป็น 1 จะทำให้คอมพิวเตอร์เป็นโมฆะ addOne(){ ถ้า (ซึ่ง == 0){//ถ้าเป็นคะแนนของผู้เล่น //เพิ่มหนึ่งคะแนน นี่เป็นวิธีที่ง่ายที่สุดที่ฉันรู้ สำหรับ (int i=0; i < 5; i++){//loop if (playerScore == 0){// ถ้าค่านั้นเป็นศูนย์ playerScore=1;// ทำให้เป็น 1 ตัว; // แล้วหายไป }else {//if it is 1 playerScore=0;//make it zero and loop } } }else if(which == 1){ for (int i=0; i < 5; i++){ ถ้า (compScore == 0){ compScore=compScore+1; หยุดพัก; }อื่น { compScore=0; } } } //ตรวจสอบว่ามีใครชนะหรือไม่ ถ้า (compScore[0]==1 && compScore[2]==1 && compScore[4]==1){ win = -1; }อื่น ๆ ถ้า (playerScore[0]==1 && playerScore[2]==1 && playerScore[4]==1){ win = 1; } } //ตรวจสอบลูกถัดไป ตำแหน่ง void checkNext(){ //check's เพื่อดูว่าได้คะแนนหรือไม่ (bhp == 13){ pIsPoint = true; }อื่น if(bhp == 0){ cIsPoint = true; } // หากได้คะแนนมากกว่าข้ามส่วนที่เหลือของสิ่งนี้ if (pIsPoint == false || cIsPoint == false){ // ตรวจสอบลูกบอลในแนวตั้ง if (bvp+bvd==15){ bvd = 0; }มิฉะนั้น if(bvp+bvd==0){ bvd = 1; } //ตรวจสอบลูกบอลในแนวนอนว่า (bhp+bhd==13){// อันดับแรกที่ฝั่งคอมพิวเตอร์ if (bvp >= 10-cPaddle && bvp <= 10-cPaddle+4){ if(bhd==1) { bhd=0; }อย่างอื่น if(bhd==0){ bhd=1; } เร็ว = เท็จ; }อื่น if(bvp+bvd == 10-cPaddle || bvp+bvd == 10-cPaddle+5){ if(bvp != 0 && bvp !=14){ if (bvd == 0){ bvd=1; }อื่น if(bvd == 1){ bvd=0; } bhd=1; }อื่น ๆ ถ้า (bvp == 0 || bvp == 14){ bhd=1; } เร็ว = เท็จ; } }อื่น if(bhp+bhd==1){//จากนั้น ที่ฝั่งผู้เล่น if (bvp >= pPaddle && bvp <= pPaddle+4){// มันตีไม้พายในจุดปกติหรือไม่? //เตะบอล! ถ้า(bhd==1){ bhd=0; }อย่างอื่น if(bhd==0){ bhd=1; } } อื่น if(bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle){// มันตีไม้พายที่มุมหรือไม่ if(bvp != 0 && bvp !=14){// is it ไม่ขึ้นสูงหรือลงต่ำ? //เตะบอล! ถ้า (bvd == 0){ bvd=1; }อื่น if(bvd == 1){ bvd=0; } bhd=1; เร็ว = จริง; }อื่นถ้า (bvp == 0 || bvp == 14){// มันขึ้นสูงหรือลงต่ำ? //เตะบอล! bhd=0; fast = true;// ตั้งค่าเป็นภายหลังทำให้ลูกบอลเคลื่อนที่เร็ว } } } } } int checkPaddlePos(){ // อ่านหม้อและตัดสินใจเกี่ยวกับตำแหน่งไม้พายตามลำดับถ้า (analogRead(A15)<93){ คืนค่า 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(){ //draw's the paddles ในจุดที่ถูกต้องและแสดงคะแนนบนไม้พายสำหรับ(int i = 0; i < 5; i++){ if (playerScore==1){ strip. setPixelColor(pPaddle+i, แถบสี(255, 255, 255)); }อื่น 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)); }อื่น if((compScore==0)){ strip.setPixelColor(199+cPaddle-i, strip. Color(0, 255, 0)); } } } เป็นโมฆะ clearScreen(){ สำหรับ (int i=0; i<=210; i++){ strip.setPixelColor(i, strip. Color(0, 0, 0)); } strip.show(); }

ขั้นตอนที่ 8: ผลิตภัณฑ์สำเร็จรูป

สินค้าสำเร็จรูป
สินค้าสำเร็จรูป
สินค้าสำเร็จรูป
สินค้าสำเร็จรูป

มาแล้ว เสื้อสำเร็จรูป!

แนะนำ: