Სარჩევი:
- ნაბიჯი 1: მასალები და ინსტრუმენტები
- ნაბიჯი 2: გაჭერით LED ზოლები პატარა ზოლებით
- ნაბიჯი 3: ეკრანის გაერთიანება ერთად
- ნაბიჯი 4: ძირითადი ელექტრონიკის შედუღება
- ნაბიჯი 5: კონტროლერი
- ნაბიჯი 6: პერანგი
- ნაბიჯი 7: პროგრამირება
- ნაბიჯი 8: მზა პროდუქტი
ვიდეო: პონგი მოქნილი ეკრანის თამაშს მაისურზე: 8 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
ეს არის ჩემი ჰელოუინის კოსტუმი 2013 წლისთვის. იგი მუშაობდა დაახლოებით ერთი წელია და მის შექმნას რამდენიმე საათი დასჭირდა. ეკრანი არის 14 x 15 პიქსელი, ასე რომ, საკმაოდ დაბალი გარჩევადობაა, მაგრამ მაინც შეუძლია გააკეთოს სახალისო საქმეები. ის ფიზიკურად მოქნილია ყველა მიმართულებით, თუმცა მისი დაკეცვა შეუძლებელია დაზიანების გარეშე. მას აქვს კონტროლერი, რომელიც შედგება ერთი ღილაკისა და სლაიდ ბანკისგან, რომელიც დაკავშირებულია პრო მეგას USB– ს საშუალებით. იმისთვის, რომ იგი დიდხანს იცოცხლოს, ის იყენებს ორ საშინელ 2200 mAh ბატარეას, რომლებიც სერიულად არის მიერთებული საჭირო ძაბვის მისაღებად, შემდეგ კი 5 ვოლტის რეგულატორს, რათა ის გამოსაყენებელი იყოს. ყველა ელექტრონიკა მოთავსებულია ჯიბეში პერანგის შიგნით, ასე რომ მათი ამოღება და მაისურის გარეცხვა შესაძლებელია. ის თამაშობს პონგის ფუნქციურ თამაშს. ის პირველად ამშვენებს სიტყვებს "PONG PLAY", ლურჯი ასოებით Tom Thumb შრიფტის შეცვლილი ვერსიის გამოყენებით (შეგიძლიათ იხილოთ https://robey.lag.net/2010/01/23/tiny-monospace-font.html). ხუთი წამის შემდეგ შეიძლება მიეცეს შესაძლებლობა დააჭიროთ ღილაკს გადაადგილებისთვის, ან არ დააჭიროთ ღილაკს და დატოვოთ შესანიშნავად კარგი გამოცდილება. როდესაც ერთი ირჩევს ღილაკის დაჭერას, თამაში იწყება. წითელი პედლი მარჯვნივ არის კომპიუტერის პედლი, ხოლო მწვანე პედლი მარჯვნივ არის მოთამაშის პედლი, რომელსაც აკონტროლებს სლაიდების ქოთანი ზევით და ქვევით გადასაადგილებლად. ბურთი ბრუნდება, როდესაც თითოეული მხარე ცდილობს ქულის მოპოვებას. მოთამაშეს შეუძლია დაარტყას ბურთი თავისი პედლის კიდით, რომ დააჩქაროს (სასიამოვნო თვისება), ხოლო კომპიუტერი ამას ვერ გააკეთებს და სამაგიეროდ მთავრდება ბურთის ოდნავ ნელი მოძრაობით. როდესაც ქულა მიიღება, პიქსელი იცვლება თეთრად ქულების გადასატან მხარეებზე. ის ორობითია ითვლის ქვემოდან. სადაც მწვანე ან წითელი არის ნული და თეთრი არის 1. 21 არის გამარჯვების ქულა (ან წაგება იმის მიხედვით, თუ ვინ მიიღებს 21 ქულას) და ასე რომ, როდესაც მოთამაშის პედლი კითხულობს 10101 -ს, ნაჩვენებია "YOU WIN" ტექსტი. კიდევ ერთხელ შეცვლილ ტომ თამბში. იგივე ხდება, მაგრამ ამის ნაცვლად ნაჩვენებია "შენ კარგავ". გამარჯვების ან წაგების შემდეგ თამაში ხელახლა იწყება წერტილში, პონგის თამაშის შემდეგ. მთლიანად გადატვირთვის მიზნით, დააჭირეთ ღილაკს "ჯადოსნური ყუთი", რომელიც ასევე ცნობილია როგორც ყუთი-ყველა-ელექტრონიკით-ეკრანის გარდა, დაჭერილია.
ნაბიჯი 1: მასალები და ინსტრუმენტები
* * –ით მონიშნული ნივთები არჩევითია, მაგრამ გირჩევთ და არა კონკრეტული თანმიმდევრობით… მასალები: 4 ეზო Adafruit Neopixle 60 პიქსელი მეტრზე ზოლები 1 მაისური * 1 წყვილი საკიდები 1/2 ეზო ქსოვილი იქნება საკმარისზე მეტი (არა სასურველია გაჭიმვის ქსოვილი) 6 ფუტი USB A მამაკაციდან USB B მამრობითი კაბელი 1 USB A ქალი კონექტორი 3 2 პინიანი JST ქალი კონექტორები 4 2 პინიანი JST მამაკაცის მავთულები ბატარეის დამტენი 2 6600 mAh ბატარეები 1 არკადული სტილის ღილაკი 1 arduino pro-mega 1 FTDI სათაური 1 USB B ქალი კონექტორი გარღვევის დაფით 1 ჩართვა/გამორთვა გადართვა (გადართვა) 1 გადატვირთვის გადამრთველი (გადართვა ან მომენტალური) 1 სლაიდ პოტენომეტრი *1 სლაიდ ქოთნის სახელური 1 მაღალი ამპერი კონექტორის წყვილი *1 პროექტის საქმე 1 5V 3+ amp ძაბვის რეგულატორი პატარა ცოტა პლასტმასის ზოგიერთი შედუღების ზოგიერთი მავთულის ზოგიერთი ძაფი *ზოგიერთი ცხელი წებო *ზოგიერთი ელასტიური გარკვეული დროის განმავლობაში (შეიძლება ცოტა მეტი ვიდრე "ზოგიერთი") გარკვეული perseverance (თქვენ ალბათ დაგჭირდებათ საკმაოდ ბევრი აქტუალურად) ზოგიერთი სითბოს შემცირება მილები ან ელექტრო ფირზე ზოგიერთი სუპერ წებო რკინა საყრდენ ინსტრუმენტებზე *დამხმარე ხელები ნორმალური ხელი s (ან მათზე წვდომა) Soldering Iron *Hot Glue Gun Dremel or Sandpaper Chisel Wire Strippers Wire Cutters Staple Gun Gun Screw Driver Saw Pins sewing Machine Fabric Scisors
ნაბიჯი 2: გაჭერით LED ზოლები პატარა ზოლებით
გამოიყენეთ სასურველი ჭურჭელი და გაჭერით ზოლები 14 სეგმენტად, თითოეული 15 პიქსელი სიგრძით. გაჭერით მხოლოდ სპილენძის კვალს შორის, ეტიკეტით „DO“„DIN“„+5V“და „GND“. თუ ის უკვე შედუღებულია სპილენძზე, ისინი უბრალოდ იჭრება. ეცადეთ, ზედმეტად არ გაჭრათ სპილენძში, მაგრამ თუ ოდნავ გაწურეთ, ეს კარგია. მას შემდეგ, რაც 14 -ე ზოლები გაჭრილია, თითოეული ბოლოდან მოაჭერით ცოტაოდენი რეზინი, რათა თავიდან აიცილოთ იგი ზოლების შესაკრავად.
ნაბიჯი 3: ეკრანის გაერთიანება ერთად
აიღეთ მავთული და გაჭერით იგი დაახლოებით 3.5 ინჩის (9 სმ) სეგმენტებად. ჩემს შემთხვევაში, მე მაქვს სამი განსხვავებული ფერი, რომ გავაადვილო შედუღების დროს სწორი შენახვა, მაგრამ ერთი ფერი მშვენივრად იმუშავებს. თქვენ დაგჭირდებათ დაახლოებით 40 ასეთი პატარა ბიჭი, მაგრამ ყოველი შემთხვევისთვის კიდევ რამდენიმე გაჭერით. მას შემდეგ რაც დაასრულებთ მავთულის გაჭრას, გაასხურეთ და დააფინეთ ბოლოები (თუ გაქვთ შედუღების გამოცდილება, შეგიძლიათ გადახვიდეთ შემდეგ პარაგრაფზე), რაც იმას ნიშნავს, რომ პლასტმასის ამოღების შემდეგ თითოეული მავთულის ბოლოებზე დადგით შესაკრავი. არ გაათბოთ შედუღება და შეეცადეთ გადახვიდეთ მავთულხლართზე, გაათბეთ სპილენძის ქვემოდან და შედგით თავზე. იყავით მომთმენი და დაელოდეთ ცხელ მავთულს, რომ გამდნარი დნება. ეს არის მაცდური გამკაცრება soldering რკინის ამისთვის უნდა დაიწყოს (ჩემი მოუთმენლობა და მე ზუსტად ვიცი, როგორ გრძნობთ), მაგრამ solder არ გამყარებაში ასევე. იგივე მოიქეცით სპილენძის ნაკვალევზე ზოლის მონაკვეთების თითოეულ ბოლოზე. თუ მას უკვე აქვს შედუღება, არ ინერვიულოთ ამაზე. ზოლისთვის შეიძლება დაგჭირდეთ პატარა გორაკის აშენება, რათა მოგვიანებით გაგიადვილდეთ. როდესაც მუშაობთ ზოლთან, გააკეთეთ ეს სწრაფად და შეეცადეთ არ დახარჯოთ ბევრი დრო ზოლზე სითბოს გამოყენებაზე. გააკეთეთ მხოლოდ ის, რაც გჭირდებათ იმისათვის, რომ გამდნარი დნება კვალზე. მიამაგრეთ მავთული თითოეულ კვალზე პირველი ზოლის ბოლომდე (პირველი ზოლები არის მავთულხლართებითა და კონექტორით, მიამაგრეთ იგი დაუცველ ბოლომდე). თუ გადახედავთ ზოლს დაინახავთ მასზე პატარა ისრებს, რომლებიც ბოლომდე მიდიან, სადაც მავთული შეაერთეთ. აიღეთ მეორე ზოლი ისე, რომ ისრები მიმართული იყოს საპირისპირო მიმართულებით და შეაერთეთ მავთული, რომელიც მოდის GND კვალიდან მეორის GND კვალზე, +5V +5V– ზე და ასე შემდეგ. გაიმეორეთ ეს, დარწმუნდით, რომ ისრები შეცვლიან მიმართულებებს ყოველი მონაკვეთის შემდეგ ისე, რომ თქვენ რომ მიჰყევით მათ, ზიგ -ზაგი ზევით და ქვევით მოხდება და საბოლოოდ გრძელი ზოლზე გაჭიმვა შეიძლება. მას შემდეგ, რაც 14 -ე ზოლი შეიკვრება, ჩამოაყალიბეთ და დაალაგეთ, ისე რომ LED- ები შექმნან ქსელს. შემდეგ შეინახეთ ისინი იმ მეთოდის გამოყენებით, რომლის ამოღებაც შემდგომში შესაძლებელია ზოლის დაზიანების გარეშე. მე გამოვიყენე შოტლანდიური ლენტი. ის საკმარისად წებოვანია იმისათვის, რომ შეინარჩუნოს ყველაფერი ერთად, მაგრამ არც ისე წებოვანი, რომ დატოვოს ნარჩენები. მე არ გირჩევ არაფერს მუდმივობას, მაგალითად კავებს ან ფირზე. მას შემდეგ, რაც ყველაფერი ერთმანეთზეა დამაგრებული, შეაერთეთ მავთული ქვედადან +5V ზოლიდან, რომელიც მის გვერდით არის. გაიმეორეთ მანამ, სანამ მთელ ძირს არ ექნება დენის ონკანები მთელს გზაზე. ეს ხდება ისე, რომ ეკრანი არ ჩამუქდება, რადგან LED- ების ხაზი პროგრესირებს.
ნაბიჯი 4: ძირითადი ელექტრონიკის შედუღება
შეაერთეთ USB B გამტარი დაფა (BOB) USB B კონექტორზე. შეაერთეთ შესაბამისი მავთულები USB A კონექტორზე. მე გირჩევთ შეხედოთ კონექტორის ამობეჭდვას, როგორც ნაპოვნია ამ ვებგვერდზე, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. არ ინერვიულოთ იმაზე, თუ სად უნდა შეაერთოთ მავთულის სხვა ბოლოები USB A კონექტორზე ახლავე; რომელიც დაფარული იქნება კონტროლერის საფეხურზე. გათიშეთ მონაცემთა კონექტორი ზოლიდან, ქალი კონექტორი და არა მამრობითი კონექტორი (ქალი კონექტორი მიიღება მეორე ბოლოდან). შეაერთეთ მამრობითი JST კონექტორები ბატარეის ბოლოებზე ისე, რომ წითელი გადადის წითელში, ხოლო შავი შავზე. დნება სითბოს შეკუმშვის მილები დაუცველ მავთულხლართებზე (გადაიხარხრა შედუღებამდე) ისე, რომ არ მოიკლონ ან არ გამოიყენონ სხვა რამ, როგორიცაა ელექტრო ლენტი ან ცხელი წებო. შეაერთეთ რამდენიმე მავთული ყველა JST კონექტორზე. დარწმუნდით, რომ მამაკაცი უნდა იყოს ჩართული ისე, რომ ქინძისთავები არ გადავიდეს გარშემო. ფრთხილად იყავით პოლარობის მიმართ და დარწმუნდით, რომ მავთულები ემთხვევა მამრობითი კონექტორებს. შეაერთეთ ერთი მაღალი ძაბვის კონექტორი (მაგრამ არა ის წყვილი), კიდევ ერთხელ, დარწმუნდით, რომ ნებისმიერი ფერი ემთხვევა და რომ ისინი ერთმანეთთან არის დაკავშირებული, რათა თავიდან აიცილოთ ცვალებადი ქინძისთავები. შეაერთეთ მდედრობითი მხოლოდ კონექტორი/მავთულის შეკრება ისე, რომ ისინი სერიულად იყოს მიერთებული და არა პარალელურად, რომ გაიარონ დენის მარეგულირებლის ბარიერი ძაბვა. ასე რომ, მიამაგრეთ პოზიტიური მავთული სხვა შეკრების ნეგატიურ მავთულზე, ასე რომ, ახლა ჩვენ გვაქვს ერთი გაუმართავი დადებითი მავთული და ერთი უარყოფითი არასამთავრობო შედუღებული მავთული და ორი გამდნარი მავთული სხვადასხვა კონექტორზეა გამობმული. აიღეთ უარყოფითი მავთული და შეინახეთ, რომ სხვაგან უარყოფით მავთულზე გადაიტანოთ. ახლა აიღეთ პოზიტიური მავთული და შეაერთეთ იგი გადამრთველთან, თუ სამი ან მეტი ქინძისთავები (ან "ჩართვის" ერთზე მეტი გზაა) შეაერთეთ იგი შუა პინზე. გაითვალისწინეთ, რომ "შუა პინი" შეიძლება ფიზიკურად არ იყოს შუაში. მისი იდენტიფიცირების გზა არის პინის პოვნა, რომელიც როდესაც გადამრთველი ჩართულია ნებისმიერ მდგომარეობაში ყოველთვის იქნება დაკავშირებული სხვა პინთან. თუ არცერთი ქინძისთავი არ არის ასეთი, მაშინ გაქვთ სპეციალური გადამრთველი; უბრალოდ შეაერთეთ იგი ნებისმიერ პინთან და დარწმუნდით, რომ მომდევნო მავთული, რომელიც გადართულია გადამრთველთან, დაუკავშირდება ამ მავთულს მინიმუმ ერთ მდგომარეობაში. ახლა მიამაგრეთ ძაბვის მარეგულირებელზე დადებითი შემყვანი მავთული გადამრთველის საპირისპირო ბოლოში, როგორც ზემოთ განხილული. გათიშეთ პოსტივიალური ძაბვა დაუმთავრებელი მაღალი დენის კონექტორის პოზიტიურ ბოლომდე. აიღეთ უარყოფითი შემყვანი მავთული და შეაერთეთ იგი მაღალი დენის კონექტორის უარყოფით ბოლომდე. ჩვენ ვაპირებთ შევაერთოთ ძალა არდუინოს და დენის ზოლების პარალელურად. ახლა აიღეთ ძაბვის მარეგულირებელი გამომავალი მავთულები და შეაერთეთ ორი ცალი მავთული ორივე დადებით და უარეს ბოლოებზე, რათა გამოვიდეს Y ფორმაში. შეაერთეთ ორი პინიანი კონექტორი led ზოლის ასამბლეის დადებით და უარყოფით მავთულხლართებზე. არ აქვს მნიშვნელობა რა ტიპის კონექტორს იყენებთ, ეს შეიძლება იყოს JST ან ჩემს შემთხვევაში რაიმე დენის/აუდიო კაბელი ან რაიმე სხვა (დარწმუნებული არ ვარ და ბოდიშს ვიხდი სურათების არქონისათვის). შეაერთეთ ერთი პოზიტიური სიმძლავრის მავთული საპირისპირო კონექტორის პოზიტიურ ბოლოზე სინათლის ზოლისთვის და ერთი უარყოფითი მავთული კონექტორის მეორე პინზე. იგივე გააკეთეთ, მაგრამ მამრობითი JST კონექტორის/მავთულის შეკრებისთვის. ყველა დროის გახსოვდეთ, რომ იზოლირება solder სახსრების, რათა თავიდან ავიცილოთ შორტები. ახლა გადახედეთ რა უნდა გააკეთოთ USB B კონექტორთან. შეაერთეთ დადებითი მავთული Arduino Pro Mega– ზე 5 ვ ხვრელზე. მიიღეთ მიწის მავთული და შეაერთეთ იგი GND ხვრელში. აიღეთ D+ და შეაერთეთ იგი ციფრულ პინზე (ან ამ შემთხვევაში, ხვრელში) 40. შედუღება D- ანალოგიურ პინზე 15. შეაერთეთ მდედრობითი კონექტორის მონაცემთა ბოლო, რომელიც ემთხვევა LED ზოლის მამაკაცის კონექტორს მონაცემთა პინ 6-თან და დაფქული მავთული GND პინზე. ნიღაბი ან შოტლანდიური ლენტი მშვენივრად მუშაობს მავთულხლართზე დაფაზე, რომ არ ამოვარდეს, როდესაც ის გადაბრუნდება შესადუღებლად. ახლა აიღეთ მომენტალური ღილაკი და შეაერთეთ მავთული ერთი ბოლოდან VCC პინამდე (ან ნებისმიერი ძაბვის გამომავალი პინი) და მეორე ბოლო RESET პინზე.
ნაბიჯი 5: კონტროლერი
პირველი არის სწორი ფორმის არჩევა დასაწყებად. ეს ყველაფერი დამოკიდებულია იმაზე, თუ როგორ გსურთ კონტროლერის სტრუქტურა. მე მინდოდა უფრო მეტი ბრტყელი კონტროლერი, ასე რომ მივიღე 3 1/2 "3/4" ფიცრის ნაჭერი. მოაწყეთ ნაწილები ისე, როგორც ჩანს, მოსახერხებელი და კომფორტული მუშაობა. გამოიყენეთ ფრანგული მრუდი, კომპასი, სამკუთხედი და სწორი კიდე, რათა დახაზოთ ის ადგილი, სადაც ყველა ნაჭერი უნდა წავიდეს. გაჭერით ძირითადი მონახაზი თქვენთვის სასურველი საჭრელი ინსტრუმენტის გამოყენებით. აკრძალვის ხერხი იქნებოდა საუკეთესო, მაგრამ მე გამოვიყენე დამცავი ხერხი, რომელიც მშვენივრად მუშაობდა. ქვიშის ქვემოთ კიდეები, რათა მათ შეუფერხებლად გადასვლა, შემდეგ ქვიშის ქვემოთ კუთხეებში, რათა ის უფრო კომფორტული. გააღეთ ხვრელი ჩამრთველისთვის, შემდეგ ქვიშა, ნაჭერი და/ან დრემელი ამოიღეთ ნებისმიერი ნაწილი ბოლოში, რაც მას მოერგება. ეცადეთ, არაფერი გააკეთოთ თავზე და მხოლოდ გამოასწორეთ ის, რაც გჭირდებათ იმისათვის, რომ შეძლოთ მისი მორგება გადახვევით, დახრილობით ან სხვა რამით, რომ შეხვიდეთ. მას შემდეგ რაც მიამაგრეთ პლასტმასის თხილით და მიამაგრეთ გადართვა. გაწურეთ ადგილი პოტენციომეტრის სახელურის გასავლელად და გაანადგურეთ ის ისე, რომ ის ჩაიძიროს და მოთავსდეს მთელს გზაზე. გააღეთ ხვრელები ისე, რომ ხრახნი დაიჭიროს მასში. მოხარეთ USB A კონექტორის პატარა ნაჭრები, რაც მის ზოგად სიგანეს ოდნავ გაზრდის (შეხედეთ სურათებს). ამოიღეთ ნაწილი კონექტორისთვის, თანდათანობით შეამოწმეთ, რომ დარწმუნდეთ, რომ კონექტორი ჯდება. სუპერ ჩასვით კონექტორი მის სლოტში. აიღეთ პლასტმასის პატარა ნაჭერი და გაჭერით ის ფორმა, რომელიც მოთავსდება კონექტორზე (შეხედეთ სურათებს), შემდეგ კი მიამაგრეთ იგი ხეზე. გათიშეთ ნებისმიერი ნაჭერი, რომელიც შეიძლება შეაფერხოს. ჩაამაგრეთ პოტენომეტრი და მიამაგრეთ სახელური. მიამაგრეთ პოზიტიური მავთული პოტენომეტრის ერთ ბოლოზე (არა ცვლადი ნაწილი) და უარყოფითი მავთული საპირისპირო ბოლოში. შედგით D- პინი ქვაბში ცვალებად პინზე. შედგით მავთული ქოთნიდან ქინძისთავზე დადებითი მავთულით ღილაკზე ერთ ქინძისთავზე. შეაერთეთ D+ ღილაკზე სხვა პინზე. მოჭრილი სათადარიგო მავთული და იზოლირება ცალი, რომელიც მას სჭირდება.
ნაბიჯი 6: პერანგი
იპოვეთ კომფორტული პერანგი, რომელიც შუქს გაუშვებს. მე ავირჩიე ეს ძირითადი თეთრი მაისური. მას ნამდვილად არ აქვს მნიშვნელობა ფერი და სტილი, სანამ შუქი ჩანს შიგნიდან. თუმცა მე არ გირჩევთ გრაფიკას წინა მხარეს. დადეთ ყველაფერი პერანგზე, რათა დაგეხმაროთ გადაწყვიტოთ სად გინდათ და გამოიყენეთ მოსახსნელი მარკირების ინსტრუმენტი მის დასახატად. მე (ვგულისხმობ ზოგიერთ მათგანს, ვინც ვიცი) მაქვს ფანქარი, რომელიც განკუთვნილია ქსოვილების მარკირებისთვის, რომელიც ადვილად ირეცხება. გაზომეთ ბატარეების ზომა, კონტროლერის ქეისი და ეკრანი და ამოჭერით ქაღალდის ნაჭრები შესატყვისი. შემდეგ მიამაგრეთ ქაღალდი ნაჭერზე, რომელიც არ იჭიმება. ქსოვა კარგად მუშაობს ამისათვის. შემდეგ ამოჭერით ოთხკუთხედი, დატოვეთ დაახლოებით მეოთხედი ინჩი ნაკერის გარშემო. შემდეგ გამოიყენეთ ქაღალდის ნაჭერი, როგორც სახელმძღვანელო დაუთოეთ ნაკეცები ქსოვილში. ახლა ქაღალდის ამოღება შესაძლებელია. ჯიბის იმ ნაწილზე, რომელიც ზემოდან იქნება, სამჯერ გადაკეცეთ იგი თავის თავზე. დაუთოვეთ და მიამაგრეთ, რომ შეინახოთ. შეკერეთ გარეგნობა მთელი ნაკეცის შუა ნაწილში. ახლა აიღეთ კუთხე და გადაკეცეთ ისე, რომ ერთმანეთზე პერპენდიკულარულად შეკერილი კიდეები იყოს პარალელური და შეკერეთ ვიზუალურად კუთხეში ყველაზე ახლოს (სურათები ნამდვილად გვეხმარება). გააკეთეთ ეს მეორე კუთხისთვისაც. თუ თქვენ ალბათ გექნებათ ჯიბიდან ამომრთველი ჩამრთველი, ჯიბის ძირში ჩაკეტეთ ღილაკის ხვრელი, სადაც ჩამრთველი ეხება. შემდეგ გაკერეთ ღილაკი და ამოჭერით შუა ნაწილი. მე ნამდვილად ვერ მივცემ დეტალურ მითითებებს, რადგან მე მქონდა მაგარი ინსტრუმენტი ღილაკების ხვრელების გასაკეთებლად. მხოლოდ დარწმუნდით, რომ ხვრელებს აკეთებთ სანამ ჯიბე შეკერილი იქნება. აიღეთ რამდენიმე ქინძისთავები და ჩაყარეთ პერანგი ჯიბის მარკირების კუთხეებში. აიღეთ ჯიბე და თითოეული კუთხე მიამაგრეთ პინზე (პერანგის შიგნით), დატოვეთ მეოთხედი ინჩი ნაკერისთვის და მიამაგრეთ პერანგზე. მას შემდეგ, რაც ჯიბე შეიკრა. ამოიღეთ ქინძისთავები, რომლებიც ჯიბეს არ იჭერენ და ჯიბეს შეკერეთ მაისურზე. გაიმეორეთ ყველა ჯიბისთვის. დიდი ჯიბისთვის, რომელსაც ეკრანი უჭირავს, დატოვეთ ხარვეზი მავთულისთვის ჯიბის ბოლოში. პერანგში ხვრელის ჩასატარებლად მონიშნეთ ადგილი და აიღეთ უთო უკანა მხარეს (ქსოვილზე უფრო ბრწყინვალე ნაწილით) და დაუთოეთ. შემდეგ, პატარა ხვრელისთვის (ისევე, როგორც მე გამოვიყენე გადართვის გადამრთველისთვის), გააკეთე ღილაკის ხვრელი. უფრო დიდი ხვრელისთვის მონიშნეთ მონახაზი და გამოიყენეთ ზიგზაგის სტიჩი ხაზის გასწვრივ (ან მოსახვევში ან რა გაქვთ) და ამოჭერით შუა ნაწილი. თუ გსურთ, შეგიძლიათ გამოიყენოთ საცობები ჯიბეების წონის შესანარჩუნებლად, ორი სამაგრები, რომლებიც ჯიბეებს ეჭირათ წინა და უკანა სამაგრები შარვალზე. მე ასევე მივიღე ქსოვილის პატარა ყუთი, რომელიც შეკერილია იმ საკინძების ნაწილებზე, რომლებიც ჩემს კანს ეხება. ორი პერანგი შეიძლება ძალიან ცხელი იყოს, ამიტომ მე გამოვრიცხე და გამოვიყენე ქსოვილის პატარა ყდის.
ნაბიჯი 7: პროგრამირება
და აქ არის კოდი. არსებობს რამდენიმე ნაწილი, რომლებიც კარგად არის კომენტარი, მაგრამ უმრავლესობა არ არის. თუ თქვენ გაქვთ შეკითხვები სხვადასხვა ნაწილზე, შეგიძლიათ მომცეთ ხაზის ნომერი (#ჩათვლით ხაზის პირველ ნომრად), ან მომცეთ იმ ხაზის (ების) ასლი და ფუნქცია, რომელშიც ის ცხოვრობს (როგორიცაა მარყუჟი () ან compMovePaddle ()) და მე ყველაფერს გავაკეთებ იმისთვის, რომ აგიხსნათ ეს, შემდეგ დავამატო კომენტარი განმარტების კოდს. #მოიცავს #განსაზღვრეთ PIN 6 // ამბობს რომელია თამაშის int ღილაკი int ღილაკი Pin = 40; // კარნახობს ქულას, ინახება ბიანარულ მასივში, რადგან ის 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" ნორმაში და სწრაფი ინტერვალში 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}; // თუ თქვენ მოიგებთ გამარჯვებას = {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}; // ადგენს led ზოლს Adafruit_NeoPixel strip = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // კონფიგურაცია, არ გამოდის პინ 40 შესასვლელად, იწყებს ზოლს, აჩვენებს // შეტყობინებას და აჩვენებს მას. void setup () {pinMode (buttonPin, INPUT); ზოლები. დაწყება (); for (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)); } else if ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } if (compScore == 1) {strip.setPixelColor (5+i, strip. Color (255, 255, 255)); } else if ((compScore == 0)) {strip.setPixelColor (5+i, strip. Color (255, 0, 0)); }} // ხატავს ბურთს საწყის პოზიციაში strip.setPixelColor (98, ზოლები. ფერი (255, 255, 255)); ზოლები. ჩვენება (); // წყვეტს თუ არა ბურთი მაღლა ან ქვევით (pIsPoint == false && cIsPoint == false) {clearScreen (); ხელმოუწერელი გრძელი მიმდინარემილის = მილილი (); // ანიჭებს მოთამაშეს პედლის პოზიციას pPaddle = checkPaddlePos (); // ამოწმებს მომდევნო პოზიციას checkNext (); // ბურთის გადატანა თუ (სწრაფი == ყალბი) {if (currentMillis - previousMillis> normInt) {previousMillis = currentMillis; moveBall (); }} else if (fast == true) {if (currentMillis - previousMillis> fastInt) {previousMillis = currentMillis; moveBall (); }} // დახაზეთ ბურთი 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)); } // კომპიუტერის პედლის მოძრაობა compMovePaddle (); // draw's the paddles drawPaddles (); // ფაქტიურად დაალაგე ყველაფერი.ზოლები. ჩვენება (); // შემოწმება, არის თუ არა ქულა მიღებული (pIsPoint == ჭეშმარიტი) {რომელიც = 0; bhd = 0; addOne (); შესვენება; } else if (cIsPoint == true) {რომელიც = 1; bhd = 1; addOne (); შესვენება; }} if (win == 1) {clearScreen (); for (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); ზოლები. ჩვენება (); } დაყოვნება (5000); for (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } მოგება = 0; } else if (win == -1) {clearScreen (); for (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); ზოლები. ჩვენება (); } დაყოვნება (5000); for (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } მოგება = 0; } pIsPoint = ყალბი; cIsPoint = ყალბი; bvp = 8; bhp = 6; bvd = შემთხვევითი (0, 2); // 0 ქვემოთ, 1 ზემოთ სწრაფად = ყალბი; } // AI თამაშისთვის void compMovePaddle () {unsigned long currentMillis = millis (); if (currentMillis - previousMillisForComp> 51) {previousMillisForComp = 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 ++; }}} // მოძრაობს ბურთს void moveBall () {if (bhd == 0) {bhp--; } else if (bhd == 1) {bhp ++; } if (bvd == 0) {bvp--; } else if (bvd == 1) {bvp ++; }} // ამატებს ერთს მასივს. თუ რომელია 0, ის ამატებს მოთამაშის ქულებს. თუ ის არის 1 ის ამატებს კომპიუტერებს void addOne () {if (რომელიც == 0) {// თუ ეს მოთამაშის ქულაა // დაამატეთ ერთი. ეს არის უმარტივესი გზა, მე ვიცი როგორ. for (int i = 0; i <5; i ++) {// loop if (playerScore == 0) {// თუ ეს მნიშვნელობა ნულოვანი მოთამაშეა ქულა = 1; // გააკეთე 1 შესვენება; // მაშინ წადი} სხვაგან {// თუ ეს არის 1 მოთამაშე ქულა = 0; // გახადე ის ნული და მარყუჟი}}} სხვა შემთხვევაში თუ (რომელიც == 1) {for (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; შესვენება; } else {compScore = 0; }}} // ამოწმებს, მოიგო თუ არა ვინმემ. if (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {გამარჯვება = -1; } else if (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {მოგება = 1; }} // ამოწმებს ბურთებს მომდევნო პოზიციას void checkNext () {// შეამოწმებს თუ არა ქულა დაგროვებული თუ (bhp == 13) {pIsPoint = true; } else if (bhp == 0) {cIsPoint = true; } // თუ ქულა იქნა მიღებული, გამოტოვეთ დანარჩენზე თუ (pIsPoint == ყალბი || cIsPoint == ყალბი) {// ამოწმებს ბურთს ვერტიკალურად თუ (bvp+bvd == 15) {bvd = 0; } else if (bvp+bvd == 0) {bvd = 1; } // ამოწმებს ბურთს ჰორიზონტალურად if (bhp+bhd == 13) {// პირველად კომპიუტერის მხარეს if (bvp> = 10-cPaddle && bvp <= 10-cPaddle+4) {if (bhd == 1) {bhd = 0; } else if (bhd == 0) {bhd = 1; } სწრაფი = ყალბი; } 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; } სწრაფი = ყალბი; }} სხვაგან თუ (bhp+bhd == 1) {// მაშინ მოთამაშის მხარეს, თუ (bvp> = pPaddle && bvp <= pPaddle+4) {// ის ურტყამს ნორმალურ ადგილას? // აიღე ბურთი! თუ (bhd == 1) {bhd = 0; } else if (bhd == 0) {bhd = 1; }} სხვაგან თუ (bvp+bvd == pPaddle || bvp+bvd-5 == pPaddle) {// ის ურტყამს კუთხეში, თუ (bvp! = 0 && bvp! = 14) {// ეს არის? მაღლა არ არის თუ დაბლა? // აიღე ბურთი! თუ (bvd == 0) {bvd = 1; } else if (bvd == 1) {bvd = 0; } bhd = 1; სწრაფი = ჭეშმარიტი; } სხვაგან თუ (bvp == 0 || bvp == 14) {// ის მაღლაა თუ ქვევით? // აიღე ბურთი! bhd = 0; სწრაფი = ჭეშმარიტი; // დააყენეთ მნიშვნელობა, რათა შემდგომში ბურთი სწრაფად იმოძრაოს}}}}} int checkPaddlePos () {// კითხულობს ქვაბს და წყვეტს პოზიციის შესაბამისად თუ (analogRead (A15) <93) {დაბრუნდება 0; } else if (analogRead (A15) <186) {დაბრუნება 1; } else if (analogRead (A15) <279) {დაბრუნება 2; } else if (analogRead (A15) <372) {დაბრუნება 3; } else if (analogRead (A15) <465) {დაბრუნება 4; } else if (analogRead (A15) <558) {დაბრუნება 5; } else if (analogRead (A15) <652) {დაბრუნება 6; } else if (analogRead (A15) <745) {დაბრუნება 7; } else if (analogRead (A15) <837) {დაბრუნება 8; } else if (analogRead (A15) <= 931) {დაბრუნება 9; } else if (analogRead (A15) <= 2014) {დაბრუნება 10; }} void drawPaddles () {// მიაპყროს პედლებს სწორ ადგილას და აჩვენებს ქულას პედლზე (int i = 0; i <5; i ++) {if (playerScore == 1) {ზოლები. setPixelColor (pPaddle+i, ზოლები. ფერი (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)) {strip.setPixelColor (199+cPaddle-i, strip. Color (0, 255, 0)); }}} void clearScreen () {for (int i = 0; i <= 210; i ++) {strip.setPixelColor (i, strip. Color (0, 0, 0)); } strip.show (); }
ნაბიჯი 8: მზა პროდუქტი
და აი, წადი, დასრულებული პერანგი!
გირჩევთ:
ითამაშეთ სიმონის თამაში მაისურზე: 5 ნაბიჯი
ითამაშეთ სიმონის თამაში მაისურზე: ყოველთვის გსურდათ სიმონის თამაში მაისურზე? მეც! ამ სასწავლო ინსტრუქციაში მე გაჩვენებ, თუ როგორ უნდა გააკეთო სიმონის თამაშის ვერსია, რომელიც შეგიძლია ითამაშო მაისურის შეხებით, მაკიაჟის მაკიაჟის გამოყენებით
ეკრანის / ეკრანის გარეშე გაშვება Raspberry Pi ან სხვა Linux / unix დაფუძნებული კომპიუტერები: 6 ნაბიჯი
ეკრანის / ეკრანის გარეშე გაშვება Raspberry Pi– ზე ან Linux– ზე დაფუძნებულ სხვა კომპიუტერებზე: როდესაც ადამიანების უმეტესობა ყიდულობს Raspberry PI– ს, მათ ჰგონიათ, რომ მათ სჭირდებათ კომპიუტერის ეკრანი. ნუ დახარჯავთ ფულს არასაჭირო კომპიუტერის მონიტორებსა და კლავიშებზე. ნუ დაკარგავთ დროს კომპიუტერებს შორის კლავიატურების და მონიტორების გადაადგილებას. არ დაუკავშიროთ ტელევიზორი, როდესაც ის არ არის
როგორ შეაკეთოთ გატეხილი ან მოწყვეტილი მოქნილი / მოქნილი კაბელები .: 5 ნაბიჯი
როგორ შეაკეთოთ გატეხილი ან მოწყვეტილი მოქნილი / მოქნილი კაბელები .: კაბელის რეალური ზომა იყო 3/8 ინჩის სიგანე
ESP8266 VGA პონგი: 5 ნაბიჯი (სურათებით)
ESP8266 VGA Pong: ამ ინსტრუქციებში მე ვაჩვენებ, თუ როგორ უნდა ავაშენოთ კლასიკური თამაშის Pong– ის რეპროდუქცია VGA მონიტორისთვის, ESP8266 და რამდენიმე სხვა კომპონენტის გამოყენებით. ეს თამაში შესაძლებელი გახდა EspVGAx ბიბლიოთეკის მიერ, რომელიც ახლახანს გამოქვეყნდა GitHub– ზე სანდრო მაფიოდოს მიერ
პიონსი და ჯეისი პონგი არდუინოზე: 5 ნაბიჯი (სურათებით)
პიონსი და ჯეისი პონგი არდუინოზე: ეს არის ინსტრუქცია, თუ როგორ უნდა ითამაშოთ პონგი არდუინოზე. იგი ნათქვამია ხუთი მარტივი ნაბიჯის განმავლობაში. ვიმედოვნებთ, რომ მოგეწონებათ ჩვენი თამაში