Мазмуну:
- 1 -кадам: Каттоо даректерин аныктоо
- 2 -кадам: Массивдер жана глобалдык өзгөрмөлөр
- 3 -кадам: "serial.begin" Функциясы
- 4 -кадам: "serial.available" Функциясы
- 5 -кадам: "serial.read" функциясы
- 6 -кадам: "serial.write" функциясы
- 7 -кадам: Орнотуу функциясы
- 8 -кадам: Loop жана ISR функциялары
- 9 -кадам: Кабелдөө
- 10 -кадам: Бардыгын бириктирүү
Video: Китепкана же сериялык функциялары жок Arduino Tone Generator (үзгүлтүктөр менен): 10 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Бул адатта мен үйрөтө турган нерсе эмес, мен металл иштеткенди жакшы көрөм, бирок мен электротехниканын студенти болгондуктан микроконтроллерлер боюнча сабак алышым керек (Embedded Systems Design), мен көрсөтмө берем деп ойлогом менин проектилеримнин бири. Мен башында бул класс үчүн долбоорду жана башкаларды түзгөндө, arduino китепканасынын функцияларын же сериялык функцияларын колдонбогон окуу куралдары өтө аз экенин таптым, бул дагы жакшы сабак болот деп ойлогом.
Бул код Atmega 2560 микроконтроллери үчүн иштелип чыккан, андыктан эгер сиз аны башка тактада колдонууну кааласаңыз, контроллерлериңиздин колдонуучусунун негизинде коддогу даректердин регистрлерин өзгөртүшүңүз керек болот. Коддун артында турган негизги идея, клавиатурадагы баскычты сериялык мониторго киргизгенде, ардуино мега сиз баскан кайсы бир баскычтын негизинде белгилүү бир жыштыкты чыгарат, аны "q" баштапкы абалга келтирет. Мен муну жасадым: "а" А тегиз жыштыкты чыгарат жана "А" А кескин жыштык чыгарат, "б" В жалпак чыгарат, "жалпак" үчүн "с", "кескин" үчүн "С" ж.б. Толук код аягында жүктөлөт, бирок ар бир кадам кодду бөлүктөргө бөлөт, андыктан түшүндүрүү оңой.
1 -кадам: Каттоо даректерин аныктоо
Бул кадам оңой, эгер сиз atmega 2560 колдонуп жатсаңыз, анда мен колдонгон даректерди колдонушуңуз керек, бирок эгер сиз башка чипи бар тактаны колдонсоңуз, анда бул регистрлердин ар биринин дарегин табышыңыз керек болот. чиптердин колдонмосу. Жогорудагы аныктамалар жөн гана туруктуу, алар кийин биздин функциялар үчүн колдонулат. Биз даректерди туруксуз кол коюлбаган катары көрсөтөбүз, анткени биз компилятордун алар менен чаташуусун каалабайбыз.
2 -кадам: Массивдер жана глобалдык өзгөрмөлөр
Бул жерде биз ар бир ачкыч чыгарышы керек болгон бардык жыштыктарды камтыган Жыштык массивин аныктагыбыз келет. Бул баалуулуктар иш жүзүндөгү ноталардын жыштыгынан эсептелинет жана чынын айтсам, мен аларды кантип алганымды унутуп калдым, бирок буларды туура текшерүү үчүн осциллографта сынап көрдүм. Биз ошондой эле ар бир тон үчүн басуу үчүн бардык баскычтарды камтыган ноталар массивин, ошондой эле кийинки функцияларыбыз үчүн керек болгон өзгөрмөлөрдү аныктап жатабыз.
3 -кадам: "serial.begin" Функциясы
Биз U0init () "serial.begin" функциясын кайталаган биздин ыңгайлаштырылган функцияны чакырабыз. Бул керектүү болгон ылдамдыкты кириш катары алат жана сериялык портту ошол ылдамдыкта баштайт.
4 -кадам: "serial.available" Функциясы
Биз "serial.available" U0kbhit () туураган функцияны чакырабыз. Бул киргизүүнү талап кылбайт, тескерисинче RDA статусун колдонуп клавиатурада кандайдыр бир өзгөрүү болгонун аныктайт жана өзгөрүү аныкталганда чындыкты кайтарат.
5 -кадам: "serial.read" функциясы
Биз "serial.read" функциясын туураган функцияны U0getchar () деп атайбыз, ал эч кандай киргизбейт жана UDR0 реестринде сакталган клавиатурада кандай гана өзгөрүү болбосун чыгарат.
6 -кадам: "serial.write" функциясы
Биз "serial.write" окшоштурган функцияны U0putchar () деп атайбыз, ал UDR0 реестринен маалыматтарды таап, сактоодо жана кайра сериалдык мониторго кайра өзгөрүүлөрдү чыгарат.
7 -кадам: Орнотуу функциясы
Бул сериялык портту инициализациялоо үчүн биздин "serial.begin" имитациясын колдоно турган негизги орнотуу функциясы жана таймер регистрлери үчүн бит орнотууларыбызды инициализациялайт жана биздин обондорду чыгаруу үчүн PB6 орнотот.
8 -кадам: Loop жана ISR функциялары
Укурук мындай иштейт: эгер биздин "serial.available" функциясы менен өзгөрүү аныкталса, биздин "serial.read" функциясы ошол өзгөрүүнү сактайт жана биздин "serial.write" функциясы ал өзгөрүүнү сериялык мониторго коет. I өзгөрмөсү жыштык массивинин өлчөмүнөн азыраак болгондо, ал ошол жактагы жыштыктагы чыгууну ошол массивдеги i позициясы кылып коёт. ISR баштапкы абалга келтирүү функциясын аткарат, эгерде жыштык массивинин позициясы 0ге барабар болбосо (башкача айтканда "q" басылбаса), ал жыштыкту чыгарат, бирок "q" басылганда ал баштапкы абалга келет. бул код үзгүлтүктөрдү колдонот, бирок ал өчүрүлгөн өчүрүүлөр менен жасалышы мүмкүн. Эгерде мен кандайдыр бир суроо -талап алсам, кодду үзгүлтүксүз жайгаштырам, мен үзгүлтүккө түшүрүү версиясы кызыктуу деп ойлойм.
9 -кадам: Кабелдөө
Бул коддун өткөргүчтөрү өтө оңой, жөн эле PB6дан чыккан панелди панельге коюп, ызылдагычты же динамикти ошол менен катар туташтырып, кайра жерге туташтырыңыз. Эскертүү: эгер сиз динамикти колдонсоңуз, анда динамиктин алдына кичинекей резистор коюңуз. Эгерде сиз жөн гана чыгууну көргүңүз келсе, бирок укпасаңыз, анда PB6ны осциллографтын кызыл коргошун менен кара коргошун жерге туташтырыңыз.
10 -кадам: Бардыгын бириктирүү
Мен бул кадамга толук кодду коштум, анткени мен анын бардык бөлүктөрүн мурунку кадамдарда түшүндүргөм. Бул ар кандай жыштыктар үчүн клавиатура киргизүүсүн талап кылат жана бул жыштыкты PB6га чыгарат. Сизге IDE менен коддун башка жолун окуу жакты деп үмүттөнөбүз!
Ошондой эле, бул үчүн микроконтроллер конкурсуна добуш бериңиз: D
Сунушталууда:
Ethernet кабелин колдонуу менен ноутбук/компьютер аркылуу Raspberry Pi 4 орнотуңуз (Монитор жок, Wi-Fi жок): 8 кадам
Ethernet кабелин колдонуу менен ноутбук/компьютер аркылуу Raspberry Pi 4 орнотуңуз (Монитор жок, Wi-Fi жок): Бул үчүн биз 1 Гб оперативдүү Raspberry Pi 4 Model-B менен иштейбиз. Raspberry-Pi-бул билим берүү максаттары үчүн жана DIY долбоорлору үчүн жеткиликтүү баада колдонулган бирдиктүү компьютер, 5V 3A кубаттуулугун талап кылат
Китепкана жок жылдыруу текстин көрсөтүү үчүн башка Arduino менен Arduino программалоо: 5 кадам
Китепкана жок жылдыруу текстин көрсөтүү үчүн башка Arduino менен Arduino программалоо: Sony Spresense же Arduino Uno анча кымбат эмес жана көп күчтү талап кылбайт. Бирок, эгерде сиздин долбооруңуз бийликке, мейкиндикке же бюджетке чектөө киргизсе, анда Arduino Pro Mini колдонууну карап көрүңүз. Arduino Pro Microдон айырмаланып, Arduino Pro Mi
Китепкана жок RC5 Алыстан башкаруу протоколунун декодери: 4 кадам
Китепкана жок RC5 Remote Control Protocol Decoder: rc5 кодун чечүүдөн мурун адегенде rc5 буйругу деген эмне жана анын структурасы кандай экенин талкуулайбыз. негизинен rc5 буйругу телекөрсөтүүлөрдө, CD плеерлеринде, d2h, үй кинотеатры системаларында ж.б.у.с колдонулган алыстан башкаруу пультунда колдонулат, анда 13 же 14 бит бар
Arduino Hall эффекти сенсору менен үзгүлтүктөр: 4 кадам
Arduino Hall эффекти сенсору үзгүлтүккө учурады: Саламатсыздарбы, бүгүн мен сизге эффект сенсорун Arduino менен кантип туташтырып, аны үзгүлтүккө учуратуу керектигин көрсөтөм. : //s.click.aliexpress.com/e/biNyW0zKHall эффект сенсорлору: h
Нөлдүк ноутбук муздаткыч / стенд (желим жок, бургулоо жок, гайкалар жана болттар жок, бурамалар жок): 3 кадам
Нөлдүк ноутбук муздатуучу / стенд (желим жок, бургулоо жок, гайкалар жана болттар жок, бурамалар жок): ЖАҢЫРТУУ: PLEASE KINDLY VOE MY INSTRUCTABLE, рахмат _ _ БАШКАЛАРЫҢЫЗ ҮЧҮН МАҢЫЗДАР МҮМКҮН Www.instructables.com/id/Zero-Cost-Aluminum-Furnace-No-Propane-No-Glue-/ КИРИҢИЗ ЖЕ МЫКТЫ ДОСУМУҢУЗГА ДОБУШ БЕРҮҢҮЗ