Სარჩევი:

SONIC LED გამოხმაურება: 7 ნაბიჯი (სურათებით)
SONIC LED გამოხმაურება: 7 ნაბიჯი (სურათებით)

ვიდეო: SONIC LED გამოხმაურება: 7 ნაბიჯი (სურათებით)

ვიდეო: SONIC LED გამოხმაურება: 7 ნაბიჯი (სურათებით)
ვიდეო: The Rocket Board: Flash vs Ironman Race games Edition 2024, ივლისი
Anonim
SONIC LED გამოხმაურება
SONIC LED გამოხმაურება
SONIC LED გამოხმაურება
SONIC LED გამოხმაურება
SONIC LED გამოხმაურება
SONIC LED გამოხმაურება

Გამარჯობა კიდევ ერთხელ, გძულთ რომ თქვენი რობოტი ყველაფერში ხვდება? ეს მოაგვარებს იმ პრობლემას. 8 ხმოვანი სენსორით ეს რთულად გამოიყურება … მაგრამ სინამდვილეში მე ეს ძალიან მარტივად გავაკეთე. მე ვცდილობ გამოვაქვეყნო პროექტები, რომლებიც დაგეხმარებათ არდუინოს შესახებ გაეცნოთ და აჩვენოთ კონცეფცია "ყუთის მიღმა". ეს პოსტი დაგეხმარებათ გაიგოთ 595 გადართვა, პრო-მინიები, როგორც პროგრამირებადი სენსორი და რეალურ დროში გამოხმაურების გრანდიოზული გამოყენება. თუ თქვენ სარგებლობთ Arduino– ით როგორც „დააკოპირეთ და ჩასვით და დაამატეთ დანამატი“, შეგიძლიათ უბრალოდ გამოტოვოთ ეს.

მე მიყვარს პრო-მინიების გამოყენება. მათი ფასია 2.50 აშშ დოლარი, მუშაობს სრულფასოვნად, ხოლო სათაურების დაყენება მათ ძალიან მოქნილს ხდის. გამოიყენება როგორც სენსორული მიკრო, თქვენ შეგიძლიათ გქონდეთ ის „გააკეთე ის, რაც გინდა“იმის ნაცვლად, რასაც ყიდულობს სენსორი. I2C– ით მხოლოდ 2 მავთულის გამოყენებით ისინი შეიძლება გაერთიანდეს ყველა ერთ ხაზზე. ასე რომ გადაადგილდით MEGA– ზე მე შემიძლია 4 მიკროავტობუსი გაუშვა კოდის 4 ცალკეული ხაზი ერთდროულად, სულ რაღაც 10,00 დოლარად. აქ მე ვიყენებ მინის ხმის სენსორების გასახსნელად 595 -ით და რეალურ დროში მართული მანძილის საჩვენებლად. შემდეგ უბრალოდ გაზიარეთ 8 ბიტიანი მონაცემები დედა დაფაზე. ეს ამოიღებს დატვირთვას დედა დაფაზე და ხდის მის კოდს ძალიან მარტივს.

არის პრობლემა ხმოვან სენსორებთან … არანაირი ვიზუალური უკუკავშირი. თქვენ არასოდეს იცით სენსორი მხოლოდ მკვდარი წონაა თუ მუშაობს! მე მჯერა, ვინც ოდესმე გამოვიდა 'BLINK' არის უფრო ჭკვიანი ვიდრე აინშტაინი. მხოლოდ ერთი ხელმძღვანელობს და ინფორმაციის სამყარო გადადის მოციმციმე. ასე რომ, ხმოვან სენსორს სჭირდება რეალურ დროში გამოხმაურება. აქ მე გამოვიყენე led– ების მასივი თითოეული სენსორის მონიტორინგისთვის. თქვენ არ გჭირდებათ ისინი, უბრალოდ გააკეთეთ სენსორები გამათბობლების გარეშე. მაგრამ PCB– ზე LED– ების ქონა სასარგებლოა.

ნაბიჯი 1: გააკეთეთ PCB

გააკეთეთ PCB
გააკეთეთ PCB
გააკეთეთ PCB
გააკეთეთ PCB
გააკეთეთ PCB
გააკეთეთ PCB
გააკეთეთ PCB
გააკეთეთ PCB

გააკეთეთ PCB და შეავსეთ. სიფრთხილე… მე დავუშვი შეცდომა PCB– ზე 4 პინიანი კავშირებისათვის, რათა ხმის სენსორები ჩართულიყო. ECHO და TRIGGER Vcc და საფუძვლები აპირებდნენ კომპიუტერში ჩართვას. კონექტორებისთვის საკმარისი ადგილი არ არის, ასე რომ, მე მხოლოდ PCB გავაკეთე პინებით. ასე რომ თქვენ შეგიძლიათ შეაერთოთ PCB მავთულის კონექტორი და შეაერთოთ რეალურ ხმოვან სენსორებში. რაც შეეხება led– ებს, მე დავდე ყვითელი ლიდერები შიდა კიდეზე და წითელი გარედან. ეს დაგეხმარებათ დაინახოთ მანძილი, თუ სენსორები სწორად ზომავს.

ეს არის ერთ – ერთი იმ რამოდენიმე გვერდითი კომპიუტერიდან, რომელიც მე ოდესმე გამიკეთებია. მირჩევნია გავაკეთო 2 ცალ ცალ მხარეს და მხტუნავები გავუშვა. მაგრამ led დისპლეის მისაღებად გჭირდებათ მინიმუმ ზედა PCB. გადმოწერაში გამოვყავი განლაგება.

PCB არის პრო-მინი, A4-A5 შიგნით სათაურის შიგნით. ნებისმიერ შემთხვევაში, უბრალოდ დააკავშირეთ A4-A5 სამაგისტრო A4-A5– თან. ასევე არ დაივიწყოთ Vcc და Grounds.

ნაბიჯი 2: ბევრი შეცდომა

ბევრი შეცდომა
ბევრი შეცდომა

ახლა ჩემი შეცდომების გამო … მე შევეცადე გამეხსნა გამომწვევები ერთდროულად (ყველა ერთმანეთთან შეკრული) და ეს ერთგვარი კარგად მუშაობდა, მაგრამ მოხდა გარკვეული ურთიერთქმედება. ასე რომ, ახლა ყველა ECHOS გადადის მიკროზე (8) და ტრიგერები დაყენებულია 595 -ით. კიდევ სამი ქინძისთავი (3). რაც შეეხება led- ებს, მულტიპლექსირება არ იმუშავებს. თითოეული led– ისთვის გჭირდებათ სრული ჩართვის დრო. ეს ნიშნავს, რომ 7 led– ის თითოეულ სტრიქონს უნდა ჰქონდეს საკუთარი 595. 595 – ის განახლების შემდეგ led– ები დარჩება განათებული შემდეგ განახლებამდე. სადაც ლიდერის მულტიპლექსირება მხოლოდ იმ წამის მეათედს ანათებს. ეს კარგად მუშაობს ჩემს მკითხველში და მას სჭირდება სპეციალური მიკრო. დრო არ არის 8 ხმოვანი სენსორის სკანირებისა და მანძილის გაზომვისთვის. ვცადე და ძალიან ცუდი შედეგი მივიღე. Led– ების გამრავლება ასევე ნიშნავს მწკრივის + სვეტის ბადეს და ეს ნიშნავს დაახლოებით 64+ შესვლას PCB– ში.

მე გამოვიყენე მხოლოდ 7 გამოსავალი 595 – დან PCB– ზე არეულობის გამო. მანძილზე ვერ გეტყვით, არის თუ არა 7 ან 8 წამყვანი მათი მოძრაობა. თქვენ შეიძლება ცდუნებდეთ მიაწებოთ ყველა led ერთ რეზისტორს და ეს მუშაობს, მაგრამ მასივის სიკაშკაშე იცვლება led– ების რაოდენობასთან შედარებით. ასე რომ, ერთი რეზისტორი თითო led არის საუკეთესო. მე უბრალოდ მიყვარს 595, მაგრამ თუ მათ უბრალოდ გადააადგილეს Vcc და 0-out ქინძისთავები ან გააკეთეს 18 პინიანი ic ერთად ყველა ამონაწერი იმავე მხარეს… რვავე შედეგის დაკავშირება ასე ადვილი იქნებოდა. მაგრამ მაშინ ის არ გაიყიდება 30 ცენტზე ნაკლებ ფასად.

ნაბიჯი 3: მონტაჟის სენსორები

მთის სენსორები
მთის სენსორები
მთის სენსორები
მთის სენსორები
მთის სენსორები
მთის სენსორები
მთის სენსორები
მთის სენსორები

მიამაგრეთ ხმის სენსორები ყავის სახურავზე. მამრობითი ჯეკი უნდა იყოს მოხრილი შიგნით თითოეულ სენსორზე. ეს უკეთესად იმუშავებს თუ ერთ პინზე ერთდროულად მოხრით. მე გამოვიყენე 2 გვერდიანი ქაფის ფირზე მხოლოდ ვიბრაცია ნაკლებია. ჩემი სენსორები ძალიან ახლოსაა და მათ სჭირდებათ 1/4 ინჩიანი სივრცე, რათა უკეთესად შეესაბამებოდეს PCB- ს. მე გამოვიყენე ხმოვანი სენსორები ადრე და ზოგჯერ ერთი ვერ ზომავს ზუსტად და თქვენ უნდა გახსოვდეთ ეს. ასე რომ სამუდამოდ ნუ შეაერთებთ მათ.

ის ასევე გეხმარებათ თითოეულ მათგანზე სწრაფი მანძილის ტესტის ჩატარებაში მათ გამოყენებამდე. მე მივიღებ დაახლოებით ერთ სენსორს ცუდი კითხვით 20 სერიაში. არ არის ცუდი იმ ფასისთვის, რაც მე გადავიხადე.

ნაბიჯი 4: HARD WIRE

HARD WIRE
HARD WIRE

ვიფიქრე, რომ ადგილი ექნებოდა ჯეკებსა და შტეფსელს კომპიუტერიდან კომპიუტერამდე

ხმოვანი ქინძისთავები, მაგრამ ოთახიდან გავვარდი. ასე რომ, მე მყარად დავუკავშირე pcb ბოლო და უბრალოდ გავაკეთე ექო და გამშვები მავთულები ქალი ჯეკებით (8eaa). მე შევაერთე სენსორების 8ea Vcc და 8ea საფუძველი, ასე რომ, მათ მხოლოდ 2 კავშირი დაუკავშირეს PCB– სთან.

8 სენსორით და 8 595 წმ-ით uno ან პრო-მინი ვერ ახერხებს ამას. ამ პროექტის ფარგლებში უნდა იყოს 5 ვ რეგულირებული წყარო. ჩემს რობოტს აქვს მარტივი 7805 @ 1amp ბატარეებიდან. ეს უკავშირდება ყველა 5v Vcc ყველა მოწყობილობას. 7805 ვარდება დაახლოებით ვოლტზე, ასე რომ თქვენ გჭირდებათ მინიმუმ 6.5 ვოლტი მის შესანახად. ეს არის 2 ლითიუმის ბატარეა 3.3 ვ -ზე. ჩემს რობოტს აქვს ძველი ნიკადები მეორადი საბურღი პაკეტებიდან და 8 ნიკადი აწარმოებს ჩინურ ტიპიურ 12 ვ ძრავას 20 დოლარად სატანკო ტიპის შასიში.

ნაბიჯი 5: ჩამოტვირთეთ SONIC SKETCH

ჩამოტვირთეთ SONIC SKETCH
ჩამოტვირთეთ SONIC SKETCH

ჩამოტვირთეთ ესკიზი და დააინსტალირეთ. საუბრის მრავალი გზა არსებობს

