สารบัญ:
- ขั้นตอนที่ 1: วัสดุและเครื่องมือ
- ขั้นตอนที่ 2: ตัดแถบ LED เป็นแถบที่เล็กลง
- ขั้นตอนที่ 3: ประสานหน้าจอเข้าด้วยกัน
- ขั้นตอนที่ 4: การบัดกรี Core Electronics
- ขั้นตอนที่ 5: ตัวควบคุม
- ขั้นตอนที่ 6: เสื้อเชิ้ต
- ขั้นตอนที่ 7: การเขียนโปรแกรม
- ขั้นตอนที่ 8: ผลิตภัณฑ์สำเร็จรูป
วีดีโอ: โป่งเล่นจอยืดหยุ่นบนเสื้อ : 8 สเต็ป (มีรูป)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
นี่คือชุดฮัลโลวีนของฉันสำหรับปี 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 เป็นแถบที่เล็กลง
ใช้อุปกรณ์ตัดที่คุณต้องการตัดและตัดแถบเป็น 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: ผลิตภัณฑ์สำเร็จรูป
มาแล้ว เสื้อสำเร็จรูป!
แนะนำ:
แอร์ - กีต้าร์โปร่ง True Mobile (ต้นแบบ): 7 สเต็ป (มีรูปภาพ)
Air - True Mobile Air Guitar (ต้นแบบ): เอาล่ะ นี่จะเป็นคำแนะนำสั้นๆ เกี่ยวกับส่วนแรกในการเข้าใกล้ความฝันในวัยเด็กของฉันในที่สุด เมื่อฉันยังเป็นเด็ก ฉันมักจะดูศิลปินและวงดนตรีที่ฉันชอบเล่นกีตาร์อย่างไร้ที่ติ เมื่อฉันโตขึ้น ฉันก็เ
Mood Lamp : 7 สเต็ป (มีรูปภาพ)
Mood Lamp: ในคำแนะนำนี้ ฉันจะแสดงวิธีสร้าง Mood Lamp เปลี่ยนสีอย่างง่ายพร้อมเอฟเฟกต์ที่แตกต่างกัน! คุณสามารถเปลี่ยนสีและเอฟเฟกต์ตามความต้องการโดยใช้ Arduino สำหรับโปรเจ็กต์นี้ นี่คือรายการวัสดุที่ฉันใช้ โคมไฟเก่าที่มีกรอบนอก
พัดลมตั้งโต๊ะ 9 สเต็ป
พัดลมตั้งโต๊ะ: วัสดุที่จำเป็น ขวดพลาสติก มอเตอร์ขนาดเล็ก สเกลการ์ด สวิตช์ ตัวนำไฟฟ้า
บีทบ็อกซ์: 5 สเต็ป
Beat Box: บีทบ็อกซ์นี้เป็นกล่องที่ติดตั้งไฟ LED หลายดวงซึ่งจะเปิดขึ้นเมื่อเสียงที่ได้รับจากเซ็นเซอร์เกินเกณฑ์ที่กำหนด
AB/XY สำหรับกีต้าร์ 2 ตัวและแอมป์ 2 แอมป์แยกช่อง: 7 สเต็ป (พร้อมรูปภาพ)
AB/XY สำหรับกีต้าร์ 2 ตัวและแอมป์ 2 ตัวแยกช่องสัญญาณ: ตามปกติแล้ว ฉันชอบทำสิ่งต่างๆ ที่แก้ปัญหาให้ฉัน คราวนี้เป็นอย่างนี้ ฉันใช้แป้นเหยียบ Boss AB-2 เพื่อสลับระหว่างแอมป์สองตัวของฉัน ตัวหนึ่งปกติสกปรก และอีกอันหนึ่งสะอาดมีคันเหยียบอยู่ข้างหน้า จากนั้นเมื่อมีคนอื่นเข้ามาและ