Arduino руу товчлуурыг холбоход холбоо барих үсрэлтийг хэрхэн арилгах вэ?

Агуулгын хүснэгт:

Arduino руу товчлуурыг холбоход холбоо барих үсрэлтийг хэрхэн арилгах вэ?
Arduino руу товчлуурыг холбоход холбоо барих үсрэлтийг хэрхэн арилгах вэ?

Видео: Arduino руу товчлуурыг холбоход холбоо барих үсрэлтийг хэрхэн арилгах вэ?

Видео: Arduino руу товчлуурыг холбоход холбоо барих үсрэлтийг хэрхэн арилгах вэ?
Видео: Push Button Ugal Ugalan (Subtittled) 2024, Арваннэгдүгээр
Anonim

Arduino руу товчлуурыг холбох талаар бид аль хэдийн авч үзсэн бөгөөд "үсрэх" харилцагчдын асуудлыг хөндсөн. Энэ нь товчлуурыг давтаж дарахад хүргэдэг, товчлуур дарах үйлдлийг програмчлахад бэрхшээлтэй болгодог маш ядаргаатай үзэгдэл юм. Холбоо барих үсрэлтийг хэрхэн арилгах талаар ярилцъя.

Буцах нөлөөтэй холбоо бариарай
Буцах нөлөөтэй холбоо бариарай

Шаардлагатай

  • - Ардуино;
  • - товчлуур товчлуур;
  • - 10 кОм нэрлэсэн утга бүхий резистор;
  • - Гэрэл ялгаруулах диод;
  • - холбох утас.

Зааварчилгаа

1-р алхам

Холболтын үсрэлт нь механик унтраалга, товчлуур, тохируулагч унтраалга, релений нийтлэг үзэгдэл юм. Контактыг ихэвчлэн уян хатан чанар бүхий метал ба хайлшаар хийдэг тул бие махбодийн хувьд хаалттай байх үед тэр даруй найдвартай холболт үүсгэдэггүй. Богино хугацаанд контактууд хэд хэдэн удаа хаагдаж, бие биенээ няцаадаг. Үүний үр дүнд цахилгаан гүйдэл тогтмол төлөвт шууд биш харин хэд хэдэн удаа уналт, уналтын дараа шилждэг. Энэхүү түр зуурын нөлөөллийн үргэлжлэх хугацаа нь холбоо барих материал, хэмжээ, хийцээс хамаарна. Зураг дээр товчлуурын товчлуурууд хаагдах үед ердийн осциллограмм харагдаж байна. Тогтвортой төлөвт шилжсэн мөчөөс хойш хэдэн миллисекунд байгаа нь харагдаж байна. Үүнийг "үсрэлт" гэж нэрлэдэг.

Энэ нөлөө нь гэрэлтүүлэг, мотор эсвэл бусад инерцийн мэдрэгч ба төхөөрөмжийг хянах цахилгаан хэлхээнд мэдэгдэхүйц биш юм. Гэхдээ мэдээллийг хурдан уншиж, боловсруулдаг хэлхээний хувьд (давтамж нь "үсрэх" импульсийн дараалалтай эсвэл түүнээс их) байвал энэ нь асуудал үүсгэдэг. Ялангуяа 16 MHz давтамжтай ажилладаг Arduino UNO нь 0-ээс 1 шилжүүлэгчийн оронд нэг ба тэгийн дарааллыг хүлээн авч холбоо барих үсрэлтийг маш сайн гүйцэтгэдэг.

Товчлуурыг дарахад үсрэлттэй холбоо бариарай
Товчлуурыг дарахад үсрэлттэй холбоо бариарай

Алхам 2

Холболтын үсрэлт нь хэлхээний зөв ажиллагаанд хэрхэн нөлөөлж байгааг харцгаая. Татаж авах эсэргүүцлийн хэлхээг ашиглан Arduino руу цагийн товчлуурыг холбож үзье. Товчлуурыг дарснаар бид LED-г асааж, товчлуурыг дахин дарах хүртэл асаана. Илүү тодорхой болгохын тулд бид гаднах LED-ийг дижитал зүү 13-тэй холбодог.

Татах эсэргүүцлийн хэлхээг ашиглан Arduino руу товчлуурыг холбох
Татах эсэргүүцлийн хэлхээг ашиглан Arduino руу товчлуурыг холбох

Алхам 3

Энэ даалгаврыг биелүүлэхийн тулд хамгийн түрүүнд санаанд орж байгаа зүйл бол:

- товчлуурын өмнөх төлөвийг санах;

- одоогийн байдалтай харьцуулах;

- төлөв өөрчлөгдсөн бол бид LED төлөвийг өөрчилнө.

Ийм ноорог бичээд Arduino-ийн санах ойд оруулъя.

Цахилгаан хэлхээг асаахад контакт үсрэх нөлөө шууд харагдана. Энэ нь LED товчлуурыг дарсны дараа шууд асахгүй, эсвэл асч, дараа нь унтрах эсвэл товчлуур дарсны дараа шууд унтрахгүй, харин асаалттай хэвээр байгаа нь илэрдэг. Ерөнхийдөө хэлхээ нь тогтвортой ажиллахгүй байна. Хэрэв LED асаах ажилд энэ нь тийм ч чухал биш бол бусад ноцтой ажлуудын хувьд энэ нь зүгээр л хүлээн зөвшөөрөгдөхгүй юм.

Холболтын үсрэлтийг харгалзан үзэхгүйгээр товчлуурыг дарж боловсруулах тойм зураг
Холболтын үсрэлтийг харгалзан үзэхгүйгээр товчлуурыг дарж боловсруулах тойм зураг

Алхам 4

Бид нөхцөл байдлыг засахыг хичээх болно. Контактыг хааснаас хойш хэдэн миллисекундын дараа холбоо барих үсрэлт болдог гэдгийг бид мэднэ. Товчлуурын төлөвийг өөрчилснөөс хойш 5 минутын дараа хүлээцгээе. Хүний хувьд энэ цаг бараг л агшин зуур байдаг бөгөөд хүний товчлуур дарахад ихэвчлэн хэдэн арван миллисекунд илүү удаан хугацаа шаардагддаг. Arduino нь ийм богино хугацаанд маш сайн ажилладаг бөгөөд эдгээр 5ms нь товчлуур дээр дарахад контактуудын үсрэлтийг зогсоох боломжийг олгоно.

Энэ ноорог дээр бид debounce () процедурыг зарлах болно (англиар "bounce" гэдэг нь зүгээр л "bounce", "de" угтвар нь урвуу процессыг хэлнэ), бид оролт дээр товчлуурын өмнөх төлөвийг нийлүүлнэ. Хэрэв товчлуур дээр дарах нь 5 мсек-ээс илүү үргэлжилдэг бол энэ нь үнэхээр дарагдсан гэсэн үг юм.

Хэвлэлийг илрүүлснээр бид LED төлөвийг өөрчилнө.

Ноорогоо Arduino самбар дээр байршуулна уу. Одоо бүх зүйл илүү дээр болжээ! Товчлуур нь тасралтгүй ажилладаг бөгөөд дарахад LED нь хүссэнээрээ өөрчлөгддөг.

Холбоо барих үсрэлтийг харгалзан товчлуур дээр дарж боловсруулах ноорог
Холбоо барих үсрэлтийг харгалзан товчлуур дээр дарж боловсруулах ноорог

Алхам 5

Үүнтэй ижил төстэй ажиллагааг Bounce2 номын сан гэх мэт тусгай сангуудаар хангадаг. Та үүнийг "Эх сурвалж" хэсгийн холбоос эсвэл https://github.com/thomasfredericks/Bounce2 вэбсайт дээрээс татаж авах боломжтой. Номын сан суулгахын тулд Arduino хөгжүүлэлтийн орчны номын сангуудад байрлуулж IDE-г дахин эхлүүлнэ үү.

"Bounce2" номын сан нь дараахь аргуудыг агуулдаг.

Bounce () - "Bounce" объектыг эхлүүлэх;

хоосон зай (ms) - саатлын хугацааг миллисекундээр тохируулна;

void хавсаргах (зүү дугаар) - товчлуурыг холбосон зүүг тохируулна;

int update () - объектыг шинэчилж, хэрэв пин төлөв өөрчлөгдсөн бол үнэн, харин эсрэг тохиолдолд худал;

int read () - зүүний шинэ төлөвийг уншина.

Номын сангаа ашиглан ноорогоо дахин бичье. Та мөн товчлуурын өнгөрсөн төлөвийг одоогийнхтой нь харьцуулж, харьцуулж болох боловч алгоритмыг хялбарчилж үзье. Товчлуурыг дарахад бид дарагчийг тоолж, сондгой дарах болгонд LED асаж, жигд дарах бүр унтрах болно. Энэхүү ноорог товч, уншихад хялбар, ашиглахад хялбар харагдаж байна.

Зөвлөмж болгож буй: