Мазмуну:
- 1 -кадам: Ротари Encoders Inside
- 2 -кадам: Көптөр үчүн чыныгы ооруну жараткан азап
- 3 -кадам: Чектүү мамлекеттик машина (FSM) Чечими
- 4 -кадам: Arduino коду
- 5 -кадам: Кемчиликсиз интеграция
Video: Толук Arduino Rotary Solution: 5 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Ротари коддогучтар - бул электрондук долбоорлордун айлануучу башкаруу баскычтары, көбүнчө Arduino үй -бүлөлүк микроконтроллери менен колдонулат. Алар параметрлерди тууралоодо, менюларда чабыттоодо, экранда объекттерди жылдырууда, ар кандай маанилерди коюуда колдонулушу мүмкүн. Алар потенциометрлердин жалпы алмаштыруучулары болуп саналат, анткени аларды так жана чексиз бурууга болот, алар бир убакта бир дискреттик маанини көбөйтүшөт же азайтышат, жана көбүнчө тандоо функциялары үчүн түртүүчү коммутатор менен бириктирилет. Алар ар кандай формада жана өлчөмдө болот, бирок эң төмөн баа диапазону төмөндө түшүндүрүлгөндөй интерфейске кирүү кыйын.
Ротари коддогучтардын иштөө деталдары жана колдонуу режимдери жана аларды кантип колдонуу боюнча көптөгөн үлгүлүү коддор жана китепканалар жөнүндө сансыз макалалар бар. Бир гана көйгөй, алардын эч кимиси эң төмөнкү баа диапазонунда Кытайдын айлануучу модулдары менен 100% так иштебейт.
1 -кадам: Ротари Encoders Inside
Коддогучтун айлануучу бөлүгүндө үч төөнөгүч бар (жана кошумча экөө үчүн дагы экөө). Бири жалпы жер (кара GND), калган экөө баскыч бурулганда багытты аныктоо үчүн (алар көбүнчө көк CLK жана кызыл DT деп аталат). Бул экөө тең микроконтроллердин PULLUP кирүү пинине тиркелет, бул ЖОГОРКУ деңгээлди алардын демейки окуусу. Баскыч алдыга (же саат жебеси боюнча) бурулганда, адегенде көк CLK LOW деңгээлине түшөт, андан кийин кызыл DT келет. Андан ары бурулуп, көк CLK кайра ЖОГОРУГА көтөрүлөт, андан кийин кадимки GND жамаачы эки туташтыргычтан чыкканда, кызыл DT дагы кайра жогору көтөрүлөт. Ошентип, бир толук белгини толтуруу FWD (же саат жебеси боюнча). BWD башка багытта (же сааттын жебесине каршы) барат, бирок азыр кызыл биринчи түшөт, көк болсо тиешелүү түрдө эки деңгээлдеги сүрөттөрдө көрсөтүлгөндөй акыркы жолу кайра көтөрүлөт.
2 -кадам: Көптөр үчүн чыныгы ооруну жараткан азап
Ардуино хоббисттери үчүн жалпы көйгөй, арзан Ротари коддогуч модулдары өндүрүштүн деңгээлиндеги кошумча өзгөрүүлөрдү секиртип, кошумча жана туура эмес багыттарды окууну жаратат. Бул кемчиликсиз эсептөөнүн алдын алат жана бул модулдарды так айлануучу долбоорлорго интеграциялоону мүмкүн кылбайт. Бул кошумча секирүүлөр туташтыргычтардын үстүндөгү тактардын механикалык кыймылынан улам пайда болот, ал тургай кошумча конденсаторлорду колдонуу аларды толугу менен жок кыла албайт. Чачтар толук кене циклинин каалаган жеринде пайда болушу мүмкүн жана сүрөттөрдөгү чыныгы жашоо сценарийлери менен сүрөттөлөт.
3 -кадам: Чектүү мамлекеттик машина (FSM) Чечими
Сүрөт туура жана жалган секирүү үчүн эки казыктын (көк CLK жана кызыл DT) мүмкүн болгон деңгээлинин толук мамлекеттик мейкиндигин көрсөтөт. Бул мамлекеттик машинанын негизинде толук чечимди программалоого болот, ал дайыма 100% так иштейт. Бул чечимде чыпкалоо кечигүүлөрү керек болбогондуктан, бул дагы эң ылдам. Кадрлардын мамлекеттик мейкиндигин иштөө режиминен бөлүүнүн дагы бир пайдасы - бул өз каалоосуна жараша сурамжылоо же үзгүлтүккө учуратуу режимдерин колдонсо болот. Сурамжылоо же үзгүлтүктөр казыктардагы деңгээлдеги өзгөрүүлөрдү аныктай алат жана өзүнчө күнүмдүк абалдын деңгээлине жана деңгээлдеги өзгөрүүлөрдүн чыныгы окуяларына негизделген жаңы абалды эсептеп чыгат.
4 -кадам: Arduino коду
Төмөндөгү код сериялык монитордо FWD жана BWD кенелерин эсептейт жана кошумча которуштуруу функциясын да бириктирет.
// Питер Цургай 2019-04-10
// Ардуино портторуна айландырылган казыктар
#define SW 21 #define CLK 22 #define DT 23
// Ротари менен жөндөлгөн эсептегичтин учурдагы жана мурунку мааниси
int curVal = 0; int prevVal = 0;
// FSMдин жети абалы (чектүү мамлекеттик машина)
#аныктоо IDLE_11 0 #аныктоо SCLK_01 1 #define SCLK_00 2 #define SCLK_10 3 #define SDT_10 4 #define SDT_00 5 #deffine SDT_01 6 int state = IDLE_11;
жараксыз орнотуу () {
Serial.begin (250000); Serial.println ("Баштоо…"); // Жогорку деңгээл бардык пиндер үчүн демейки болот pinMode (SW, INPUT_PULLUP); pinMode (CLK, INPUT_PULLUP); pinMode (DT, INPUT_PULLUP); // CLK да, DT да бардык деңгээлдеги өзгөрүүлөр үчүн үзгүлтүктөрдү кошот attachInterrupt (digitalPinToInterrupt (CLK), rotaryCLK, CHANGE); attachInterrupt (digitalPinToInterrupt (DT), rotaryDT, CHANGE); }
void loop () {
// Кошумча которгучту иштетүү, эгерде (digitalRead (SW) == LOW) {Serial.println ("Басылган"); while (! digitalRead (SW)); } // Эсептегичтин маанисиндеги ар кандай өзгөрүү Serial Monitorдо көрсөтүлөт, эгерде (curVal! = PrevVal) {Serial.println (curVal); prevVal = curVal; }}
// CLK деңгээлинин өзгөрүшүнө мамлекеттик машина өтүүлөрү
жараксыз rotaryCLK () {if (digitalRead (CLK) == LOW) {if (state == IDLE_11) state = SCLK_01; else if (state == SCLK_10) state = SCLK_00; else if (state == SDT_10) state = SDT_00; } else {if (state == SCLK_01) state = IDLE_11; else if (state == SCLK_00) state = SCLK_10; else if (state == SDT_00) state = SDT_10; else if (state == SDT_01) {state = IDLE_11; curVal--; }}}
// Мамлекеттик машина DT деңгээлинин өзгөрүшүнө өтөт
жараксыз rotaryDT () {if (digitalRead (DT) == LOW) {if (state == IDLE_11) state = SDT_10; else if (state == SDT_01) state = SDT_00; else if (state == SCLK_01) state = SCLK_00; } else {if (state == SDT_10) state = IDLE_11; else if (state == SDT_00) state = SDT_01; else if (state == SCLK_00) state = SCLK_01; else if (state == SCLK_10) {state = IDLE_11; curVal ++; }}}
5 -кадам: Кемчиликсиз интеграция
Тиркелген видеодон FSM чечими ар кандай секирүү эффекттери бар диапазондогу айлануучу коддогучтар болгон учурда да так жана тез иштээрин текшере аласыз.
Сунушталууда:
Ретро Аркада - (Толук көлөмү Raspberry Pi тарабынан иштелип чыккан): 8 кадам
Ретро Аркада - (Толук Өлчөмү Raspberry Pi тарабынан иштелип чыккан): Биринчиден, мен бул Ретро Аркада тутумунун курулушу боюнча көрсөтмөнү карап чыкканың үчүн рахмат айткым келди. Мен эски аркада кутусун алып, аны 24 дюймдук кең экран менен өзүнчө шкафка салып жатам. Бул колдонмодогу өлчөөлөр сизге кыйын
Сервонун ичинде эмне бар жана Arduino толук окуу куралы менен кантип колдонуу керек: 6 кадам
Сервонун ичиндеги нерселер жана Arduino Full Tutorial менен кантип колдонуу керек: бул үйрөткүчтө, бул видео үйрөткүчтү сервовотч деген эмне экенин изилдеп көрөлү
Teensy 4.0 үчүн Arduino -Teensy4 - Толук жыйноо: 10 кадам
Teensy 4.0 үчүн Arduino-Teensy4-Толук Ассамблея: Бул көрсөтмө сизди Teensy 4.0 үчүн Arduino-Teensy4 кеңейтүү тактасынын курулушу аркылуу жетектейт, сиз менин Tindie дүкөнүмдөн бул жерден сатып алсаңыз болот: https: //www.tindie.com/products/ cburgess129/arduin … Сиз өспүрүмүңүз менен бирге Teensy 4кө заказ берсеңиз болот
$ 2 Arduino. ATMEGA328 өзүнчө. Оңой, арзан жана өтө кичине. Толук гид: 6 кадам (Сүрөттөр менен)
$ 2 Arduino. ATMEGA328 өзүнчө. Оңой, арзан жана өтө кичине. Толук Колдонмо.: Бул көрсөтмөдө сиз Arduino ATMEGA328 микроконтроллер чипин өзүнчө микроконтроллер катары кантип колдонууну үйрөнөсүз. Алардын баасы болгону 2 доллар, сиздин Arduino сыяктуу эле жасай аласыз жана долбоорлоруңузду өтө кичине кыла аласыз
Толук Arduino негизделген унаа GPS+GPRS уурулукка каршы тутуму: 5 кадам (сүрөттөр менен)
Толук Arduino негизделген унаа GPS+GPRS уурулукка каршы тутуму: Саламатсызбы! -Мүмкүн болушунча башка кыла турган эч нерсе жок Ошентип, мен Arduino негизделген чечүү курууну аяктадым