Mündəricat:

Arduino üçün 6 Düymə üçün 1 Analog Girişdən istifadə edin: 6 addım
Arduino üçün 6 Düymə üçün 1 Analog Girişdən istifadə edin: 6 addım

Video: Arduino üçün 6 Düymə üçün 1 Analog Girişdən istifadə edin: 6 addım

Video: Arduino üçün 6 Düymə üçün 1 Analog Girişdən istifadə edin: 6 addım
Video: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, Noyabr
Anonim
Arduino üçün 6 Düymə üçün 1 Analog Girişdən istifadə edin
Arduino üçün 6 Düymə üçün 1 Analog Girişdən istifadə edin

Arduino üçün necə daha çox rəqəmsal giriş əldə edə biləcəyimi tez -tez düşünürdüm. Bu yaxınlarda ağlıma gəldi ki, birdən çox rəqəmsal giriş gətirmək üçün Analog Girişlərdən birini istifadə etməliyəm. Sürətli bir axtarış etdim və insanların bunu edə bildikləri yerləri tapdım, ancaq bunların bir anda yalnız bir düyməyə basılmasına icazə verdiyini gördüm. Bənzər bir şəkildə basmaq üçün hər hansı bir düymə birləşməsinə sahib olmaq istəyirəm. Beləliklə, TINKERCAD CIRCUITS -in köməyi ilə bunu həyata keçirməyə başladım.

Niyə eyni vaxtda düyməni basmaq istərdim? TinkerCad Circuits dizaynında göstərildiyi kimi, proqram daxilində müxtəlif rejimlərin seçilməsi üçün DIP keçid girişləri üçün istifadə edilə bilər.

Fikirləşdiyim sxem Arduino -da mövcud olan 5V mənbəyindən istifadə edir və 7 rezistor və 6 düymə və ya açar istifadə edir.

Addım 1: Dövrə

Dövrə
Dövrə

Arduino -nun 0V -dən 5V -a qədər qəbul edən analoq girişləri var. Bu giriş 10 bitlik bir qətnaməyə malikdir, yəni siqnal 2^10 seqmentə və ya 1024 saya bölünür. Buna əsaslanaraq, eyni vaxtda basmağa icazə verərkən bir analoq girişə daxil edə biləcəyimiz ən çox şey 10 düymədən 1 analoq giriş olacaq. Ancaq bu mükəmməl bir dünya deyil. Dirijorlarda müqavimət, xarici mənbələrdən gələn səs -küy və qeyri -kamil güc var. Beləliklə, özümə çox rahatlıq vermək üçün bunu 6 düymə üçün dizayn etməyi planlaşdırdım. Buna, qismən, TinkerCAD Circuits-in 6 keçidli DIP Switch obyektinin olması, testləri asanlaşdırması təsir etdi.

Dizaynımdakı ilk addım, hər bir düyməyə ayrı -ayrılıqda basıldıqda unikal bir gərginlik verəcəyinə əmin olmaq idi. Bu, bütün rezistorların eyni dəyərdə olmasını istisna etdi. Növbəti addım, müqavimət dəyərlərinin paralel olaraq əlavə edildikdə hər hansı bir müqavimət dəyəri ilə eyni müqavimətə malik ola bilməməsi idi. Rezistorlar paralel bağlandıqda ortaya çıxan müqavimət Rx = 1/[(1/R1)+(1/R2)] ilə hesablana bilər. Beləliklə, R1 = 2000 və R2 = 1000 olarsa, Rx = 667 olar. Hər bir rezistorun ölçüsünü ikiqat artıraraq, birləşmələrin heç biri üçün eyni müqavimət görməyəcəyimi fərz etdim.

Beləliklə, bu nöqtədəki dövrəmdə hər birinin öz rezistoru olan 6 açar olmalıdır. Ancaq bu dövrəni tamamlamaq üçün daha bir rezistor tələb olunur.

Son müqavimətin 3 məqsədi var. Birincisi, aşağı çəkmə rezistoru kimi çıxış edir. Rezistor olmadan, heç bir düyməyə basılmadıqda dövrə natamamdır. Bu, Arduino'nun Analog Girişindəki gərginliyin hər hansı bir gərginlik potensialına üzməsinə imkan verəcəkdir. Bir aşağı çəkmə rezistoru, əslində, gərginliyi 0 V-a endirir. İkinci məqsəd bu dövrənin cərəyanını məhdudlaşdırmaqdır. Ohm qanunu V = IR və ya Gerilim = Cərəyanın Müqavimətlə vurulduğunu bildirir. Verilən bir gərginlik mənbəyi ilə, müqavimət nə qədər böyükdürsə, cərəyanın daha kiçik olacağını bildirir. Beləliklə, 500ohm rezistora 5V siqnal tətbiq edilsə, görə biləcəyimiz ən böyük cərəyan 0.01A və ya 10mA olardı. Üçüncü məqsəd siqnal gərginliyini təmin etməkdir. Son müqavimətdən axan ümumi cərəyan: i = 5V/Rtotal olacaq, burada Rtotal = Rlast+{1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Bununla birlikdə, müvafiq düyməni basılan hər bir Rezistor üçün yalnız 1/Rx daxil edin. Ümumi cərəyandan, Analog Girişə verilən Gərginlik i*Rlast və ya i*500 olacaq.

Addım 2: sübut - Excel

Sübut - Excel
Sübut - Excel

Bu dövrə ilə bənzərsiz müqavimət və buna görə də bənzərsiz gərginlik əldə edəcəyimi sübut etməyin ən sürətli və ən asan yolu Excel -in imkanlarından istifadə etmək idi.

Keçid girişlərinin bütün mümkün birləşmələrini qurdum və ardıcıl olaraq aşağıdakı ikili nümunələri təşkil etdim. "1" dəyəri açarın açıldığını, boş olduğunu göstərir. Elektron cədvəlin yuxarı hissəsində hər açar və açılan müqavimət üçün müqavimət dəyərlərini qoydum. Daha sonra, bütün rezistorların söndürüldüyü hallar istisna olmaqla, hər bir birləşmə üçün ekvivalent müqaviməti hesabladım, çünki bu rezistorlar bir enerji mənbəyi olmadan təsir etməyəcəkdir. Hər bir kombinasiyaya kopyalayıb yapışdıra bilməyim üçün hesablamalarımı asanlaşdırmaq üçün hər bir keçid dəyərini (0 və ya 1) tərs müqavimət dəyərinə vuraraq hesablamaya bütün birləşmələri daxil etdim. Bunu etmək, açar söndürüldükdə müqavimətini hesablamadan çıxardı. Yaranan tənliyi elektron tablo şəklində görmək olar, ancaq Req = Rx + 1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). Itotal = 5V / Req istifadə edərək, dövrədən keçən cərəyanı təyin edirik. Bu, aşağı çəkilən rezistordan keçən və bizə Analog Girişimizə Gərginlik verən eyni cərəyandır. Bu Vin = Itotal x Rx olaraq hesablanır. Həm Req məlumatlarını, həm də Vin məlumatlarını araşdıraraq, həqiqətən bənzərsiz dəyərlərə sahib olduğumuzu görə bilərik.

Bu nöqtədə, dövrəmizin işləyəcəyi görünür. İndi Arduino'yu necə proqramlaşdıracağınızı anlayın.

Addım 3: Arduino Proqramlaşdırması

Arduino Proqramlaşdırma
Arduino Proqramlaşdırma
Arduino Proqramlaşdırma
Arduino Proqramlaşdırma
Arduino Proqramlaşdırma
Arduino Proqramlaşdırma

Arduino'yu necə proqramlaşdıracağımı düşünməyə başlayanda əvvəlcə bir açarın açılıb -sönmədiyini müəyyən etmək üçün fərdi gərginlik aralığını qurmağı planlaşdırdım. Ancaq bir gecə yataqda yatarkən ağlıma gəldi ki, bunu etmək üçün bir tənlik tapmalıyam. Necə? EXCEL. Excel, qrafikdəki məlumatları ən yaxşı şəkildə uyğunlaşdırmaq üçün tənlikləri hesablamaq qabiliyyətinə malikdir. Bunu etmək üçün, açarların (ikili) Tamsayı dəyərinin bu dəyərə uyğun olan gərginlik girişinin bir tənliyini istəyəcəyəm. Excel İş Kitabımda, Tamsayı dəyərini elektron cədvəlin sol tərəfinə qoydum. İndi tənliyimi təyin edim.

Excel -də bir sətrin tənliyini necə təyin edəcəyinizə dair qısa bir təlimat.

1) Heç bir məlumatı olmayan bir hüceyrə seçin. Məlumat olan bir hüceyrə seçsəniz, Excel trend etmək istədiyinizi təxmin etməyə çalışacaq. Bu, trend qurmağı xeyli çətinləşdirir, çünki Excel nadir hallarda düzgün proqnoz verir.

2) "Daxil et" sekmesini seçin və "Dağılım" qrafikini seçin.

3) Qrafik qutusuna sağ vurun və "Məlumat Seç …" düyməsini basın. Bu, "Məlumat mənbəyini seçin" pəncərəsini açacaq. Məlumatları seçməyə davam etmək üçün Əlavə et düyməsini seçin.

4) Bir Seriya Adı verin (İsteğe bağlı). Yuxarı oxu və sonra Gərginlik məlumatlarını seçərək X Ekseni Aralığını seçin. Y oxunun aralığını yuxarı oxu və sonra Tamsayı məlumatlarını (0-63) seçərək seçin.

5) Məlumat nöqtələrinə sağ vurun və "Trendline əlavə et …" seçin "Trendline Xəttini Formatla" pəncərəsində Polinom düyməsini seçin. Trendə baxanda görürük ki, 2 -ci Sifariş tam uyğun gəlmir. 3 Sifarişi seçdim və bunun daha doğru olduğunu hiss etdim. "Tənliyi qrafikdə göstər" onay qutusunu seçin. İndi son tənlik qrafikdə göstərilir.

6) Tamamlandı.

TAMAM. Arduino proqramına qayıt. İndi tənliyə sahib olduğumuz üçün Arduino proqramlaşdırmaq çox asandır. Keçid mövqelərini təmsil edən tam ədəd 1 kod sətrində hesablanır. "Bitread" funksiyasından istifadə edərək, hər bir bitin dəyərini ala bilərik və hər düymənin vəziyyətini bilirik. (FOTOLARA BAKIN)

Addım 4: TinkerCAD sxemləri

TinkerCAD sxemləri
TinkerCAD sxemləri

TinkerCAD sxemlərini yoxlamamısınızsa, indi edin. GÖZLƏMƏK!!!! Təlimatımı oxumağı bitirin və sonra yoxlayın. TinkerCAD Circuits, Arduino sxemlərinin sınaqlarını çox asanlaşdırır. Bir neçə elektrik obyekti və Arduino daxildir, hətta Arduino -nu sınaq üçün proqramlaşdırmağa da imkan verir.

Dövrəmi sınamaq üçün bir DIP keçid paketi istifadə edərək 6 açar qurdum və onları rezistorlara bağladım. Excel elektron cədvəlimdəki gərginlik dəyərinin doğru olduğunu sübut etmək üçün Arduino Girişində bir voltmetr göstərdim. Bütün bunlar gözlənildiyi kimi oldu.

Arduino Proqramlaşdırmasının işlədiyini sübut etmək üçün Arduinonun rəqəmsal çıxışlarından istifadə edərək açarların vəziyyətini LED -lərə çıxardım.

Daha sonra hər bir açarı hər cür kombinasiyaya dəyişdim və "IT İŞLƏR" deməkdən qürur duyuram !!!

Addım 5: "Çox Uzun və Bütün Balıqlar üçün Təşəkkürlər." (ref 1)

Hələlik iş üçün səyahət etdiyim üçün bunu real avadanlıqdan istifadə edərək sınamamışam. Ancaq bunu TinkerCAD Circuits ilə sübut etdikdən sonra, işləyəcəyinə inanıram. Çətinlik, göstərdiyim rezistorların dəyərləri rezistorlar üçün bütün standart dəyərlər deyil. Bunun öhdəsindən gəlmək üçün ehtiyac duyduğum dəyərləri əldə etmək üçün potensiometrlərdən və rezistor birləşmələrindən istifadə etməyi planlaşdırıram.

Təlimatımı oxuduğunuz üçün təşəkkür edirəm. Ümid edirəm ki, layihələrinizdə sizə kömək edəcək.

Zəhmət olmasa eyni maneəni dəf etməyə çalışdınızsa və onu necə həll etmisinizsə şərhlərinizi yazın. Bunun daha çox yolunu öyrənmək istərdim.

Addım 6: İstinadlar

Mənbəsinə istinad etmədən bir təklif verəcəyimi düşünmədinizmi?

refer. 1: Adams, Duqlas. Çox uzun və bütün balıqlar üçün təşəkkürlər. (Otostopçunun Qalaktikaya Bələdçisinin 4 -cü kitabı "trilogiyası")

Tövsiyə: