Мазмуну:

SONIC LED КАЙРА ПИКИРЛЕРИ: 7 кадам (Сүрөттөр менен)
SONIC LED КАЙРА ПИКИРЛЕРИ: 7 кадам (Сүрөттөр менен)

Video: SONIC LED КАЙРА ПИКИРЛЕРИ: 7 кадам (Сүрөттөр менен)

Video: SONIC LED КАЙРА ПИКИРЛЕРИ: 7 кадам (Сүрөттөр менен)
Video: ЭМНЕ ҮЧҮН МЕН L4D3тү күтүп жатам 2024, Июль
Anonim
SONIC LED КАРАПАЙЫР
SONIC LED КАРАПАЙЫР
SONIC LED КАРАПАЙЫР
SONIC LED КАРАПАЙЫР
SONIC LED КАРАПАЙЫР
SONIC LED КАРАПАЙЫР

Дагы салам, Сиздин роботтун баарына кирип кетишин жек көрөсүзбү? Бул ошол көйгөйдү чечет. 8 sonic сенсорлору менен бул татаал көрүнөт … бирок чынында мен муну абдан оңой кылдым. Мен сизге Arduino жөнүндө билүүгө жана "кутунун сыртында" түшүнүгүн көрсөтүүгө жардам берген долбоорлорду жайгаштырууга аракет кылам. Бул билдирүү 595 коммутациясын, про-министи программалоочу сенсор катары түшүнүүгө жана реалдуу убакытта кайтарым байланышты колдонууга жардам берет. Эгерде сиз Ардуинону "көчүрүү жана чаптоо" катары жактырсаңыз, муну өткөрүп жиберишиңиз мүмкүн.

Мен про-министи колдонгонду жакшы көрөм. Алар болжол менен $ 2.50, толук кандуу иштешет жана баштарды орнотуу аларды абдан ийкемдүү кылат. Сенсор микро катары колдонулганда, сиз сатып алган сенсор эмнени кааласа, ошону кыла аласыз. I2C менен 2 зымды гана колдонуп, аларды бир линияга бириктирсе болот. Ошентип, MEGAнын үстүнө өтүңүз, менде 4 мини 4 коддун бир эле линиясын иштете алат, болгону $ 10.00. Бул жерде мен 595 аркылуу sonic сенсорлорун ачып, реалдуу убакытта LED аралыкты көрсөтүү үчүн мини колдоном. Андан кийин 8 бит маалыматты ана тактасы менен бөлүшүңүз. Бул жүктү эне тактасынан түшүрөт жана анын кодун абдан жөнөкөй кылат.

Sonic сенсорлорунда көйгөй бар … визуалдык пикир жок. Сиз сенсор жөн эле өлүк салмакпы же иштеп жаткандыгын билбейсиз! Мен эч качан "BLINK" ойлоп тапкан адам Эйнстинден акылдуу деп эсептейм. Жөн гана БИР жетектеп, маалымат дүйнөсү көз ирмемде жаңырат. Ошентип, sonic сенсор реалдуу убакытта пикирге муктаж. Бул жерде мен ар бир сенсорду көзөмөлдөө үчүн бир катар леддерди колдондум. Алардын кереги жок, сенсорлорду ледсиз жасаңыз. Бирок PCBде леддердин болушу пайдалуу.

1 -кадам: ПХБ жасаңыз

ПХБ жасоо
ПХБ жасоо
ПХБ жасоо
ПХБ жасоо
ПХБ жасоо
ПХБ жасоо
ПХБ жасоо
ПХБ жасоо

ПХБ жасаңыз жана толтуруңуз. ЭСКЕРТҮҮ … Мен sonic сенсорлорун туташтыруу үчүн 4 пин туташууларында ПКБда ката кетирдим. ECHO жана TRIGGER Vcc жана негиздер pcbге туташа турган болду. Коннекторлор үчүн орун жетишсиз, ошондуктан мен ПКБны пин-чыкмалар менен жасадым. Ошентип, сиз ПХБга зым туташтыргычты кошуп, чыныгы sonic сенсорлоруна туташтыра аласыз. Леддерге келсек, мен ички четтерине сары леддерди, сыртынан кызыл түстөрдү койгом. бул сенсорлор туура өлчөп жаткандыгын алыстан көрүүгө жардам берет.

Бул мен жасаган FEW 2side PCBлеринин бири. Мен тескерисинче, 2 тарапты жалгыз жасап, секирип чуркайм. Бирок дисплейди алуу үчүн сизге эң аз дегенде PCB керек. Жүктөөдө макетти бөлдүм.

ПХБ четки баштын ичинде A4-A5 менен про-мини үчүн. Кандай болбосун, A4-A5ти Master A4-A5ке туташтырыңыз. Vcc жана Grounds жөнүндө унутпаңыз.

2 -кадам: КӨП КАТАЛАР

КӨП КАТАЛАР
КӨП КАТАЛАР

Эми менин каталарым үчүн … Мен Триггерлерди дароо чыгарууга аракет кылдым (бардыгы бири -бирине байланган) жана бул жакшы иштеди, бирок кээ бир өз ара аракеттенүүлөр орун алды. Ошентип, азыр бардык ECHOS микроге (8) барат жана TRIGGERS 595 тарабынан орнотулат. Дагы үч казык (3). Леддерге келсек, мультиплексирлөө иштебейт. Ар бир жетектөөчүгө толук ON убактысы керек. Бул 7 леддин ар бир катарынын өзүнүн 595 болушу керек дегенди билдирет. 595ти жаңырткандан кийин, ледтер кийинки жаңыртууга чейин күйүп турат. Кайсы жерде мультиплексирлөө жарыктын секундасынын ондон бир бөлүгүнө гана жетет. Бул менин окурмандарымда жакшы иштейт жана ага атайын микро керек. 8 sonic сенсорун сканерлөөгө жана аралыкты өлчөөгө убакыт жок. Мен аракет кылдым жана абдан начар жыйынтыктарды алдым. Ледтерди мультиплексирлөө катар + тилкенин торчосун билдирет жана бул ПКБда 64+ тегерегинде өткөрүүнү билдирет.

Мен ПХБдагы башаламандыктан улам 595тин 7 гана чыгарылышын колдондум. Алыста 7 же 8 лед гана бар экенин айырмалай албайсыз. Бардык леддерди бир резисторго байлап коюу азгырылышы мүмкүн жана бул иштейт, бирок массивдин жарыктыгы литтердин көлөмүнө жараша өзгөрөт. Ошентип, бир LEDга бир резистор эң жакшы. Мен жөн гана 595ти жакшы көрөм, бирок эгер алар Vcc жана 0-чыккычтарын жылдырышса же ошол эле жакта БАРДЫК чыгуулары бар 18 пин ic жасашса … бардык сегиз чыгууну туташтыруу оңой болмок. Бирок анда 30 центке чейин сатылбайт.

3 -кадам: СЕНСОРЛОРДУ ТҮШҮРҮҮ

СЕНСОРЛОРДУ ТҮШҮРҮҮ
СЕНСОРЛОРДУ ТҮШҮРҮҮ
СЕНСОРЛОРДУ ТҮШҮРҮҮ
СЕНСОРЛОРДУ ТҮШҮРҮҮ
СЕНСОРЛОРДУ ТҮШҮРҮҮ
СЕНСОРЛОРДУ ТҮШҮРҮҮ
СЕНСОРЛОРДУ ТҮШҮРҮҮ
СЕНСОРЛОРДУ ТҮШҮРҮҮ

Кофенин капкагына sonic сенсорлорун чаптаңыз. эркек джек ар бир сенсорго ичине ийилген болушу керек. Бул бир убакта бир төөнөгүчтү бүгсөңүз жакшы иштейт. Мен титирөө азыраак болгондуктан, мен 2 капталдуу көбүк лента колдондум. Менин сенсорлорум өтө жакын жана алар ПХБга жакшыраак дал келиши үчүн 1/4 дюймдук мейкиндикке муктаж. Мен буга чейин үн сенсорлорун колдонгон элем, кээде так өлчөй албай калат жана муну эстен чыгарбоо керек. Андыктан алардын бардыгын биротоло жабыштырбаңыз.

Ошондой эле, аларды колдонуудан мурун, ар биринде тез аралыктан тест жүргүзүүгө жардам берет. Мен 20 партияда начар окуган бир сенсорго ээ болом. Мен төлөгөн баа үчүн жаман эмес.

4 -кадам: HARD WIRE

HARD WIRE
HARD WIRE

Мен компьютерден компьютерге чейин джекстерге жана сайгычтарга орун болот деп ойлогом

sonic казыктары, бирок мен бөлмөдөн качып кеттим. Ошентип, мен PCBтин аягына катуу зым салып, жаңырык жана триггерди зымдарды аялдардын уячалары менен жасадым (8ea). Мен сенсорлордун 8ea Vcc жана 8ea негиздерин бириктирдим, ошондуктан бул алар үчүн ПХБга 2 гана байланышты түздү.

8 сенсор жана 8 595 менен uno же pro-mini муну кубаттай албайт. Бул долбоордун алкагында 5v жөнгө салынуучу булак болушу керек. Менин роботумда батареялардан жөнөкөй 7805 @ 1amp бар. Бул бардык түзмөктөр үчүн 5V Vcc менен байланыштырат. 7805 бир вольттон төмөндөйт, андыктан аны азыктандыруу үчүн кеминде 6,5 вольт керек. Бул 3.3v боюнча 2 литий батареялары. Менин роботумда эски никаддар колдонулган бургулоо пакеттеринен турат жана 8 никад 20 долларлык танк түрүндөгү шассиде типтүү Кытайдын 12v моторун иштетет.

5 -кадам: SONIC ЭСКИЗИН ЖҮКТӨП АЛУУ

SONIC ЭСКИЗИН ЖҮКТӨП АЛУУ
SONIC ЭСКИЗИН ЖҮКТӨП АЛУУ

Эскизди жүктөп алып, орнотуңуз. Сүйлөшүүнүн көптөгөн жолдору бар

дагы бир уно бирок мага I2c жагат. башаламандык кайрылуу жана кожоюн/ кул. Көпчүлүк сенсорлордой эле (2 -миниди сенсор деп ойлогула) сенсорго кайрылып, x байт суммасын сурайсың. бул жерде бир эле нерсе. 2 -мини -жылы сиз жөнөткүңүз келген x байт суммасын бөлөсүз. Баш аламандык - бул аттардын мааниси жок. Бул ысымдарды бөлүшсөңүз, эстеп калууга жардам берет. Ошентип, эскизде мен 8 sonic расставкаларын см менен жөнөтөм sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Мастер жөн эле 8 байт алат, эгер маалымат жана сиз каалаган нерсеге чала аласыз. Мен аларды gotR1, gotR2, got катары окудум ….. Байттын жөнөтүлгөн тартиби бирдей. Ошентип, байт A, B, C….. атын өзгөртүү сизге ар кандай маалыматтарды берет деп ойлобоңуз. Ал эми башка кармоо, сиз жөнөтүлүшү керек деп айтылган маалыматтарды гана ала аласыз. Демек, эгер сиз башка маалыматтарды кааласаңыз, анда ЭКЕСИ мастер менен кулду алмаштырышыңыз керек.

6 -кадам: БАЙЛАНЫШ

БАЙЛАНЫШ
БАЙЛАНЫШ

Эгер сиз бири -бири менен сүйлөшүү үчүн 2 Uno орнотууну билсеңиз, муну өткөрүп жибере аласыз. Мен аягында кээ бир маалымат бар. Муну оңой кылуу үчүн мен M1 робот базасындагы унону жана S2 катары sonic сенсорун чакырам. Vcc, жер, A4, A5ти бири -бирине туташтырыңыз.

S2 эскизинде #include менен башталат

Андан кийин жөнөтүү үчүн 8 байтты түзүңүз. байт R1, байт R2, байт L1 ж.б. Uno - бул 8 бит микро, ошондуктан алар 1 байтты 'int' ордуна 'байт' колдонуп жөнөтүшөт.

'Орнотууда ()' кошуу 'Wire.begin (дарек)' бул I2c бул кайсы түзмөк экенин айтат. Дарек көбүнчө сиз каалаган 4 - 200. бир байттын өлчөмү. Бул жерде мен 10 санын колдондум. Ошентип S2 сенсору менен сүйлөшүү үчүн мастер Wire.requestFromго чалуусу керек (10, 8). Бул дарек 10 жана 8 канча байт каалады. Ошондой эле 'setup ()' ге Wire.onRequest (isr anyName) кошуңуз. M1 сурамга чалганда S2 сенсору үзгүлтүккө учурайт. Бул жөн эле anyName функциясын чакырат. Ошентип, бул anyName функциясын түзүү керек. Эскизди караңыз жана 'sendThis ()' функциясын караңыз Бул жерде байттар чындыгында M1ге жөнөтүлөт. Байттар жалгыз барат жана аталыштарды жана жөнөтүлгөн тартипте ЭМЕС. Бул жерден жөнөтүлө турган маалыматтын өлчөмү жана көлөмү башталат. Бул байт форматында жөнөтүү жана алуу дал келиши керек. Бул жерде 8 байт жөнөтүлгөн жана 8 байт алынган. Бул жерде бир эскертүү функцияны чакырууда () талап кылынат. Кечиктирүү (), миллис (), Serial.print () сыяктуу. ISR (үзгүлтүккө учуроо кызматы) колдонулганда, функцияны чакыруу () түшөт. Ошентип, Wire.onRequest (sendThis) эмес Wire.onRequest (sendThis ()).

Мендеги башаламандык кожоюн/кулдук нерсе болчу. Башында мен кожоюн ар дайым уста деп ойлочумун. Бирок эскиздин ичинде сиз кожоюн/кулду башка микролордон суроого же башка микролорго жөнөтүүгө алмаштыра аласыз. Сиз жогоруда көрсөтүлгөн негизги форматты карманганыңызда. Эсиңизде болсун … Сиз дайындалган маалыматтарды гана бөлүшөсүз.

Дубалдын экиден учтары. ISR үзгүлтүгү эскиз линияларынын ортосунда гана үзгүлтүккө учурайт. Эгер сиз 'while же for' циклине кулпуланган болсоңуз, цикл чыкмайынча эч нерсе болбойт. ЖОК, анча чоң эмес, анткени бул бир нече микросекунддар болушу мүмкүн жана маалыматтар эски.

Башка көйгөй, "ичинде" 100% катасыз эсептөө бар. Ар кандай "сырттан" (зым) байланыш каталарга дуушар болот. Жеткирилген маалымат катасыз жана булакка дал келерин текшерүүнүн көптөгөн жолдору бар. Эң оңой жолу - контролдук сумма. Жөн гана жөнөтүүчү байттардын жыйындысын (чыныгы баалуулуктар) кошуп, жыйынтыгын жөнөтүңүз, ал эми жыйынтыктоочу бөлүгүн кошуңуз жана алар дал келерин текшериңиз. Эгер алар дал келсе же бул маалымат топтомун ыргытышса, анда алар дал келбейт. Албетте, бул байт эмес, бүтүн санды жөнөтүүнү камтыйт. Ошентип, сиз бүтүн санды HI байтына жана LO байтына бөлүп, өзүнчө байт катары жөнөтөсүз. Андан кийин ресиверге чогуу коюңуз.

ОҢОЙ:

int x = 5696; (ар кандай жарактуу int мааниси, максималдуу 65k же 32k терс)

байт hi = x >> 8; (22)

байт lo = x; (64)

байттарды жөнөтүңүз жана башка учунда бириктириңиз ….

байт салам = Wire.read ();

байт lo = Wire.read ();

int newx = (салам << 8) + мына; (5696)

7 -кадам: ЖАБУУ

ЖАБЫЛУУ
ЖАБЫЛУУ
ЖАБЫЛУУ
ЖАБЫЛУУ
ЖАБЫЛУУ
ЖАБЫЛУУ
ЖАБЫЛУУ
ЖАБЫЛУУ

Жабуу үчүн, бул sonic сенсор реалдуу убакытта эне тактасына чийки аралык маалыматын берет. Бул микрофонду бошотот жана эскизди алда канча татаал кылат. Микрооразалуу ойлордун ордуна жакшы маалыматтардын негизинде жайыраак, бурулуп, токтоп же артка кайрылып жакшы чечим кабыл ала алат. Эскиздерин зымдарсыз жүктөө үчүн bluetooth IDE жөнүндөгү менин башка постумду караңыз жана эскизиңизди тез өзгөртүү үчүн дайыма роботту туташтырып туруңуз. Муну көргөнүңүз үчүн рахмат. oldmaninsc.

Сунушталууда: