Түймені Arduino-ға қосқанда контактілі секіруден қалай құтылуға болады

Мазмұны:

Түймені Arduino-ға қосқанда контактілі секіруден қалай құтылуға болады
Түймені Arduino-ға қосқанда контактілі секіруден қалай құтылуға болады

Бейне: Түймені Arduino-ға қосқанда контактілі секіруден қалай құтылуға болады

Бейне: Түймені Arduino-ға қосқанда контактілі секіруден қалай құтылуға болады
Бейне: Что такое Arduino Настройка Arduino Первые шаги в Arduino 2024, Қараша
Anonim

Біз бұған дейін Arduino-ға түймені қосуды қарастырдық және контактілердің «серпілісі» мәселесін қозғадық. Бұл батырманы бірнеше рет басуды тудыратын және батырмаларды басуды бағдарламалық басқаруды қиындататын өте жағымсыз құбылыс. Байланыстан қалай құтылуға болатыны туралы сөйлесейік.

Байланыс әсері
Байланыс әсері

Қажетті

  • - Ардуино;
  • - такт түймесі;
  • - номиналды мәні 10 кОм болатын резистор;
  • - жарық шығаратын диод;
  • - сымдарды қосу.

Нұсқаулық

1-қадам

Байланыс секіру - бұл механикалық ажыратқыштардағы, батырмалардағы, ауыстырып қосқыштардағы және релелердегі қарапайым құбылыс. Контактілер, әдетте, икемділікке ие металдар мен қорытпалардан жасалатындықтан, физикалық тұрғыдан жабық болған кезде, олар бірден сенімді байланыс орната алмайды. Қысқа уақыт ішінде контактілер бірнеше рет жабылып, бір-біріне тойтарыс береді. Нәтижесінде электр тогы тұрақты мәнді бірден емес, бірнеше көтерілу мен құлдыраудан кейін алады. Бұл уақытша әсердің ұзақтығы байланыс материалына, өлшемі мен дизайнына байланысты. Суретте такт түймесінің контактілері жабылған кезде әдеттегі осциллограмма көрсетілген. Тұрақты күйге ауысқан сәттен бастап бірнеше миллисекундты құрайтын уақытты көруге болады. Бұл «секіру» деп аталады.

Бұл әсер жарықтандыру, қозғалтқыштар немесе басқа инерциялық датчиктер мен құрылғыларды басқаруға арналған электр тізбектерінде байқалмайды. Бірақ ақпаратты жылдам оқып, өңдейтін тізбектерде (жиіліктер «серпіліс» импульстарымен бірдей тәртіпте немесе одан жоғары), бұл проблема. Атап айтқанда, 16 МГц жиілікте жұмыс жасайтын Arduino UNO, 0-ден 1-ге ауыстырып қосқыштың орнына бірліктер мен нөлдердің дәйектілігін қабылдау арқылы байланыс серпілісін жақсы ұстайды.

Түймені басқан кезде секіруге хабарласыңыз
Түймені басқан кезде секіруге хабарласыңыз

2-қадам

Контактілі секіру тізбектің дұрыс жұмысына қалай әсер ететінін көрейік. Төменгі резистор тізбегін пайдаланып Arduino-ға сағат түймесін қосайық. Түймені басу арқылы біз жарық диодты жандырып, оны түйме қайтадан басылғанша қоямыз. Түсінікті болу үшін біз ішкі жарықдиодты 13 сандық пинге қосамыз, дегенмен кіріктірмеден бас тартуға болады.

Түймені Arduino-ға тарту резисторының тізбегін қолдану
Түймені Arduino-ға тарту резисторының тізбегін қолдану

3-қадам

Бұл тапсырманы орындау үшін алдымен ойға келетін нәрсе:

- батырманың алдыңғы күйін есте сақтаңыз;

- ағымдағы күймен салыстыру;

- егер күй өзгерген болса, онда біз СИД күйін өзгертеміз.

Осындай эскиз жазып, оны Arduino жадына жүктейік.

Тізбек қосылған кезде, контакттың секіру әсері бірден көрінеді. Бұл жарық диодты батырманы басқаннан кейін бірден жанбайтындығынан немесе жанып, содан кейін сөніп қалуынан немесе батырманы басқаннан кейін бірден өшпеуінен, бірақ жанып тұруынан көрінеді. Жалпы, схема тұрақты жұмыс істемейді. Егер жарық диодты қосатын тапсырма үшін бұл соншалықты маңызды болмаса, онда басқа маңызды міндеттер үшін бұл жай ғана қолайсыз.

Байланысты ескермей, батырманы басу арқылы өңдеу сызбасы
Байланысты ескермей, батырманы басу арқылы өңдеу сызбасы

4-қадам

Біз жағдайды түзетуге тырысамыз. Біз контактінің секіруі байланыс жабылғаннан кейін бірнеше миллисекунд ішінде болатынын білеміз. Түйменің күйін өзгерткеннен кейін 5 минуттан кейін күтейік. Адам үшін бұл уақыт бір сәтте болады, ал адамның батырмасын басу, әдетте, әлдеқайда ұзағырақ - бірнеше ондаған миллисекундты алады. Ардуино осындай қысқа уақыт ішінде өте жақсы жұмыс істейді және бұл 5 мс түймені басу арқылы байланыстардың секіруін тоқтатуға мүмкіндік береді.

Бұл эскизде біз дебюк () процедурасын жариялаймыз (ағылшынша «секіру» жай «секіру», «де» префиксі кері процесті білдіреді), біз оған батырманың алдыңғы күйін жеткіземіз. Егер батырманы басу 5 мсек-тен көп болса, онда бұл шынымен де басу.

Баспаны анықтай отырып, біз жарық диодының күйін өзгертеміз.

Эскизді Arduino тақтасына жүктеңіз. Қазір бәрі жақсы! Түйме сөзсіз жұмыс істейді, басқан кезде жарық диоды күйді өзгертеді, біз қалағандай.

Түймені басуды ескере отырып, түймені басу арқылы өңдеу эскизі
Түймені басуды ескере отырып, түймені басу арқылы өңдеу эскизі

5-қадам

Ұқсас функцияны Bounce2 кітапханасы сияқты арнайы кітапханалар ұсынады. Сіз оны «Дереккөздер» бөліміндегі сілтемеден немесе https://github.com/thomasfredericks/Bounce2 веб-сайтынан жүктей аласыз. Кітапхананы орнату үшін оны Arduino даму ортасындағы кітапханалар каталогына орналастырыңыз және IDE қайта қосыңыз.

«Bounce2» кітапханасында келесі әдістер бар:

Bounce () - «Bounce» объектісінің инициализациясы;

бос интервал (мс) - кідіріс уақытын миллисекундтармен белгілейді;

бос қосымшасы (түйреуіш нөмірі) - түйме жалғанатын штифті орнатады;

int update () - нысанды жаңартады және егер пин күйі өзгерген болса true, ал басқаша false;

int read () - штифтің жаңа күйін оқиды.

Кітапхананы пайдаланып, нобайымызды қайта жазайық. Сіз сонымен қатар батырманың өткен күйін қазіргі күйімен салыстыра аласыз, бірақ алгоритмді жеңілдетейік. Түйме басылған кезде біз басуларды санап шығамыз және әр тақ басқан кезде жарық диоды жанады, ал әр басқан кезде оны өшіреді. Бұл эскиз қысқа, оқуға және қолдануға оңай көрінеді.

Ұсынылған: