Баскычты Arduinoго туташтырганда, контакттык секириктен кантип арылууга болот

Мазмуну:

Баскычты Arduinoго туташтырганда, контакттык секириктен кантип арылууга болот
Баскычты Arduinoго туташтырганда, контакттык секириктен кантип арылууга болот

Video: Баскычты Arduinoго туташтырганда, контакттык секириктен кантип арылууга болот

Video: Баскычты Arduinoго туташтырганда, контакттык секириктен кантип арылууга болот
Video: Ремонт зарядного устройства Орион PW-150. 2024, Май
Anonim

Биз буга чейин Arduinoго бир баскычты туташтырууну карап, "секирип" жаткан байланыштар маселесин козгогонбуз. Бул өтө тажатма көрүнүш, ал баскычты кайталап басууну шарттайт жана баскычты чыкылдатууну программалык башкарууну кыйындатат. Байланыштагы секириктен кантип арылууга боло тургандыгы жөнүндө сүйлөшөлү.

Секирүү эффектине байланышыңыз
Секирүү эффектине байланышыңыз

Зарыл

  • - Arduino;
  • - такт баскычы;
  • - номиналы 10 кОм болгон резистор;
  • - Жарык чыгаруучу диод;
  • - зымдарды туташтыруу.

Нускамалар

1 кадам

Байланыш секирүүсү - бул механикалык өчүргүчтөрдө, баскычтарда, которуштуруп күйгүзгүчтөрдө жана реледе көп кездешкен көрүнүш. Байланыштар, адатта, ийкемдүүлүккө ээ болгон металлдардан жана эритмелерден жасалгандыктан, физикалык жактан жабык болгондо, алар дароо ишенимдүү байланыш түзө алышпайт. Кыска мөөнөттүн ичинде байланыштар бир нече жолу жабылып, бири-бирине түртөт. Натыйжада, электр тогу туруктуу абалга бир маалда эмес, бир нече өйдө-ылдый болгондо ээ болот. Бул убактылуу таасирдин узактыгы байланыш материалына, көлөмүнө жана дизайнына жараша болот. Сүрөттө такт баскычынын контакттары жабык болгондо кадимки осциллограмма көрсөтүлгөн. Туруктуу абалга өткөн учурдан тартып бир нече миллисекундду түзгөндүгү көрүнүп турат. Бул "секирүү" деп аталат.

Жарык, кыймылдаткычтар же башка инерциялык датчиктер менен шаймандарды башкаруу үчүн электр чынжырларында мындай таасир байкалбайт. Ал эми маалыматты тез окуп жана иштетип жаткан схемаларда (жыштыктар "секирүү" импульстарындай эле тартипте же андан жогору), бул көйгөй. Айрыкча, 16 МГц жыштыкта иштеген Arduino UNO, 0дон 1ге чейин бир которуштуруунун ордуна бирдиктердин жана нөлдөрдүн ырааттуулугун кабыл алып, контакттык секирикти кармоодо мыкты.

Баскычты басканда секирүү менен байланышыңыз
Баскычты басканда секирүү менен байланышыңыз

2-кадам

Келгиле, контакт секирүүсү чынжырдын туура иштешине кандай таасир этет. Ардуиного саат баскычын тирөөчү резистор схемасын колдонуп туташтыралы. Баскычты басуу менен биз диодду күйгүзүп, баскыч кайра басылганга чейин күйгүзөбүз. Түшүнүктүү болуш үчүн, тышкы диодду санарип төөнөгүч 13кө туташтырабыз, бирок орнотулган биринен баш тартууга болот.

Тартуучу резистор схемасын колдонуп баскычты Arduinoго туташтыруу
Тартуучу резистор схемасын колдонуп баскычты Arduinoго туташтыруу

3-кадам

Бул тапшырманы аткаруу үчүн, биринчи кезекте:

- баскычтын мурунку абалын эстөө;

- учурдагы абал менен салыштыруу;

- эгер абал өзгөргөн болсо, анда биз диоддун абалын өзгөртөбүз.

Келгиле, ушундай эскизди жазып, Arduino эс тутумуна жүктөлсүн.

Контур күйгүзүлгөндө, контакттын секирген таасири дароо байкалат. Бул LED баскычты баскандан кийин дароо күйбөйт, же күйүп, андан кийин өчүп калат, же баскычты баскандан кийин дароо өчпөйт, бирок күйүп турат. Жалпысынан, схема туруктуу иштебейт. Эгерде сизде диодду күйгүзүү милдети анчалык деле маанилүү болбосо, анда башка олуттуу тапшырмалар үчүн бул жөн эле жол берилгис нерсе.

Байланыш секирүүсүн эске албастан, баскычты басуу менен иштетүү эскизи
Байланыш секирүүсүн эске албастан, баскычты басуу менен иштетүү эскизи

4-кадам

Кырдаалды оңдогонго аракет кылабыз. Байланыш секирүүсү байланыш жабылгандан кийин бир нече миллисекунддун ичинде пайда болорун билебиз. Баскычтын абалын өзгөрткөндөн кийин 5 мүнөттөн кийин күтө туралы. Адам үчүн бул убакыт дээрлик бир заматта болот, ал эми адам баскычты басуу, адатта, бир топ ондогон миллисекундаларды талап кылат. Ошондой эле Arduino мындай кыска убакыт аралыгында мыкты иштейт жана бул 5ms байланыштарды секирүүнү баскычты басуудан токтотууга мүмкүндүк берет.

Бул эскизде биз жарыялоону () жол-жобосун жарыялайбыз (англис тилинде "секирүү" жөн гана "секирүү", "де" префикси тескери процессти билдирет), анын киришине биз баскычтын мурунку абалын беребиз. Эгерде баскычты басуу 5 мсекден ашык убакытка созулса, анда ал чындыгында пресс болуп саналат.

Басма сөздү аныктоо менен, биз светодиоддун абалын өзгөртөбүз.

Эскизди Arduino тактасына жүктөө. Азыр баары бир топ жакшырды! Баскыч сөзсүз иштейт, басканда, LED күйгүзөт, биз каалагандай.

Байланыш секирүүсүн эске алуу менен баскычты басууну иштетүүнүн эскизи
Байланыш секирүүсүн эске алуу менен баскычты басууну иштетүүнүн эскизи

5-кадам

Окшош функцияны Bounce2 китепканасы сыяктуу атайын китепканалар камсыз кылат. Аны "Булактар" бөлүмүндөгү шилтемеден же https://github.com/thomasfredericks/Bounce2 сайтынан жүктөп алсаңыз болот. Китепкананы орнотуу үчүн, Arduino өнүгүү чөйрөсүнүн китепканалар каталогуна жайгаштырып, IDEни өчүрүп-күйгүзүңүз.

"Bounce2" китепканасында төмөнкү ыкмалар бар:

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

боштук аралыгы (мс) - кечигүү убактысын миллисекундалар менен белгилейт;

void attach (төөнөгүч номери) - баскыч туташтырылган төөнөгүчтү орнотот;

int update () - объектти жаңыртып, эгер пин абалы өзгөрсө, чыныгы, ал эми башкача жалган;

int read () - пиндин жаңы абалын окуйт.

Келгиле, эскизибизди китепкананы колдонуп жазалы. Баскычтын мурунку абалы менен учурдагы абалын салыштырууга болот, бирок алгоритмди жөнөкөйлөтөлү. Кнопка басылганда, биз пресстерди эсептейбиз жана ар бир так басуу LED диодун күйгүзүп, ар бир жуп басуу менен өчүрөт. Бул эскиз кыска, окууга жеңил жана колдонууга жеңил көрүнөт.

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