Բովանդակություն:

SONIC LED Հետադարձ: 7 քայլ (նկարներով)
SONIC LED Հետադարձ: 7 քայլ (նկարներով)

Video: SONIC LED Հետադարձ: 7 քայլ (նկարներով)

Video: SONIC LED Հետադարձ: 7 քայլ (նկարներով)
Video: Hey, Guess Where is Me · Rocket League Live Stream, Սերիա 64 · 1440p 60FPS 2024, Հուլիսի
Anonim
SONIC LED Հետադարձ կապ
SONIC LED Հետադարձ կապ
SONIC LED Հետադարձ կապ
SONIC LED Հետադարձ կապ
SONIC LED Հետադարձ կապ
SONIC LED Հետադարձ կապ

Կրկին բարեւ, Ատո՞ւմ եք, որ ձեր ռոբոտը բախվում է ամեն ինչի: Սա կլուծի այդ խնդիրը: 8 ձայնային տվիչներով սա բարդ է թվում … բայց իրականում ես դա շատ հեշտ դարձրեցի: Ես փորձում եմ տեղադրել նախագծեր, որոնք կօգնեն ձեզ սովորել Arduino- ի մասին և ցույց տալ «տուփից դուրս» հասկացությունը: Այս գրառումը կօգնի ձեզ հասկանալ 595 փոխարկումը, pro-minis- ը ՝ որպես ծրագրավորվող սենսոր և իրական ժամանակի հետադարձ կապի մեծ օգտագործումը: Եթե Arduino- ն Ձեզ դուր է գալիս որպես «պատճենեք և տեղադրեք և միացրեք», կարող եք պարզապես բաց թողնել սա:

Ես սիրում եմ օգտագործել pro-minis: Նրանք մոտ $ 2.50 են, աշխատում են որպես ամբողջովին փչված, իսկ վերնագրերի տեղադրումը դրանք դարձնում է շատ ճկուն: Օգտագործվում է որպես սենսորային միկրո, կարող եք նրան «անել այն, ինչ ցանկանում եք», այլ ոչ թե այն, ինչ թելադրում է գնված սենսորը: I2C- ի միջոցով, օգտագործելով ընդամենը 2 լար, դրանք կարող են կապված լինել մեկ գծի վրա: Այսպիսով, անցեք MEGA- ի վրայով, կարող եմ ունենալ 4 միկրոավտոբուս, որոնք աշխատում են կոդի 4 առանձին տողերով `միևնույն ժամանակ, ընդամենը $ 10.00: Այստեղ ես օգտագործում եմ մինի ՝ ձայնային տվիչները 595 -ով բացելու և իրական ժամանակում առաջնորդվող հեռավորությունը ցուցադրելու համար: Այնուհետև պարզապես կիսեք 8 բիթ տվյալները մայր տախտակին: Սա հանում է բեռը մայր տախտակից և շատ պարզ է դարձնում նրա ծածկագիրը:

Ձայնային տվիչների խնդիր կա… տեսողական հետադարձ կապ չկա: Դուք երբեք չգիտեք ՝ սենսորը պարզապես մեռած քաշ է, թե՞ աշխատում է: Կարծում եմ, ով երբևէ «BLINK» - ով է հանդես եկել, ավելի խելացի է, քան Էյնշտայնը: ՄԻԱՅՆ առաջնորդեց և մի ամբողջ տեղեկատվություն փոխանցվում է թարթելով: Այսպիսով, ձայնային տվիչին անհրաժեշտ է հետադարձ կապ: Այստեղ ես օգտագործեցի մի շարք լուսարձակներ `յուրաքանչյուր սենսորին վերահսկելու համար: Դրանք ձեզ պետք չեն, պարզապես տվիչներն առանց լուսարձակների պատրաստեք: Բայց PCB- ի վրա լուսարձակներ ունենալը օգտակար է:

Քայլ 1. Կատարեք PCB

ԿԱՏԱՐԵԼ PCB
ԿԱՏԱՐԵԼ PCB
ԿԱՏԱՐԵԼ PCB
ԿԱՏԱՐԵԼ PCB
ԿԱՏԱՐԵԼ PCB
ԿԱՏԱՐԵԼ PCB
ԿԱՏԱՐԵԼ PCB
ԿԱՏԱՐԵԼ PCB

պատրաստել PCB և բնակեցնել: Ո CAՇԱԴՐՈԹՅՈ …Ն … Ես սխալ թույլ տվեցի PCB- ի վրա 4 փին միացումներում, որպեսզի ձայնային տվիչները միացվեն: ECHO- ն և TRIGGER Vcc- ը և հիմքերը պատրաստվում էին միանալ համակարգչին: Միակցիչների համար բավականաչափ տեղ չկա, այնպես որ ես պարզապես PCB- ն պատրաստել եմ քորոցներով: Այսպիսով, դուք կարող եք մետաղալարեր միացնել PCB- ին և միացնել իրական ձայնային տվիչներին: Ինչ վերաբերում է լուսարձակին, ես ներսի եզրին դրեցի դեղին, իսկ դրսից `կարմիր: սա օգնում է ձեզ տեսնել հեռավորության վրա, եթե տվիչները ճիշտ են չափում:

Սա իմ կողմից երբևէ պատրաստած FEW 2side հատ համակարգիչներից մեկն է: Ես նախընտրում եմ 2 եա մեկ կողքով պատրաստել և թռիչք վարել: Բայց լուսադիոդային էկրանը ձեռք բերելու համար անհրաժեշտ է առնվազն վերին հատ հատ: Ներբեռնման մեջ ես առանձնացրեցի դասավորությունը:

PCB- ն կողմնակի մինի համար է ՝ A4-A5 եզրային վերնագրի ներսում: Ամեն դեպքում, պարզապես միացրեք A4-A5- ը Master A4-A5- ին: Մի մոռացեք նաև Vcc- ի և Grounds- ի մասին:

Քայլ 2: ՇԱՏ ՍԽԱԼՆԵՐ

ՇԱՏ ՍԽԱԼՆԵՐ
ՇԱՏ ՍԽԱԼՆԵՐ

Հիմա իմ սխալների համար … Ես փորձեցի միանգամից թրթռալ Triggers- ը (բոլորը կապված են միասին) և այս տեսակը լավ աշխատեց, բայց որոշ փոխազդեցություններ տեղի ունեցան: Այսպիսով, այժմ բոլոր ECHOS- ը անցնում են միկրո (8), իսկ TRIGGERS- ը սահմանվում է 595 -ով: Եվս երեք կապում (3): Ինչ վերաբերում է led- երին, ապա մուլտիպլեքսավորումը չի աշխատի: Յուրաքանչյուր led- ի համար ձեզ անհրաժեշտ է լրիվ միացված ժամանակ: Սա նշանակում է, որ յուրաքանչյուր 7 տողից յուրաքանչյուր տող պետք է ունենա իր 595 -ը: 595 -ը թարմացնելուց հետո լուսարձակները մնում են լուսավորված մինչև հաջորդ թարմացումը: Որտեղ led- ի բազմապատկումը միայն լույսեր է տալիս այդ վայրկյանի տասներորդը: Սա լավ է աշխատում իմ ընթերցողների համար և դրա համար անհրաժեշտ է միկրո: Sonամանակ չկա 8 ձայնային տվիչների սկանավորման և հեռավորությունների չափման համար: Փորձեցի և ստացա շատ վատ արդյունքներ: LED- ների բազմապատկումը կնշանակի նաև տող + սյունակի ցանց, իսկ դա նշանակում է PCB- ում 64+ հոսք:

Ես օգտագործել եմ 595 -ից ընդամենը 7 ելք PCB- ի խառնաշփոթի պատճառով: Հեռավորության վրա դուք չեք կարող ասել, արդյոք կա 7 կամ 8 լուսադիոդ միայն նրանց շարժման մեջ: Դուք կարող եք գայթակղվել կապել բոլոր լուսարձակները մեկ ռեզիստորի հետ, և դա աշխատում է, բայց զանգվածի պայծառությունը փոխվում է թույլ լուսարձակների քանակի հետ: Այսպիսով, մեկ LED- ի դիմաց մեկ դիմադրություն լավագույնն է: Ես պարզապես սիրում եմ 595-ը, բայց եթե նրանք պարզապես տեղափոխեն Vcc և 0-out կապում կամ կատարեն 18 փին ic միևնույն կողմի ԲՈԼՈՐ ելքներով … բոլոր ութ ելքերը միացնելն այնքան հեշտ կլիներ: Բայց հետո այն չէր վաճառվի 30 ցենտից պակաս:

Քայլ 3. ԼԵՌՆԱՅԻՆ ՍՆԵՍՈՐՆԵՐ

ԼԵՌՆԱՅԻՆ Սենսորներ
ԼԵՌՆԱՅԻՆ Սենսորներ
ԼԵՌՆԱՅԻՆ Սենսորներ
ԼԵՌՆԱՅԻՆ Սենսորներ
ԼԵՌՆԱՅԻՆ Սենսորներ
ԼԵՌՆԱՅԻՆ Սենսորներ
ԼԵՌՆԱՅԻՆ Սենսորներ
ԼԵՌՆԱՅԻՆ Սենսորներ

Սուրճի կափարիչին կպցրեք ձայնային տվիչներ: արական խցիկը պետք է թեքվի դեպի ներս յուրաքանչյուր սենսորի վրա: Սա ավելի լավ է աշխատում, եթե միաժամանակ թեքում եք մեկ կապում: Ես օգտագործեցի 2 կողային փրփուր ժապավեն, որպեսզի թրթռումն ավելի քիչ լինի: Իմ տվիչները չափազանց մոտ են, և նրանց անհրաժեշտ է 1/4 դյույմ տարածություն ՝ PCB- ին ավելի լավ համընկնելու համար: Ես նախկինում օգտագործել եմ ձայնային տվիչներ, և երբեմն մեկը չի կարողանում ճշգրիտ չափել, և դա պետք է նկատի ունենալ: Այնպես որ, դրանք մի՛ կպցրեք մշտապես:

Այն նաև օգնում է յուրաքանչյուրի վրա արագ հեռավորության թեստ անցկացնել դրանք օգտագործելուց առաջ: Ես ստանում եմ մոտ մեկ սենսոր ՝ 20 -րդ խմբաքանակի վատ ընթերցմամբ: Վատ չէ իմ վճարած գնի համար:

Քայլ 4: HARD WIRE

Hանր մետաղալար
Hանր մետաղալար

Մտածեցի, որ համակարգչից մինչև վարդակներ տեղ կլինի

ձայնային քորոցներ, բայց ես դուրս եկա սենյակից: Այսպիսով, ես միացրի pcb- ի ծայրը և պարզապես արձագանք և ձգան լարեր արեցի կանացի խցիկներով (8eaa): Ես միացրեցի սենսորների 8ea Vcc և 8ea հիմքերը, այնպես որ դա նրանց համար ընդամենը 2 միացում արեց PCB- ին:

8 սենսորով և 8 595-ով uno կամ pro-mini- ը չի կարող դա միացնել: Այս նախագծի շրջանակներում պետք է լինի 5 վ կարգավորվող աղբյուր: Իմ ռոբոտը մարտկոցներից ունի պարզ 7805 @ 1amp: Սա կապված է բոլոր 5v Vcc- ի հետ բոլոր սարքերի համար: 7805 -ը ընկնում է մոտ վոլտ, այնպես որ այն սնուցելու համար անհրաժեշտ է առնվազն 6,5 վոլտ: Դա 2 լիթիումի մարտկոց է 3.3 վ լարման դեպքում: Իմ ռոբոտը հին նիկադներ ունի օգտագործված փորվածքների տուփերից և 8 նիկադ աշխատում է տիպիկ չինական 12 վ շարժիչով շարժիչով ՝ 20 դոլար տանկի շասսիով:

Քայլ 5: Ներբեռնեք SONIC SKETCH

Ներբեռնեք SONIC SKETCH
Ներբեռնեք SONIC SKETCH

Ներբեռնեք ուրվագիծը և տեղադրեք: Խոսելու շատ եղանակներ կան

մեկ այլ uno, բայց ես սիրում եմ I2c- ն: շփոթությունը հասցեագրումն է և տիրոջը/ ստրուկին: Ինչպես սենսորների մեծ մասի դեպքում (2 -րդ մինի համարեք որպես սենսոր), դուք դիմում եք սենսորին և խնդրում x քանակությամբ բայթ: նույն բանը այստեղ: Երկրորդ մինիում դուք մի կողմ եք դնում x քանակությամբ բայթ, որը ցանկանում եք ուղարկել: Խառնաշփոթն այն է, որ անունները նշանակություն չունեն: Դա կօգնի ձեզ հիշել, եթե կիսեք անունները: Այսպիսով, ուրվագծում ես ուղարկում եմ ձայնային հեռավորության 8 չափումները սմ -ով ՝ որպես sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4: Տվյալների դեպքում վարպետը պարզապես ստանում է 8 բայթ, և դուք կարող եք այդ բայթերը անվանել այն, ինչ ցանկանում եք: Ես դրանք կարդացի որպես gotR1, gotR2, got….. Բայթերի ուղարկված կարգը նույնն է: Այսպիսով, բայթ A, B, C….. մի կարծեք, որ անունը փոխելով ձեզ կտան տարբեր տվյալներ: Եվ մյուս բռնելը, դուք կարող եք ստանալ միայն այն տվյալները, որոնք ասվում է, որ ուղարկվեն: Այսպիսով, եթե ցանկանում եք այլ տվյալներ, դուք պետք է փոխեք և՛ տիրոջ, և՛ ստրուկի:

Քայլ 6: ԿԱՊ

ՀԱMMՈՈԹՅՈՆ
ՀԱMMՈՈԹՅՈՆ

Կարող եք բաց թողնել սա, եթե գիտեք, թե ինչպես ստեղծել 2 Uno ՝ միմյանց հետ խոսելու համար: Վերջում ես ունեմ որոշ մանրուքներ: Դյուրին դարձնելու համար ես կանվանեմ M1 ռոբոտի բազայի uno- ն և ձայնային տվիչը `S2: Միացրեք Vcc, հիմք, A4, A5 միմյանց:

S2- ի ուրվագծում այն սկսվում է #ներառել

Այնուհետեւ ստեղծեք ուղարկելու համար 8 բայթ: բայթ R1, բայթ R2, բայթ L1 և այլն: Uno- ն 8 բիթանոց միկրո է, այնպես որ նրանք ուղարկում են 1 բայթ միաժամանակ ՝ օգտագործելով «բայթ» ՝ փոխարենը «ինտ» -ի փոխարեն:

'Setup ()' ավելացնել 'Wire.begin (հասցե)' սա I2c- ին ասում է, թե սա ինչ սարք է: Հասցեն սովորաբար ցանկացած թիվ է, որը Ձեզ դուր է գալիս 4 - 200 -ի սահմաններում: մեկ բայտի չափ: Այստեղ ես օգտագործել եմ 10. թիվը: Այսպիսով, այս S2 սենսորի հետ խոսելու համար վարպետը պետք է զանգի Wire.request- ից (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 ()):

Այն խառնաշփոթը, որ ես ունեի, տիրոջ/ստրուկի բանն էր: Սկզբում ես կարծում էի, որ վարպետը ԲՈԼՈՐ վարպետն է: Բայց ուրվագծի շրջանակում կարող եք փոխել վարպետը/ստրուկը `պահանջելու այլ միկրոներից կամ ուղարկելու այլ միկրոների: Քանի դեռ հետևել եք վերը նշված հիմնական ձևաչափին: Հիշեք… Դուք կիսում եք ՄԻԱՅՆ նշանակված տվյալները:

Երկու հատ պատից կոկիկ կտորներ: The isr ընդհատումը ընդհատում է միայն ուրվագծային գծերի միջև: Եթե դուք փակված եք «while կամ for» օղակի մեջ, ապա ոչինչ չի պատահի, մինչև օղակը դուրս չգա: Ոչ մի մեծ գործարք, քանի որ դա կարող է լինել մի քանի միկրովայրկյան, և տվյալները հին են:

Մյուս խնդիրն այն է, որ «միկրո» ներսում կա 100% սխալ սխալ հաշվարկ: 'Անկացած «դրսի» (լարերի) հաղորդակցություն ենթակա է սխալների: Կան բազմաթիվ եղանակներ ՝ ստուգելու, որ առաքված տվյալները սխալ են և համընկնում են աղբյուրի հետ: Ամենահեշտ ձևը ստուգիչ գումարն է: Պարզապես ավելացրեք ուղարկվող բայթերի (իրական արժեքների) ընդհանուր գումարները և ուղարկեք ընդհանուրները, իսկ ստացողի վերջում ավելացրեք տոտալները և տեսեք, թե արդյոք դրանք համընկնում են: Եթե դրանք համընկնում են լավ կամ նետում են այդ տվյալների հավաքածուն, եթե դրանք չեն համապատասխանում: Իհարկե, սա ներառում է ամբողջ արժեք ուղարկելը և ոչ թե բայթ: Այսպիսով, դուք պարզապես ամբողջ թիվը բաժանում եք HI բայտի և LO բայտի և ուղարկում որպես առանձին բայթ: Հետո միացրեք ընդունիչի մոտ:

ՀԵY:

int x = 5696; (ցանկացած վավեր int արժեք, առավելագույնը `65k կամ 32k բացասական)

բայթ hi = x >> 8; (22)

բայթ lo = x; (64)

ուղարկեք բայթերը և միավորեք մյուս ծայրում…

բայթ hi = Wire.read ();

բայթ lo = Wire.read ();

int newx = (hi << 8) + lo; (5696)

Քայլ 7: ՓԱԿՈՄ

ՓԱԿՈՄ
ՓԱԿՈՄ
ՓԱԿՈՄ
ՓԱԿՈՄ
ՓԱԿՈՄ
ՓԱԿՈՄ
ՓԱԿՈՄ
ՓԱԿՈՄ

Փակելու համար այս ձայնային տվիչը իրական ժամանակում մայր տախտակին տալիս է հեռավորության չմշակված տվյալներ: Սա ազատում է միկրոտն ու էսքիզը շատ ավելի բարդ է դարձնում: Միկրոն այժմ կարող է լավ որոշում կայացնել ՝ դանդաղեցնելու, շրջվելու, կանգնելու կամ հետ շրջելու համար ՝ հիմնվելով լավ տվյալների վրա ՝ պատահական գուշակությունների փոխարեն: Դիտեք bluetooth IDE- ի մասին իմ մյուս գրառումը ՝ առանց լարերի էսքիզներ վերբեռնելու և ձեր ռոբոտին անընդհատ միացնելու անհրաժեշտության ՝ ձեր ուրվագծի արագ փոփոխության համար: Շնորհակալություն սա դիտելու համար: oldmaninsc.

Խորհուրդ ենք տալիս: