Სარჩევი:

Arduino და Touchpad Tic Tac Toe: 8 ნაბიჯი (სურათებით)
Arduino და Touchpad Tic Tac Toe: 8 ნაბიჯი (სურათებით)

ვიდეო: Arduino და Touchpad Tic Tac Toe: 8 ნაბიჯი (სურათებით)

ვიდეო: Arduino და Touchpad Tic Tac Toe: 8 ნაბიჯი (სურათებით)
ვიდეო: NKK SmartSwitch™ - Another Geek Moment | DigiKey 2024, ივნისი
Anonim
Arduino და Touchpad Tic Tac Toe
Arduino და Touchpad Tic Tac Toe

ან, სავარჯიშო შეყვანის და გამომავალი მულტიპლექსირებისა და ბიტებთან მუშაობისთვის. და წარდგენა არდუინოს კონკურსზე.

ეს არის tic tac toe თამაშის განხორციელება 3x3 მასივის ორფერიანი LED- ების ჩვენებისთვის, მარტივი რეზისტენტული სენსორული პანელი და არდუინო, რომ ყველაფერი ერთმანეთთან დააკავშიროს. იმისათვის, რომ ნახოთ როგორ მუშაობს, ნახეთ ვიდეო: რას მოითხოვს ეს პროექტი: ნაწილები და სახარჯო მასალები ერთი პერფორა დაფა (ან ზოლის დაფა) ცხრა ორფერიანი LED, საერთო კათოდი ცხრა იდენტური რეზისტორი, 100-220 ოჰმ დიაპაზონში ექვსი იდენტური რეზისტორი, 10kohm - 500kohm დიაპაზონი ერთი პოლუსი, ორმაგი სროლის გადამრთველი სათაურის ქინძისთავები რამოდენიმე ელექტრული მავთული ერთი პატარა კვადრატული ფურცელი გამჭვირვალე აკრილის, ~ 1 მმ სისქის, 8 სმ გვერდზე გამჭვირვალე წებოვანი ლენტი სითბოს გამაცილებელი (სურვილისამებრ) საკმაოდ გავრცელებული ნივთებია, საერთო ღირებულება არ უნდა აღემატებოდეს 20 აშშ დოლარს. ინსტრუმენტები ერთი Arduino- ს დაყენება (Arduino Duemilanove, Arduino IDE, კომპიუტერი, USB კაბელი) ჩვეულებრივი ელექტრო ინსტრუმენტები (მულტიმეტრი, გამაგრებითი იარაღი, მავთულის ჩამკეტები, მავთულის საჭრელი) ყველაფერი, რაც დაკავშირებულია Arduino– სთან, შეიძლება იყოს ნაპოვნია https://www.arduino.cc. გააგრძელე აღნაგობა!

ნაბიჯი 1: LED მატრიცის გაყვანილობა

LED მატრიცის გაყვანილობა
LED მატრიცის გაყვანილობა
LED მატრიცის გაყვანილობა
LED მატრიცის გაყვანილობა

LED- ის შუქისთვის, მისი ორივე წამყვანი უნდა იყოს დაკავშირებული. თუ ჩვენ დავუთმობთ წყვილ ქინძისთავებს თითოეულ 18 LED- ს (9 წითელი, 9 მწვანე), ჩვენ სწრაფად დავასრულებთ ქინძისთავებს Arduino– ზე. თუმცა, მულტიპლექსირებით, ჩვენ შევძლებთ მივმართოთ ყველა LED- ს მხოლოდ 9 ქინძისთავით! ამისათვის, LED- ები მავთულხლართებშია გადაყვანილი, როგორც ეს ნაჩვენებია პირველ ფიგურაში. LED- ები დაჯგუფებულია სამი სვეტით და მათი კათოდები დაჯგუფებულია ექვსეულის რიგებში. კონკრეტული ანოდის ხაზის მაღალი და კონკრეტული კათოდური ხაზის დაყენებით და მაღალი წინაღობით ყველა სხვა ანოდისა და კათოდის ხაზზე, ჩვენ შეგვიძლია შეარჩიეთ რომელი LED გვინდა განათებული, რადგან დენის გავლა შესაძლებელია მხოლოდ ერთი შესაძლო გზით. მაგალითად, მეორე ფიგურაში, მწვანე ანოდის 1 ხაზის მაღალი და კათოდური 1 ხაზის დაბალი, ქვედა მარცხენა მწვანე LED განათება რა ამ შემთხვევაში მიმდინარე გზა ნაჩვენებია ლურჯში. მაგრამ რა მოხდება, თუ გსურთ ერთზე მეტი LED განათება სხვადასხვა ხაზებზე? ჩვენ გამოვიყენებთ მხედველობის დაჟინებას ამის მისაღწევად. წყვილი LED ხაზების ძალიან სწრაფად შერჩევით, ის იძლევა ილუზიას, რომ ყველა შერჩეული LED ნათდება ერთდროულად.

ნაბიჯი 2: LED მატრიცის განლაგება

LED მატრიცის განლაგება
LED მატრიცის განლაგება
LED მატრიცის განლაგება
LED მატრიცის განლაგება

ქვემოთ მოცემული სქემის დიაგრამა გვიჩვენებს, თუ როგორ არის შეერთებული LED ნათურები ფიზიკურად (G1-G9: მწვანე LED- ები, R1-R9: წითელი LED- ები). ეს დიაგრამა განკუთვნილია ერთი წითელი და მწვანე LED- ებისთვის, თუ იყენებთ ორფეროვან საერთო კათოდურ წითელ/მწვანე LED- ებს, წითელ/მწვანე წყვილზე არის მხოლოდ ერთი კათოდური ფეხი, რომელიც უნდა შეაერთოთ. წითელი და მწვანე ანოდის ხაზები შედის PWM ქინძისთავებში არდუინოს (ქინძისთავები 3, 5, 6, 9, 10, 11 დუემილანოვზე), ასე რომ ჩვენ გვექნება შემდგომი გაქრობის მსგავსი ეფექტები. კათოდური ხაზები გადადის ქინძისთავებში 4, 7 და 8. თითოეულ კათოდსა და ანოდის ხაზს აქვს 100 ოჰმიანი რეზისტორი დაცვის მიზნით.

ნაბიჯი 3: მიმართეთ LED მატრიცას

Tic tac toe კოდისთვის, ჩვენ უნდა შეგვეძლოს შევინახოთ შემდეგი ინფორმაცია LED- ების შესახებ: - განათებულია თუ არა LED - განათებულია თუ არა, წითელი თუ მწვანე, ამის ერთი გზა მდგომარეობის შენახვაა 9 უჯრედის მასივში, სამი ციფრის გამოყენებით მდგომარეობის გამოსახატავად (0 = გამორთული, 1 = წითელი ჩართული, 2 = მწვანე ჩართული). ყოველთვის, როდესაც ჩვენ გვჭირდება LED- ის მდგომარეობის შემოწმება, მაგალითად, იმის შესამოწმებლად, არის თუ არა მოგების მდგომარეობა, ჩვენ დაგვჭირდება მასივის გავლა. ეს არის ეფექტური მეთოდი, მაგრამ საკმაოდ მოუხერხებელი. უფრო გამარტივებული მეთოდი იქნებოდა ცხრა ბიტიანი ორი ჯგუფის გამოყენება. ცხრა ბიტიანი პირველი ჯგუფი ინახავს LED- ების ჩართვისა და გამორთვის სტატუსს, ხოლო მეორე ჯგუფი ცხრა ბიტიდან ინახავს ფერს. შემდეგ, LED მდგომარეობების მანიპულირება უბრალოდ ცოტა არითმეტიკული და ცვალებადი ხდება. აქ არის დამუშავებული მაგალითი. ვთქვათ, ჩვენ ვხატავთ ჩვენს tic tac toe ბადეს გრაფიკულად და პირველ რიგში ვიყენებთ 1s და 0s ჩართვის-გამორთვის სტატუსის გამოსახატავად (1 ჩართულია, 0 გამორთულია): 000 000 = ქვედა მარცხენა LED განათებული 100 100 010 = მატრიცა დიაგონალით LED ნათურები 001 თუ ჩვენ ჩამოვთვლით უჯრედებს ქვედა მარცხნიდან, ჩვენ შეგვიძლია დავწეროთ ზემოთ ნაჩვენები ბიტების სერია. პირველ შემთხვევაში, ეს იქნება 100000000, ხოლო მეორე შემთხვევაში, იქნება 001010100. თუ ჩვენ ამას ჩავთვლით როგორც ორობითი გამოსახულებებით, მაშინ ბიტების თითოეული სერია შეიძლება შეჯამდეს ერთ რიცხვში (256 პირველ შემთხვევაში, 84 მეორე შემთხვევაში). მასივის ნაცვლად მატრიცის მდგომარეობის შესანახად, ჩვენ შეგვიძლია გამოვიყენოთ მხოლოდ ერთი რიცხვი! ანალოგიურად, ჩვენ შეგვიძლია წარმოვადგინოთ LED- ის ფერი ერთნაირად (1 არის წითელი, 0 არის მწვანე). მოდით, პირველ რიგში ვივარაუდოთ, რომ ყველა LED ნათებულია (ასე რომ, ჩართვის-გამორთვის სტატუსი წარმოდგენილია 511-ით). ქვემოთ მოყვანილი მატრიცა წარმოადგენს LED- ების ფერის მდგომარეობას: 010 მწვანე, წითელი, მწვანე 101 წითელი, მწვანე, წითელი 010 მწვანე, წითელი, მწვანე ჯერ ჩართვის-გამორთვის მდგომარეობაში, შემდეგ კი ფერის მდგომარეობაში. მაგალითად, ვთქვათ, ჩვენი გამორთვის მდგომარეობა არის 100100100 და ფერის მდგომარეობაა 010101010. აქ არის ჩვენი ალგორითმი LED მატრიცის გასანათებლად: ნაბიჯი 1. გააკეთეთ ჩართვის მდგომარეობის ბიტუალური დამატება ორობითი 1-ით (ანუ ბიტი ნიღაბი). ნაბიჯი 2. თუ ეს მართალია, LED ნათდება. ახლავე გააკეთეთ ფერის მდგომარეობის ბიტური დამატება ორობითი 1. ნაბიჯი 3. თუ ეს ასეა, აანთეთ წითელი LED. თუ ის ყალბია, აანთეთ მწვანე LED. ნაბიჯი 4. გადაიტანეთ როგორც ჩართვის, ასევე ფერის მდგომარეობა, ერთი ბიტი მარჯვნივ (ანუ ბიტის გადატანა). ნაბიჯი 5. გაიმეორეთ ნაბიჯები 1 - 4 სანამ ცხრა ბიტი წაიკითხება. გაითვალისწინეთ, რომ ჩვენ ვავსებთ მატრიცას უკუღმა - ვიწყებთ მე –9 უჯრედით, შემდეგ ვუბრუნდებით უჯრედში 1. ასევე, ჩართვისა და ფერის მდგომარეობები ინახება როგორც ხელმოუწერელი მთელი ტიპის (სიტყვა) ხელმოწერილი მთელი რიცხვის ნაცვლად. ეს იმიტომ ხდება, რომ ცოტათი გადაადგილებისას, თუ ფრთხილად არ ვიქნებით, შეიძლება უნებლიედ შევცვალოთ ცვლადის ნიშანი. მიმაგრებულია LED მატრიცის განათების კოდი.

ნაბიჯი 4: Touch Pad- ის აგება

Touch Pad– ის მშენებლობა
Touch Pad– ის მშენებლობა
Touch Pad– ის მშენებლობა
Touch Pad– ის მშენებლობა
Touch Pad– ის მშენებლობა
Touch Pad– ის მშენებლობა
Touch Pad– ის მშენებლობა
Touch Pad– ის მშენებლობა

სენსორული პანელი აგებულია თხელი აკრილის ფურცლისგან, საკმარისად დიდი, რომ გადაფაროს LED მატრიცა. შემდეგ აკრიფეთ ზედიზედ და სვეტის მავთულები აკრილის ფურცელზე, გამჭვირვალე ლენტის გამოყენებით. გამჭვირვალე ლენტი ასევე გამოიყენება როგორც მავთულხლართებს შორის გამყოფი ადგილი, კვეთაზე. დარწმუნდით, რომ გამოიყენეთ სუფთა ინსტრუმენტები, რათა თავიდან აიცილოთ თითის ცხიმი ფირზე წებოვან მხარეს. თითის ანაბეჭდის ლაქები არა მხოლოდ მახინჯია, არამედ ფირს ნაკლებად წებოვანს ხდის. თითოეული ხაზის ერთი ბოლო მოაშორეთ და მეორე ბოლო უფრო გრძელი მავთულის შეაერთეთ. შეაერთეთ რეზისტორი მავთულხლართებთან ერთად, კონექტორებზე შედუღებამდე. აქ გამოყენებული რეზისტორები არის 674k, მაგრამ ნებისმიერი მნიშვნელობა 10k და 1M შორის უნდა იყოს ჯარიმა. Arduino– სთან დაკავშირება ხდება 6 ანალოგური ქინძისთავების გამოყენებით, 14-16 ქინძისთავებით, რომლებიც დაკავშირებულია მავთულის ქსელის რიგებთან და 17-19 ქინძისთავები სვეტები.

ნაბიჯი 5: Touch Pad - როგორ მუშაობს

Touch Pad - როგორ მუშაობს
Touch Pad - როგორ მუშაობს
Touch Pad - როგორ მუშაობს
Touch Pad - როგორ მუშაობს

ისევე, როგორც ჩვენ ვიყენებდით ჯვრის მულტიპლექსერს LED მატრიცის დასაყენებლად მინიმალური ქინძისთავებით, ჩვენ შეგვიძლია გამოვიყენოთ მსგავსი ჯვარედინი მულტიპლექსერი სენსორული სენსორის მასივის დასაყენებლად, რომელიც შემდეგ შეგვიძლია გამოვიყენოთ LED- ების გასააქტიურებლად. ამ სენსორული ბალიშის კონცეფცია მარტივია. ეს არსებითად არის მავთულის ბადე, სამი შიშველი მავთული რიგებშია და სამი შიშველი მავთული სვეტებზე ზევით. თითოეულ კვეთაზე არის იზოლაციის მცირე კვადრატი, რომელიც ხელს უშლის ორ მავთულს შეხებაში. კვეთაზე თითის შეხება მოახდენს ორივე მავთულს, რის შედეგადაც უზარმაზარი, მაგრამ სასრული წინააღმდეგობა იქნება ორ მავთულს შორის. მცირე დენი, მაგრამ გამოვლენილი, შეიძლება გაკეთდეს ერთი მავთულიდან მეორეზე, თითის საშუალებით. იმის დასადგენად, თუ რომელ კვეთაზეა დაჭერილი, გამოიყენება შემდეგი მეთოდი: ნაბიჯი 1: დააყენეთ ყველა სვეტის ხაზი OUTPUT LOW. ნაბიჯი 2: დააყენეთ მწკრივის ხაზები INPUT- ში, შიდა გაყვანილობა გააქტიურებულია. ნაბიჯი 3: მიიღეთ ანალოგის წაკითხვა თითოეულ მწკრივზე, სანამ მნიშვნელობა არ დაეცემა მოცემულ ბარიერს ქვემოთ. ეს გეუბნებათ რომელ რიგშია დაჭერილი კვეთა. ნაბიჯი 4: გაიმეორეთ ნაბიჯები 1-3, მაგრამ ახლა სვეტებით, როგორც შესასვლელით და სტრიქონებით, როგორც შედეგებით. ეს გეუბნებათ რომელი სვეტია დაჭერილი კვეთა. ხმაურის ზემოქმედების შესამცირებლად ხდება რიგი კითხვების აღება და შემდგომ საშუალო. საშუალო შედეგი შემდეგ შედარებულია ზღურბლთან. ვინაიდან ეს მეთოდი უბრალოდ ამოწმებს ზღურბლს, ის არ არის შესაფერისი ერთდროული პრესის გამოვლენისათვის. თუმცა, ვინაიდან tic tac toe მიდის მორიგეობით, ერთი პრესის კითხვა საკმარისია. მიმაგრებულია ესკიზი, რომელიც ასახავს როგორ მუშაობს touchpad. როგორც LED მატრიქსთან ერთად, ბიტები გამოიყენება იმის გამოსახატავად, თუ რომელი კვეთა იყო დაჭერილი.

ნაბიჯი 6: ყველაფრის ერთად შედგენა

ყველაფრის ერთად აწყობა
ყველაფრის ერთად აწყობა

ახლა, როდესაც ყველა ინდივიდუალური კომპონენტი დასრულებულია, დროა, რომ ყველაფერი ერთად იყოს. გადააფარეთ მავთულის ბადე LED მატრიცაზე. შეიძლება დაგჭირდეთ LED მატრიცის კოდში პინების ნომრების გადალაგება, რათა ის სინქრონიზებული იყოს მავთულის ქსელის სენსორთან. მიამაგრეთ მავთულის ბადე თქვენი არჩევანის შესაკრავებით ან ადჰეზივებით და დააწებეთ ლამაზ სათამაშო დაფაზე. დაამატეთ გადართვა პინ 12 -სა და არდუინოს მიწას შორის. ეს გადართვა არის 2 მოთამაშის რეჟიმსა და 1 მოთამაშის რეჟიმს შორის (მიკროკონტროლერის წინააღმდეგ).

ნაბიჯი 7: პროგრამირება Tic Tac Toe

მიმაგრებულია თამაშის კოდი. მოდი, პირველ რიგში დავამსხვრიოთ tic tac toe თამაში მის სხვადასხვა საფეხურებში, ორი მოთამაშის რეჟიმში: ნაბიჯი 1: მოთამაშე A ირჩევს შევსებულ უჯრედს კვეთაზე შეხებით. ნაბიჯი 2: LED იმ უჯრედისთვის ანათებს A. ფერით. ნაბიჯი 3: შეამოწმეთ გაიმარჯვა თუ არა მოთამაშემ A. ნაბიჯი 4: მოთამაშე B ირჩევს შევსებულ უჯრედს. ნაბიჯი 5: ამ უჯრედის LED ნათდება B ფერით. ნაბიჯი 6: შეამოწმეთ, გაიმარჯვა თუ არა მოთამაშემ B. ნაბიჯი 7: გაიმეორეთ 1-6, სანამ არ არსებობს გამარჯვების მდგომარეობა, ან თუ ყველა უჯრედი ივსება. უჯრედების კითხვა: პროგრამის მარყუჟები ქსელის კითხვასა და LED მატრიცის ჩვენებას შორის რა სანამ ქსელის სენსორი არ დაარეგისტრირებს არა ნულოვან მნიშვნელობას, ეს მარყუჟი გაგრძელდება. როდესაც კვეთა დაჭერილია, დაჭერილი ცვლადი ინახავს დაპრესილი უჯრედის პოზიციას. შემოწმება თუ უჯრედი არ არის შევსებული: როდესაც პოზიციის კითხვა მიიღება (ცვლადი დაჭერილია), იგი შედარებულია უჯრედის ამჟამინდელ სტატუსთან (ინახება ცვლადში GridOnOff) ცოტაოდენი დამატების გამოყენებით. თუ დაჭერილი უჯრედი არ არის შევსებული, შემდეგ გააგრძელეთ LED- ის განათება, წინააღმდეგ შემთხვევაში დაუბრუნდით უჯრედების კითხვას. ფერების გადართვა: ლოგიკური ცვლადი, Turn, გამოიყენება ჩაწერას, ვისი ჯერია. უჯრედის არჩევისას არჩეული LED ფერი განისაზღვრება ამ ცვლადით, რომელიც იცვლება უჯრედის არჩევისას. გამარჯვების მდგომარეობის შემოწმება: არსებობს მხოლოდ 8 შესაძლო გამარჯვების პირობა და ეს ინახება სიტყვის ცვლადებად მასივში (winArray). ორი ბიტიურად დამატება გამოიყენება მოთამაშის შევსებული უჯრედის პოზიციების შესადარებლად მოგების პირობებთან. თუ არის მატჩი, მაშინ პროგრამა აჩვენებს მოგების რუტინას, რის შემდეგაც იგი იწყებს ახალ თამაშს. გათამაშების მდგომარეობის შემოწმება: როდესაც ცხრა ბრუნვაა ჩაწერილი და ჯერ კიდევ არ არის მოგების მდგომარეობა, მაშინ თამაში ფრეა. LED- ები მაშინ ქრებოდა და იწყება ახალი თამაში. გადართვა ერთი მოთამაშის რეჟიმში: თუ გადამრთველი ჩართულია პოზიციაში, პროგრამა გადადის ერთ მოთამაშის რეჟიმში, პირველ რიგში იწყება ადამიანის მოთამაშე. ადამიანის მოთამაშის რიგის დასასრულს, პროგრამა უბრალოდ ირჩევს შემთხვევით უჯრედს. ცხადია, ეს არ არის ყველაზე ჭკვიანი სტრატეგია!

ნაბიჯი 8: შენიშვნები და შემდგომი გაუმჯობესებები

აქ არის ვიდეო, რომელშიც ნაჩვენებია ერთი მოთამაშის რეჟიმი, სადაც პროგრამა ასრულებს სრულიად შემთხვევით მოძრაობებს: აქ ნაჩვენები პროგრამა არის მხოლოდ მინიმალური, შიშველი ძვლების ვერსია. ბევრი სხვა რამ შეიძლება გაკეთდეს ამით: 1) ერთდროულად სამი LED- ის განათება. მიმდინარე კოდი აჩვენებს ერთ LED- ს ერთდროულად. თუმცა, აქ ნაჩვენები გაყვანილობით, შესაძლებელია ერთ კათოდურ ხაზთან დაკავშირებული ყველა LED- ის განათება ერთდროულად. ასე რომ, ცხრა პოზიციის ველოსიპედის ნაცვლად, ყველაფერი რაც თქვენ გჭირდებათ არის სამი კათოდური ხაზის გავლა. მბჟუტავი. შეფერხებების გამოყენებით, LED- ების დრო შეიძლება ზუსტად კონტროლდებოდეს და გამოიწვევს უფრო გამარტივებულ ჩვენებას. toe player. ვიმედოვნებთ, რომ თქვენ გსიამოვნებთ ამ სასწავლო ინსტრუქციის კითხვა ისევე, როგორც მე ვმხიარულობდი მასზე მუშაობით!

გირჩევთ: