Мазмуну:
Video: Rotary Encoder - Аны түшүнүңүз жана колдонуңуз (Arduino/башка ontrolController): 3 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Ротари коддоочу-айлануу кыймылын санарип же аналогдук маалыматка айландыруучу электр-механикалык түзүлүш. Ал сааттын жебеси боюнча же сааттын жебесине каршы бурулушу мүмкүн. Ротари коддогучтардын эки түрү бар: абсолюттук жана салыштырмалуу (көбөйүүчү) кодерлер.
Абсолюттук коддоочу учурдагы валдын бурчуна пропорционалдуу маанини чыгарса, кошумча кодер валдын кадамын жана анын багытын чыгарат.
Ротари коддогучтар популярдуу болуп баратат, анткени сиз бир электрдик модулда эки функцияны колдоно аласыз: Операцияларды ырастоо үчүн жөнөкөй коммутатор жана навигациялоо үчүн ротациялык кодер, мис. меню аркылуу.
Кошумча ротациялык кодер, анын огу айланып жатканда эки чыгуу сигналын чыгарат. Багытка жараша сигналдардын бири экинчисине алып барат. (төмөндө караңыз)
1 -кадам: Чыгуу маалыматын түшүнүү
Көрүнүп тургандай, коддогучтун огу сааттын жебеси боюнча айлана баштаганда, А ЧЫГЫШЫ биринчи кезекте ТӨМӨН түшүп, В Чыгуусу анын артынан түшөт. Сааттын жебесине каршы операция тескери бурулат.
Эми биз муну µController'ибизге киргизишибиз керек (мен Arduino Nano колдондум).
2 -кадам: Районду куруу
Мен жогоруда айткандай, жыйынтыктар БИЙИК жана ТӨМӨН канатты түзөт. ΜКонтроллердин А жана В маалымат түйүнүнөн таза БИЙИКТИ алуу үчүн биз Pull-Up каршылыгын кошушубуз керек. Жалпы Pin C LOW капталында түз жерге түшөт.
Ички которгуч жөнүндө маалымат алуу үчүн (баскыч) башка эки казыкты колдонобуз. Алардын бири VCCге, экинчиси µController'дин маалымат пинине барат. Таза LOW алуу үчүн, биз маалымат пинине Pull-Down Resistor кошушубуз керек.
ΜController'дин ички Pull-Up жана Pull-Down каршылыгын колдонууга да болот!
Менин учурда, pinout окшош:
- +3, 3V => +3, 3V (Arduino) (ошондой эле +5V мүмкүн)
- GND => GND (Arduino)
- A => Pin10
-
B =>
Кадап коюу
11
- C => GND
-
SW =>
Кадап коюу
12
3 -кадам: Код жазуу
int pinA = 10; // ички которуу A int pinB = 11; // ички которуу B int pinSW = 12; // которуу (басылган Encoder) int encoderPosCount = 0; // нөлдөн башталат, кааласаңыз өзгөртүңүз
int positionval;
bool switchval; int mrotateLast; int mrotate;
жараксыз орнотуу () {
int mrotateLast = digitalRead (pinA); Serial.begin (9600); кечиктирүү (50); }
void loop () {readencoder (); if (readwitch () == 1) {Serial.println ("Switch = 1"); }}
int readencoder () {
mrotate = digitalRead (pinA); if (mrotate! = mrotateLast) {// баскычы айланууда, эгерде (digitalRead (pinB)! = mrotate) {// которгуч A биринчи өзгөрдү -> сааттын жебеси боюнча encoderPosCount ++; Serial.println ("саат жебеси боюнча бурулду"); } else {// которуштуруучу В биринчи өзгөртүлдү-> сааттын жебесине каршы айлануучу encoderPosCount--; Serial.println ("саат жебесине каршы бурулган"); }
Serial.print ("Encoder Position:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = mrotate; encoderPosCount кайтаруу; } bool readwitch () {
if (digitalRead (pinSW)! = 0) {// которуу басылат
while (digitalRead (pinSW)! = 0) {} // switch азыркы учурда switchval = 1 басылган; } else {switchval = 0;} // switch басылбаган кайтуу switchval; }
Эми сиз коддогучту бурсаңыз болот жана encoderPosCount өзгөрмөсү сааттын жебеси боюнча бурулса, ал эми сааттын жебесине каршы бурулса, кайра санайт.
Дал ушул! Жөнөкөй жана пайдалуу.
Кодду өзгөртүп, аткаруудан тартынбаңыз. Сиз муну долбооруңузда ишке ашырсаңыз болот.
Мен ошондой эле LED долбоорун жүктөйм, анда мен светодиоддордун жарыгын орнотуу үчүн коддогучту колдондум.
Сунушталууда:
Таймер Arduino жана Rotary Encoder менен: 5 кадам
Таймер Arduino жана Rotary Encoder менен: Таймер көбүнчө өндүрүштө жана үй чарбасында колдонулуучу инструмент. Бул жыйын арзан жана оңой жасалат. Мен жазган бир нече программалар бар, Ardui үчүн
DigiSpark жана Rotary Encoder колдонуу менен USB үн баскычы: 3 кадам
DigiSpark жана Rotary Encoder колдонуу менен USB үн баскычы: Бул супер арзан USB көлөмүн башкаруу туткасы. Кээде салттуу баскычтар бардык жерде чычканды баскандын ордуна нерселерди башкарууга ыңгайлуу. Бул проект DigiSpark, Rotary Encoder жана Adafruit Trinket USB Library колдонот (https: //github.c
Rotary Encoder: Бул кантип иштейт жана Arduino менен кантип колдонуу керек: 7 кадам
Rotary Encoder: Бул кантип иштейт жана Arduino менен кантип колдонсо болот: Сиз бул жана башка укмуштуудай сабактарды ElectroPeakтин расмий веб -сайтынан окуй аласызБул карооБул окуу куралында сиз ротациялык коддогучту кантип колдонууну билесиз. Биринчиден, сиз ротациялоочу кодер жөнүндө кээ бир маалыматты көрөсүз, анан кантип
I2C / IIC ЖК дисплей - IUC LCD дисплейине SPI ЖКны колдонуңуз, Arduino менен IIC модулуна SPI колдонуңуз: 5 кадам
I2C / IIC ЖК дисплей | IUC LCD дисплейине SPI ЖК дисплейин колдонуңуз, SPIди IIC модулуна Arduino менен колдонуңуз: Салам балдар, анткени кадимки SPI LCD 1602де туташуу үчүн зымдар өтө көп болгондуктан, аны arduino менен иштетүү өтө кыйын, бирок базарда жеткиликтүү болгон бир модуль бар. SPI дисплейин IIC дисплейине айландырыңыз, ошондо сиз 4 зымды гана туташтырууңуз керек
TinkerCAD менен Электрондук 0ду түшүнүңүз: 5 кадам
TinkerCAD менен Электронду 0дөн 1ге чейин түшүнүү: Электронду эч нерседен түшүнүү оңой эмес, балдарга же чоңдорго эмне керек. Профессионалдык электротехника катары, түшүнүктүү болгонго чейин абстрактуу эрежелерди реалдуу кылуу канчалык оор экенин түшүнө алам. КЫЗЫКТУУ wi