სხვა uno მაგრამ მე მომწონს I2c. დაბნეულობა არის მიმართვა და ბატონი/ მონა. როგორც სენსორების უმრავლესობისას (მეორე მინი სენსორად მოიაზრეთ) თქვენ მიმართავთ სენსორს და ითხოვთ x რაოდენობის ბაიტს. იგივე აქ მე -2 მინიში თქვენ გამოყოფთ x რაოდენობის ბაიტს, რომლის გაგზავნაც გსურთ. დაბნეულობა ისაა, რომ სახელებს არ აქვს მნიშვნელობა. ის გეხმარებათ დაიმახსოვროთ მხოლოდ სახელების გაზიარების შემთხვევაში. ასე რომ, ესკიზში მე ვაგზავნი 8 ხმოვან მანძილს სმ – ში, როგორც sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. სამაგისტრო იღებს მხოლოდ 8 ბაიტს მონაცემების შემთხვევაში და თქვენ შეგიძლიათ დაარქვათ იმ ბაიტებს რასაც გსურთ. მე წავიკითხე ისინი როგორც gotR1, gotR2, got….. ბაიტების გაგზავნილი ბრძანება იგივეა. ასე რომ, ბაიტი A, B, C….. არ იფიქროთ, რომ სახელის შეცვლით მოგცემთ სხვადასხვა მონაცემებს. და მეორე დაჭერა, თქვენ შეგიძლიათ მიიღოთ მხოლოდ მონაცემები, რომლებიც ნათქვამია, რომ გაიგზავნება. ასე რომ, თუ გსურთ სხვა მონაცემები, თქვენ უნდა შეცვალოთ ორივე ბატონი და მონა.

ნაბიჯი 6: კომუნიკაცია

ᲙᲝᲛᲣᲜᲘᲙᲐᲪᲘᲐ
ᲙᲝᲛᲣᲜᲘᲙᲐᲪᲘᲐ

თქვენ შეგიძლიათ გამოტოვოთ ეს, თუ იცით როგორ დააინსტალიროთ 2 Uno ერთმანეთთან სასაუბროდ. დასასრულს მაქვს მცირე ინფორმაცია. გასაადვილებლად მე მოვუწოდებ uno რობოტის ბაზაზე M1 და ხმოვან სენსორს S2. შეაერთეთ Vcc, ადგილზე, A4, A5 ერთმანეთთან.

S2– ის ესკიზში ის იწყება #მოიცავს

შემდეგ შექმენით 8 ბაიტი გასაგზავნად. ბაიტი R1, ბაიტი R2, ბაიტი L1 და ა.შ. Uno არის 8 ბიტიანი მიკრო, ამიტომ ისინი აგზავნიან 1 ბაიტს ერთდროულად 'ბაიტის' ნაცვლად 'int' არის სწორი.

'Setup ()' დაამატეთ 'Wire.begin (მისამართი)' ეს I2c- ს ეუბნება რომელი მოწყობილობაა ეს. მისამართი ჩვეულებრივ არის ნებისმიერი ნომერი, რომელიც მოგწონთ 4 - 200 – მდე. ერთი ბაიტის ზომა. აქ მე გამოვიყენე ნომერი 10. ასე რომ, ამ სენსორ S2– ს დასალაპარაკებლად ოსტატმა უნდა დარეკოს Wire– დან. მოითხოვეთ (10, 8). ეს არის მისამართი 10 და 8 არის რამდენი ბაიტი უნდა. ასევე "setup ()" - ში დაამატეთ Wire.onRequest (isr anyName). როდესაც M1 ითხოვს მოთხოვნას, S2 სენსორი რეაგირებს შეფერხებასთან. ეს უბრალოდ უწოდებს ფუნქციას anyName. ასე რომ ეს anyName ფუნქცია უნდა შეიქმნას. შეხედეთ ესკიზს და იხილეთ ფუნქცია 'sendThis ()' სწორედ აქ ხდება ბაიტების რეალურად გაგზავნა M1– ში. მხოლოდ ბაიტი მიდის და არა სახელები და გაგზავნილი თანმიმდევრობით. აქედან იწყება გაგზავნის მონაცემების ზომა და რაოდენობა. ბაიტების ამ მარტივ ფორმატში გაგზავნა და მიღება უნდა ემთხვეოდეს. აქ 8 ბაიტი გაიგზავნა და 8 ბაიტი მიიღო. ერთი შენიშვნა აქ არის ფუნქციის გამოძახება მოითხოვს (). ისევე როგორც დაგვიანებით (), millis (), Serial.print (). ISR (სერვისის შეწყვეტის რუტინის) გამოყენებისას ფუნქციის გამოძახება იკლებს (). ასე რომ Wire.onRequest (sendThis) არა Wire.onRequest (sendThis ()).

ის დაბნეულობა, რაც მე მქონდა, იყო ბატონის/მონის საქმე. თავიდან მეგონა, რომ ოსტატი ყოველთვის ოსტატი იყო. მაგრამ ესკიზის ფარგლებში თქვენ შეგიძლიათ შეცვალოთ სამაგისტრო/მონა სხვა მიკროსგან მოთხოვნის ან გაგზავნის სხვა მიკროში. სანამ დაიცავთ ზემოთ მოცემულ ძირითად ფორმატს. დაიმახსოვრეთ … თქვენ მხოლოდ იზიარებთ მინიჭებულ მონაცემებს.

ორი off კედლის tid ბიტი. ისრის შეწყვეტა მხოლოდ წყვეტს ესკიზის ხაზებს შორის. თუ თქვენ ხართ ჩაკეტილი მარყუჟში 'while or for', არაფერი მოხდება სანამ მარყუჟი არ გამოდის. დიდი საქმე არ არის, რადგან ეს შეიძლება იყოს რამდენიმე მიკროწამი და მონაცემები ძველია.

სხვა პრობლემა ის არის, რომ მიკროში არის 100% შეცდომების გარეშე გაანგარიშება. ნებისმიერი "გარე" (მავთულის) კომუნიკაცია ექვემდებარება შეცდომებს. მრავალი გზა არსებობს იმის შესამოწმებლად, რომ მოწოდებული მონაცემები შეცდომების გარეშეა და ემთხვევა წყაროს. უმარტივესი გზაა შემოწმების ჯამით. უბრალოდ დაამატეთ გაგზავნის ბაიტების ჯამები (ფაქტობრივი მნიშვნელობები) და გამოაგზავნეთ ჯამები და მიმღების ბოლოს დაამატეთ ჯამები და ნახეთ ემთხვევა თუ არა ისინი. თუ ისინი ემთხვევა კარგს ან გადაყრის მონაცემებს, თუ არა. რა თქმა უნდა, ეს გულისხმობს მთელი მნიშვნელობის გაგზავნას და არა ბაიტს. ასე რომ თქვენ უბრალოდ გაყავით მთელი რიცხვი HI ბაიტად და LO ბაიტად და გაგზავნეთ ცალკე ბაიტებად. შემდეგ დააინსტალირეთ მიმღები.

ᲛᲐᲠᲢᲘᲕᲘ:

int x = 5696; (ნებისმიერი მოქმედი int მნიშვნელობა, მაქსიმალური არის 65k ან 32k უარყოფითი)

ბაიტი hi = x >> 8; (22)

ბაიტი lo = x; (64)

გამოაგზავნეთ ბაიტი და შეაერთეთ მეორე ბოლოს….

ბაიტი hi = Wire.read ();

ბაიტი lo = Wire.read ();

int newx = (hi << 8) + ლო; (5696)

ნაბიჯი 7: დახურვა

დახურვა
დახურვა
დახურვა
დახურვა
დახურვა
დახურვა
დახურვა
დახურვა

დახურვის მიზნით, ეს ხმოვანი სენსორი აძლევს დედა დაფის ნედლეულის მონაცემებს რეალურ დროში. ეს ათავისუფლებს მიკრო და ესკიზს გაცილებით ართულებს. მიკროსკოპს შეუძლია მიიღოს კარგი გადაწყვეტილება, შეანელოს, შეაბრუნოს, შეაჩეროს ან დააბრუნოს კარგი მონაცემების საფუძველზე, შემთხვევითი გამოცნებების ნაცვლად. იხილეთ ჩემი სხვა პოსტი bluetooth IDE– ს შესახებ, რათა ატვირთოთ ესკიზები მავთულხლართებისა და თქვენი რობოტის მუდმივი დაკავშირების მიზნით, ესკიზის სწრაფი ცვლილებისთვის. მადლობა ამის ნახვისთვის. ძველი

გირჩევთ: