Mündəricat:

Arduino əsaslı ikili zəngli saat: 13 addım (şəkillərlə)
Arduino əsaslı ikili zəngli saat: 13 addım (şəkillərlə)

Video: Arduino əsaslı ikili zəngli saat: 13 addım (şəkillərlə)

Video: Arduino əsaslı ikili zəngli saat: 13 addım (şəkillərlə)
Video: Arduino ilə uzaqdan idarə olunan maşın | Arduino car with Remote control | PART 1 2024, Iyul
Anonim
Image
Image

Müəllif tərəfindən daha çox izləyin:

DIY Lazer İnsanlar Sayğacı
DIY Lazer İnsanlar Sayğacı
Özüyeriyən Qayıq Tikilməsi (ArduPilot Rover)
Özüyeriyən Qayıq Tikilməsi (ArduPilot Rover)
Özüyeriyən Qayıq Tikilməsi (ArduPilot Rover)
Özüyeriyən Qayıq Tikilməsi (ArduPilot Rover)
Mükəmməl Yataq Lambası və Telefon Docku
Mükəmməl Yataq Lambası və Telefon Docku
Mükəmməl Yataq Lambası və Telefon Docku
Mükəmməl Yataq Lambası və Telefon Docku

Haqqında: Salam, mənim adım Jan və mən bir istehsalçıyam, əşyalar tikməyi və yaratmağı sevirəm və əşyaları təmir etməkdə də çox yaxşıyam. Həmişə yeni şeylər yaratmağı sevdiyimi düşündüyüm üçün və bu qədər davam etdirdiyim şey budur … Bodrum Mühəndisliyi haqqında Daha çox »

Hey

Bu gün sizə son layihələrimdən birini, ikili zəngli saatımı necə quracağımı göstərmək istərdim.

İnternetdə bir çox fərqli İkili saat var, lakin bu, əslində, zaman və rəng kimi şeyləri təyin etmək üçün həyəcan funksiyası və toxunma düymələri olan rəngli ünvanlı LED lentindən hazırlanmış ilk saat ola bilər.

Zəhmət olmasa, mürəkkəb görünüşünün sizi qorxutmasına imkan verməyin. Kiçik bir izahla ikili oxumaq əslində göründüyü qədər çətin deyil. Və yeni bir şey öyrənmək istəsəniz, daha sonra bunu etməkdə sizə kömək etmək istərdim.

Bu layihənin arxasındakı hekayədən bir az da danışım:

Əvvəlcə LED -ləri öz əlləri kimi istifadə edən "normal" bir saat qurmağı planlaşdırırdım, amma əlimdə kifayət qədər LED yox idi.

Sooo, vaxtı mümkün qədər az LED ilə göstərmək istədikdə nə edirsən?

İkili gedirsən və burada etdiyim şey budur.

Bu saat növünün üçüncü versiyasıdır. Layihə ideyası məni vurduqdan dərhal sonra çox sadə bir prototip hazırladım və insanların bu barədə nə düşündüklərini görmək üçün Hannoverdəki Maker Faire -ə apardım. Orada olduğum müddətdə çoxlu müsbət və maraqlı rəylər və inkişaf fikirləri aldım.

Bütün bu fikirlərin və düşünmə, tinking və proqramlaşdırma saatlarının nəticəsi, 1.0 versiyasından daha çox xüsusiyyətlərə malik olduqca maraqlı görünən kiçik zəngli saatdır və bu gün bina prosesinin hər addımını keçəcəyik. özünüzü asanlıqla qurun.

Youtube -da hər şeyi oxumaq istəməsəniz çox ətraflı bir video var.

Addım 1: Əşyalarınızı alın

Əşyalarınızı alın
Əşyalarınızı alın
Əşyalarınızı alın
Əşyalarınızı alın
Əşyalarınızı alın
Əşyalarınızı alın

Budur, öz ikili saatınızı qurmaq üçün lazım olan bütün komponentlərin və vasitələrin kiçik bir siyahısı.

Elektronika:

  • Adresli 18 Ws2811 LED (məsələn, Neopixellər) m başına 60 LED olan bir zolaqda (ebay)
  • Arduino Nano (ATMega328 prosessoru ilə) (ebay)
  • 1307 RTC modulu (ebay)
  • 4X Kapasitif toxunma düymələri (ebay)
  • bs18b20 rəqəmsal temperatur sensoru (ebay)
  • LDR (ebay)
  • laptop/smartfon dinamik və ya piezo səs siqnalı
  • 2222A NPN tranzistoru (və ya oxşar bir şey)
  • kişi başlıqları
  • açılı qadın başlıqları (ebay)
  • 1kOhm müqavimət
  • 4, 7kOhm müqavimət
  • 10 kOhm müqavimət
  • Tellər
  • 7x5 sm ölçüdə PCB 24x18 deşik (ebay)
  • gümüş tel (zərgərlik teli) (ebay)
  • 90 ° mini usb adapter (ebay)

Digər materiallar

  • Vinil örtük
  • 4X 45mm m4 flanş başlı vintlər (ebay)
  • 32X m4 ölçülü metal yuyucular
  • 4X m4 kilid qozu
  • 28X m4 qoz
  • 4X 10mm m3 pirinç PCB dayanıqlığı (ebay)
  • 8X 8mm m3 vida (ebay)
  • alüminium təbəqə
  • 2 mm südlü akril təbəqə
  • 2 mm şəffaf akril təbəqə
  • 3 mm MDF təbəqə
  • iki tərəfli lent

Alətlər

  • mini USB kabeli
  • Arduino IDE işləyən kompüter
  • 3,5 mm matkap ucu
  • 4, 5 mm qazma ucu
  • güc qazma maşını
  • kəsici bıçaq
  • mübarizə mişarı
  • lehimləmə ionu
  • metal kəsmə qayçı
  • fayl
  • qum kağızı

Şablonlar (indi ölçüləri ilə)

  • PDF
  • Libre Office Draw

Kod

  • Eskizlər
  • Düymə kitabxanası
  • Taymer kitabxanası
  • Jukebox kitabxanası
  • Dəyişdirilmiş RTClib
  • Adafruit Neopixel kitabxanası
  • Arduino-Temperatura Nəzarət-Kitabxana

Addım 2: Ön və Arxa Paneli kəsin

Ön və arxa paneli kəsin
Ön və arxa paneli kəsin
Ön və arxa paneli kəsin
Ön və arxa paneli kəsin
Ön və arxa paneli kəsin
Ön və arxa paneli kəsin
Ön və arxa paneli kəsin
Ön və arxa paneli kəsin

Hazırlayacağımız ilk parça akril ön paneldir. Zımpara üçün bir az dözümlülük istədiyimizi nəzərə alaraq, kəsiklərimizin hara getməsini istədiyimizi qeyd edirik. Sonra kəsmə bıçağımızla akrili cızırıq. Bunu 10-20 dəfə etdikdən sonra bir yivimiz olur. Daha sonra o bağçanı masanın kənarına yerləşdirə və akrili qırılana qədər bükə bilərik.

Ön panel ölçüləri kəsildikdən sonra arxa paneli MDF parçasından kəsirik. Bunun üçün mübarizə mişarımızdan istifadə edə bilərik, ancaq kəsici bıçaq da işləyir. MDF -ni bir taxta parçasına bağlamalı və bıçaq keçməyincə və iki ayrı parçaya sahib olana qədər kəsici bıçağımızla silmək məcburiyyətindəyik.

İndi iki paneli bir -birinə bağlayırıq və hər tərəfi mükəmməl hizalamaq üçün zımparalayırıq.

Bunu etdikdən sonra ilk şablonu kəsdik və bir neçə lent istifadə edərək iki panelə qoyduq və işarələnmiş delikləri qazmağa başladıq.

Əvvəlcə 4 küncün hər birində 4, 5 mm delik açırıq. Akril çox kövrək olduğu üçün qırılmasını istəmədiyimiz üçün kiçik bir qazma ucu ilə başlayacağıq və istədiyiniz çuxur diametrinə çatana qədər yolumuza davam edəcəyik. Sonra köşeleri düzgün formada zımpara etmək üçün şablondan istifadə edirik.

Addım 3: Arxa Paneli bitirin

Arxa Paneli bitirin
Arxa Paneli bitirin
Arxa Paneli bitirin
Arxa Paneli bitirin
Arxa Paneli bitirin
Arxa Paneli bitirin
Arxa Paneli bitirin
Arxa Paneli bitirin

Hələlik, ön paneli kənara qoyub ikinci şablonu arxa panelə yapışdıra bilərik, burada 4 pcb dayaqlarımızın deliklərini, həmçinin kənarlarını işarələyən 4 delik açmaq üçün 3, 5 mm -lik bir qazma ucundan istifadə etməliyik. kiçik arxa pəncərə üçün.

Daha sonra pəncərəni kəsmək və kənarlarını hamarlaşdırmaq üçün mişar maşını istifadə edirik. Mini USB kabeli üçün delik açmağı da unutmaq istəmirsiniz (belə şeylərə meylli olan çox diqqət mərkəzində olmayan bir istehsalçı eşitmişəm: D).

Arxa panelin kəsilməsini bitirdikdən sonra onu vinil bantla sarmağa davam edə bilərik. Sadəcə iki parçanı lazımi ölçüdə kəsirik və birincisini bir tərəfə tətbiq edirik. Sonra jantları kəsdik və pəncərəni sərbəst buraxdıq. Saç qurutma maşını bütün deliklərin yenidən görünməsinə kömək edə bilər, buna görə də onları da kəsə bilərik. Eyni şeyi digər tərəf üçün etdikdən sonra, arxa panelimiz üçün kiçik akril pəncərəni düzəltmək üçün növbəti şablonumuzu və cızma -qırma texnikamızı istifadə edirik.

Addım 4: LED Panel hazırlayın

LED Panel hazırlayın
LED Panel hazırlayın
LED Panel hazırlayın
LED Panel hazırlayın
LED Panel hazırlayın
LED Panel hazırlayın

İndi bu layihənin ən mənalı nöqtəsinə gəldik. LED Panel.

Bir metal təbəqədən 12, 2 sm x 8 sm ölçüdə bir parça kəsmək üçün metal kəsmə qayçımızdan istifadə edirik. Bunu edərkən diqqətli olun, çünki qayçı çox kəskin kənarları yaradır. Faylımız və bir az zımpara ilə bunları düzəldəcəyik. Sonra vintlər və tellər üçün deliklər qazmaq üçün növbəti şablonumuzu əlavə edirik.

Həqiqi LED -ləri hazırlamaq vaxtıdır.

Əvvəlcə hər birini 6 LED -dən ibarət üç zolağa kəsdik. Bəzi LED şeritləri çox nazik bir yapışqan təbəqə ilə gəlir və ya ümumiyyətlə yapışqan yoxdur, buna görə də zolaqlarımızı iki tərəfli bir lentə yapışdırıb bıçaqla ölçüsündə kəsəcəyik. Bu, metal lövhəyə yapışacaq və bu, peşəkar bir həll olmasa da, altındakı metal səthdən mis yastıqları izolyasiya edəcək.

Şeritləri lövhəyə yapışdırmadan əvvəl onu spirtlə təmizləyirik. LEDləri bağlayarkən, onları doğru yerə və doğru istiqamətə qoyduğumuzdan əmin olmalıyıq. LED şeridindəki kiçik oxlar, məlumatların zolaqdan keçdiyi istiqaməti göstərir.

Beşinci şəkildə gördüyünüz kimi, məlumat xəttimiz panelin sol üst küncündən gəlir, ilk zolaqdan sağ tərəfə qədər gedir, soldakı aşağıdakı zolağın əvvəlinə qayıdır və s.. Beləliklə, bütün oxlarımız sağ tərəfə işarə etməlidir.

Gəlin lehimləmə ionumuzu qızdıraq və mis yastıqlara, eləcə də telimizin üstünə bir az qalay qoyaq. Məlumat xətləri yeni təsvir etdiyim kimi bağlanır, sadəcə zolağın artı və eksi yastıqlarını paralel olaraq bağlayırıq.

Şeritler bağlandıqdan sonra, LED -i aşağı tutarkən bıçağımızdan istifadə edərək hər bir şeridin uclarını diqqətlə qaldırırıq, buna görə də yuxarıya baxırlar. Sonra lehimləmə yerlərimizi izolyasiya etmək üçün altına bir az isti yapışqan qoyduq.

Bunu etdikdən sonra, PCB -yə gedən tellərə bir neçə başlıq sancağı əlavə edirik. Bu tellərin uzunluğu təxminən 16 sm olmalıdır. Metal panelin heç bir şey qısaltmadığından əmin olmaq üçün bütün pinlər arasındakı müqaviməti ölçmək üçün bir Multimetrdən istifadə edirik. 1kOhm -dan yuxarı bir şey göstərirsə, hər şey qaydasındadır.

İndi bir Arduinoya bağlaya bilərik, strandtest keçirə və rənglərdən zövq ala bilərik.

Addım 5: İşıq Kılavuzu hazırlayın

İşıq bələdçisi yaradın
İşıq bələdçisi yaradın
İşıq bələdçisi yaradın
İşıq bələdçisi yaradın
İşıq bələdçisi yaradın
İşıq bələdçisi yaradın
İşıq bələdçisi yaradın
İşıq bələdçisi yaradın

Led panelimizi sütlü akrilin arxasına qoysaq, fərdi LED -ləri ayırmaq olduqca çətin ola bilər. Bu, saatımızı oxumağı indikindən daha da çətinləşdirərdi.

Bu problemi həll etmək üçün özümüzü bir az işıq bələdçisi edəcəyik. Bunun üçün ön panellə eyni ölçüdə olan başqa bir MDF parçasını kəsdik. Daha sonra ona başqa bir şablon əlavə edirik və LED -lər üçün on səkkiz 3, 5 mm -lik deliklər və içindəki vintlər üçün 4, 5 mm -lik 4 delik açırıq. Daha sonra ön panelə bağlayaraq ikisini hizalamaq üçün zımpara kağızı istifadə edə bilərik.

Son şəkildən də gördüyünüz kimi, işıq indi daha çox fokuslanmış görünür.

Addım 6: Düymə Çərçivəsini düzəldin

Düymə Çərçivəsini düzəldin
Düymə Çərçivəsini düzəldin
Düymə Çərçivəsini düzəldin
Düymə Çərçivəsini düzəldin
Düymə Çərçivəsini düzəldin
Düymə Çərçivəsini düzəldin

Hazırlayacağımız son korpus komponenti düymə çərçivəsidir.

Yenidən MDF parçasını lazımi ölçüdə kəsirik və ona şablon əlavə edirik, sonra bütün lazımi delikləri qazırıq və orta hissəni kəsmək üçün mişar testeremizi istifadə edirik.

Çərçivəmizin 4 toxunma düyməsini, işıq sensorunu və kiçik dinamikimizi yerində tutması nəzərdə tutulur. Çərçivəyə yapışdırmadan əvvəl, MDF -dən bir neçə kiçik örtük parçası kəsdik. Sonra komponentlərimizi həmin qapaqlara isti yapışdırırıq və onlara tellər əlavə edirik.

Toxunma düyməsinin güc yastıqları paralel olaraq bağlanır, hər çıxış xətti ayrı bir tel alır. Hamısının işlədiyini yoxlamaq üçün də yaxşı bir an. İşıq sensoru bir tərəfdən 5 Volta ehtiyac duyduğundan, sadəcə VCC yastıq siqnalizasiya düymələrinə bağlaya və digər ayağına bir tel lehimləyə bilərik.

Panellər hazırlandıqdan sonra, onlara və tellərinə yer açmaq üçün çərçivənin kənarlarını kəsdik.

Sonra bütün tozları tozsoranla təmizləyirik və vinil paketlə örtürük.

Həssas bıçaqdan toxunma modullarımızın həssas yerlərinin üstündəki vinil parçalarını çıxarmaq üçün istifadə edirik. Bəzi iki tərəfli lentlə MDF -ə öz düymələrimizi bağlaya bilərik. Düymələrimi kauçuk köpükdən düzəltdim, bu onlara gözəl, yumşaq bir toxuma verir, ancaq istədiyiniz metal olmayan materialdan istifadə edə bilərsiniz.

Çərçivədə, MDF -dən bir az da azad etmək üçün bıçağımızdan istifadə edirik ki, bu da bizə isti yapışqan üçün tutqun bir səth verir. Sonra nəhayət komponentləri çərçivəmizin kənarlarına yapışdıra bilərik.

Addım 7: Əsas PCB -ni lehimləyin

Əsas PCB -ni lehimləyin
Əsas PCB -ni lehimləyin
Əsas PCB -ni lehimləyin
Əsas PCB -ni lehimləyin
Əsas PCB -ni lehimləyin
Əsas PCB -ni lehimləyin

Çərçivəni olduğu kimi buraxaq və PCB -yə keçək. İlk şəkildə PCB düzülüşünü görə bilərsiniz.

Ən aşağı profilli komponentləri devre kartına yerləşdirərək başlayırıq. Ən kiçik komponentlər bir az gec xatırladığım tel körpülərdir, buna görə rezistorlardan başladım. Komponentlərimizi yerində lehimləyirik və növbəti yüksək komponentlər qrupuna keçirik.

Növbəti yerdə qadın başlıq pinlərimiz var. Bir az yerə qənaət etmək və elektronikanı yan tərəfdən bağlaya bilmək üçün bunları 90 dərəcə bir açı ilə bağlayırıq.

Transistorlar PCB -nin 2, 54 mm -lik çuxur aralığına tam uyğun gəlmir, buna görə də ayaqlarımızı diqqətlə ikinci şəkildə göstərilən formaya bükmək üçün istifadə edirik. Əvvəlcə ayaqlarından birini yerə lehimləyirik və PCB -ni çeviririk. Sonra lehimləmə birləşməsini yenidən qızdırırıq və komponenti düzgün yerləşdirmək üçün barmağımızdan və ya bir cüt pensdən istifadə edirik. İndi digər iki ayağı yerində lehimləyə bilərik.

Bütün kiçik komponentlərdən sonra Arduino və real vaxt saat modulumuzu yerində lehimləyirik. RTC modulu dəlik aralığına o qədər də uyğun gəlmir, buna görə də yalnız başlıq sancaqları olan 7 lehimləmə yastığı olan tərəfi təchiz edəcəyik. Qısaqapanmaların qarşısını almaq üçün altına bir az lent də qoyuruq.

Bütün komponentlərimiz yerində lehimləndiyindən, lövhənin digər tərəfində əlaqə qurmağın vaxtı gəldi. Bunun üçün izolyasiya edilməmiş telimizi çıxaracağıq. Düzləşdirmək üçün bir cüt pens istifadə edilə bilər. Sonra teli kiçik parçalara ayırıb PCB -yə lehimləyirik.

Bir əlaqə yaratmaq üçün bir lehimləmə birləşməsini qızdırırıq və teli daxil edirik. Sonra lehimləmə ionunu lazımi temperatura çatana və lehim onu bağlayana qədər saxlayırıq və şəkildəki kimi bir birləşmə əldə edirik. Teli qızdırmasaq, digər nümunəyə bənzər və çox yaxşı keçirməyən soyuq birləşmə ilə nəticələnə bilərik. Lehim edərkən teli aşağı itələmək və PCB -yə düz bir şəkildə qoyulduğundan əmin olmaq üçün tel kəsicimizdən istifadə edə bilərik. Daha uzun bağlantı yollarında, bir küncə və ya növbəti komponentə çatana qədər hər 5-6 delikdən bir yastığa lehimləyirik.

Bir küncdə, bir lehimləmə yastığının birinci yarısının üstündəki teli kəsdik və ucunu ona lehimləyirik. Sonra yeni bir tel parçası götürürük və oradan düzgün bir açı ilə davam edirik.

Bu boş tel əlaqələrini düzəltmək olduqca çətindir və bir az bacarıq tələb edir, buna görə də bunu ilk dəfə edirsinizsə, əslində bunu etməyə çalışmazdan əvvəl onu qırıntı PCB üzərində tətbiq etmək heç də pis fikir deyil.

Lehimləmə bitdikdən sonra əlaqələri yenidən yoxlayırıq və heç bir qısa dövrə meydana gətirmədiyimizdən əmin oluruq. Sonra PCB -ni düymə çərçivəsinə qoya bilərik və lazımi çərçivə tel uzunluqları üçün istinad olaraq istifadə edə bilərik. Sonra həmin telləri lazımi uzunluğa kəsdik və onlara kişi başlıq sancaqları əlavə etdik.

Dokunmatik düymələrin bütün 5V və torpaq əlaqələri 2pinli bir konnektora bir araya gəlir, 4 çıxış telləri 4pinli bir konnektora və işıq sensoru xəttinə, həmçinin iki dinamik telinin üç pinli bir konnektora birləşdirilmişdir. Hər bir prizin və konnektorun bir tərəfini iti ucu və ya lentlə qeyd etməyi unutmayın, buna görə təsadüfən onları yanlış şəkildə bağlamayın.

Addım 8: Saatı yığın

Saatı yığın
Saatı yığın
Saatı yığın
Saatı yığın
Saatı yığın
Saatı yığın
Saatı yığın
Saatı yığın

Bundan sonra ön panelə qayıtdım və son toxunuş olaraq şəffaf lazer printer folqasından hazırlanmış bir etiket diqqətlə çəkdim.

Çox həssaslıqla tətbiq etsəm də, təəssüf ki, daha yaxından araşdırıldıqda aydın görünən baloncuksuz bir nəticə əldə edə bilmədim. Folqa da künclərə çox yaxşı yapışmır, buna görə də bu həlli həqiqətən tövsiyə edə bilmərəm.

Yəqin ki, daha yaxşı bir etiket ilə edilə bilər və ya rəsm çəkməkdə yaxşı olsanız, ədədləri iti ilə əlavə edə bilərsiniz.

İndi bütün komponentlərə sahibik və saatımızı yığa bilərik.

İşıq bələdçisini və ön paneli bir araya gətirərək başlayırıq. Bütün 4 bolt içəri daxil olduqdan sonra iki paneli hizalayırıq və sonra sıxırıq. Bir neçə qoz -fındıq daha sonra istiqamətə nəzər salmalı olduğumuz işıq paneli gəlir. Kabel yuxarıda olmalıdır.

Üçüncü parça, düymə çərçivəsidir. Unutmayın ki, ön tərəfdən baxanda dinamik saatın sağ tərəfində olmalıdır. Led panelinizin kabelini yerinə düzəltməzdən əvvəl çərçivənin ortasından çəkin.

İndi ön montaj dəstəyini qoyduq və arxa panelə keçirik. Şəkildə, mənim özüm hazırladığım 90 dərəcə mini USB Adapteri də görə bilərsiniz. Mən sizə uyğun bir adapter bağladım, buna görə də bu cür qarışıqlıqla məşğul olmayacaqsınız. Sadəcə adapterinizi qoşa və kabeli arxa paneldəki delikdən keçirə bilərsiniz.

Kiçik pəncərəni düzəltmək üçün M3 vintlərimizi və PCB ayırıcılarımızı götürürük. Akrili zədələmək istəmədiyimiz üçün vintləri diqqətlə sıxmaq vacibdir. Sonra PCB -ni götürürük, adapterimizi bağlayırıq və aralıqlara bağlayırıq. Komponent tərəfi pəncərəyə baxmalı, Arduinonun USB portu saatın altına baxmalıdır.

Sonra polariteyi nəzərə alaraq bütün bağlayıcıları ön montajdan bağlayırıq və bütün telləri saata diqqətlə sıxırıq. Arxa panellə bağlaya bilərik və qalan 4 kilid qozunu sıxa bilərik.

Sonda, hər bir panelin hər tərəfində bir yuyucunun olmasını istəyirsən, işıq bələdçisi isə birbaşa ön panelin arxasına yerləşdirilir. İşıq bələdçisi ilə led panel arasında bir düymə və daha iki düymə çərçivəsindən ayıran bir qozumuz var. Bunu son şəkildən də görə bilərsiniz.

40 mm uzunluğunda qısa boltlar istifadə etdiyim üçün, arxa paneli və çərçivəni bir -birindən ayıran yalnız 3 qoz -fındıq var. Doğru 45 mm boltlarla buraya başqa bir qoz əlavə edərdiniz, həm də bir və ya iki əlavə yuyucu. Montajın sonunda hər şey yerində qalması üçün kilid qozumuz var.

Addım 9: Kodu yükləyin və İşıq Sensorunu Kalibr edin

Kodu yükləyin və İşıq Sensorunu Kalibr edin
Kodu yükləyin və İşıq Sensorunu Kalibr edin
Kodu yükləyin və İşıq Sensorunu Kalibr edin
Kodu yükləyin və İşıq Sensorunu Kalibr edin
Kodu yükləyin və İşıq Sensorunu Kalibr edin
Kodu yükləyin və İşıq Sensorunu Kalibr edin

Kodumuzu yükləmə vaxtıdır.

Əvvəlcə bütün lazımi faylları yükləyirik və açırıq. Arduino kitabxana qovluğumuzu açırıq və bütün yeni kitabxanaları içəri salırıq.

İndi saatın avtomatik dimmer funksiyası üçün bizə parlaq və qaranlıq dəyərləri əldə edəcək işıq sensoru kalibrləmə eskizini açırıq. Yükləyirik, serial monitoru açırıq və ekrandakı təlimatları izləyirik.

Bunu etdikdən sonra ikili saatların həqiqi kodunu açırıq və iki dəyəri yalnız ölçdüyümüzlə əvəz edirik.

Bütün digər pəncərələri bağlayırıq, kodu saatımıza yükləyirik və işimiz bitdi.

Yeni gadgetımızla oynamaq vaxtıdır.

Addım 10: İkili Sistemə Tez Giriş

İkili sistemə qısa bir giriş
İkili sistemə qısa bir giriş
İkili sistemə qısa bir giriş
İkili sistemə qısa bir giriş
İkili sistemə qısa bir giriş
İkili sistemə qısa bir giriş
İkili sistemə qısa bir giriş
İkili sistemə qısa bir giriş

Davam etməzdən əvvəl, ehtimal ki, artıq beyninizdən keçən bir suala cavab vermək istərdim, "Dünyada bu saatı necə oxuyursan?"

Bunun üçün sizə ikili sistem haqqında qısa bir məlumat vermək istərdim.

Hər bir rəqəm 0 -dan 9 -a qədər olan 10 fərqli vəziyyətə sahib ola biləcəyi ondalık sistemi ilə tanışıq. ikili nömrə göstərin.

Onluqda 9 -dan çox olan rəqəmləri göstərmək üçün daha çox rəqəm əlavə edirik. Hər rəqəm müəyyən bir çarpanla gəlir. Sağdakı ilk rəqəm 1 çarpanı ilə gəlir, sonrakı rəqəm 10, sonrakı rəqəm 100 -dir. Hər yeni rəqəmlə vurucu əvvəlki rəqəmin on qat böyükdür. Beləliklə, bilirik ki, iki rəqəmi bir rəqəm sola qoyulur, 20 sayını təmsil edir. İki rəqəm sola, 200 -ə bərabərdir.

İkili sistemdə hər bir rəqəm də bir çarpanla gəlir. Bununla birlikdə, hər bir rəqəmin yalnız iki fərqli vəziyyəti ola biləcəyi üçün hər yeni çarpan əvvəlkindən iki dəfə böyükdür. Yeri gəlmişkən, ikili rəqəmlərə Bits deyilir. Beləliklə, ilk nümunəmizə nəzər salaq, əgər 1 -i ən aşağı mövqeyə qoysaq, bu sadə 1 -dir, amma çarpanımızın 2 olduğu növbəti yüksək mövqedə yerləşdirsək, ikilikdə 2 rəqəmini təmsil edir.

Şəklin altındakı bir az daha mürəkkəb nümunə. Üçüncü və ilk bitlər hazırdır. Burada göstərilən ondalık sayını əldə etmək üçün sadəcə iki bitin dəyərlərini əlavə edirik. Beləliklə 4 * 1 + 1 * 1 və ya 4 + 1 bizə 5 rəqəmini verir.

8 bit bir bayt olaraq adlandırılır, buna görə də bütün bir baytı bir ədədlə doldursaq hansı rəqəmə sahib olduğumuzu görək.1+2+4+8+16+32+64+128, bir baytın sahib ola biləcəyi ən yüksək dəyər olan 255 -dir.

Yeri gəlmişkən, ondalık sistemində ən yüksək çarpan olan rəqəm həmişə birinci yerdə olsa da, rəqəmi ikili olaraq yazmağın iki yolu var. Bu iki üsul ən az bayt birinci (LSB) və ən əhəmiyyətli bayt birinci (MSB) adlanır. İkili ədəd oxumaq istəyirsinizsə, bu iki formatdan hansının istifadə edildiyini bilməlisiniz. Ondalık sistemə daha yaxın olduğu üçün ikili saatımız MSB variantından istifadə edir.

Gerçək dünya nümunəmizə qayıdaq. Altıncı şəkildə vurğulandığı kimi, saatımızı göstərmək üçün 4 bit var. Bir dəqiqə üçün 6 bit, ikincisi üçün 6 bit var. Əlavə olaraq tək bir am/pm bitimiz var.

Tamam, 6 -cı şəkildəki saatın nə olduğunu söyləyin, axırıncıya keçməyin.. ….

saat bölməsində 3+2 olan 2+1 -ə sahibik və axşam biti belədir, axşamdır. Sonrakı dəqiqə 32+8, yəni 40. Saniyələrdə 14+8+4+2 var. Yəni saat 3:40:14 və ya 15:40:14.

Təbrik edirəm, ikili saat oxumağı öyrənmisən. Əlbəttə ki, bir az alışmaq lazımdır və əvvəlcə nömrələri bir araya gətirməli olacaqsan, hər dəfə saatın nə vaxt olduğunu bilmək istəyirsən, amma zəng etmədən analog saata bənzər şəkildə LED -in naxışlarına öyrəşirsən. vaxt.

Və bu, ikili sistem kimi mücərrəd bir şeyi real dünyaya aparmaq və daha yaxşı tanımaqla bağlı olan bu layihənin bir hissəsidir.

Addım 11: İkili Zəngli Saatdan istifadə edin

İkili Zəngli Saatdan istifadə
İkili Zəngli Saatdan istifadə
İkili Zəngli Saatdan istifadə
İkili Zəngli Saatdan istifadə
İkili Zəngli Saatdan istifadə
İkili Zəngli Saatdan istifadə

İndi nəhayət saatla oynamaq istəyirik, buna görə idarəetmələrə qısa bir nəzər salaq.

Proqram bir düyməni, iki dəfə vurmağı və uzun vurmağı ayırd edə bilər. Beləliklə, hər bir düymə birdən çox hərəkət üçün istifadə edilə bilər.

Yuxarı və ya aşağı düyməsinə iki dəfə vurmaq LED -in rəng rejimini dəyişir. Fərqli statik və solğun rəng rejimləri ilə bir temperatur rejimi arasında seçim edə bilərsiniz. Statik rəng rejimlərindən birində olsanız, yuxarı və ya aşağı düyməni basıb saxlayın, rəng dəyişir. Solma rejimində bir klik animasiyaların sürətini dəyişir.

Qaranlıq rejimini qurmaq üçün ok düyməsini iki dəfə vurun. Led panel bir neçə dəfə yanıb -sönməklə təyin edilmiş rejimi göstərir.

  • Bir zaman dimmer olmaması deməkdir.
  • İki dəfə parlaqlıq işıq sensoru tərəfindən idarə olunur.
  • Üç dəfə və LEDlər 10 saniyəlik hərəkətsizlikdən sonra avtomatik olaraq sönür.
  • Dörd dəfə və hər iki dimmer rejimi birləşdirilir.

Ok düyməsini uzun müddət basmaq sizi nömrəni dəyişdirmək üçün yuxarı və aşağı oxlardan istifadə edə biləcəyiniz vaxt qurma rejiminə gətirəcək. Ok düyməsinə bir dəfə vurmaq sizi saatlardan dəqiqələrə aparır, bir dəfə daha vurun və saniyələri təyin edə bilərsiniz. Bundan sonra, son bir klik yeni vaxta qənaət edir. Vaxt tənzimləmə rejiminə daxil olsanız, sadəcə 10 saniyə gözləyə bilərsiniz və saat avtomatik olaraq onu tərk edəcək.

OK düyməsindəki kimi, həyəcan düyməsini uzun müddət basmaq, həyəcanı qurmağa imkan verir. Siqnal düyməsinə iki dəfə vurmaq həyəcanı aktivləşdirir və ya söndürür.

Saat zəng çalırsa, siqnalizasiyanı 5 dəqiqə yuxuya göndərmək və ya basıb saxlamaq, siqnalizasiyanı deaktiv etmək üçün siqnalizasiya düyməsini bir dəfə vurursunuz.

Bu, saatın indiyə qədər malik olduğu bütün funksiyalar idi. Ən son firmware versiyasını yükləsəniz, gələcəkdə əldə edə biləcəyiniz daha çox əlavə edə bilərəm.

Addım 12: Kodu anlayın (isteğe bağlı)

Kodu anlamaq (isteğe bağlı)
Kodu anlamaq (isteğe bağlı)

Bilirəm ki, bir çox insan proqramlaşdırmağı çox sevmir. Xoşbəxtlikdən bu insanlar üçün, bu ikili saatı qurmaq və istifadə etmək üçün heç bir proqramlaşdırma biliyinə ehtiyac yoxdur. Proqramlaşdırma tərəfinə əhəmiyyət verməsəniz, bu addımı atlaya bilərsiniz.

Ancaq kodlaşdırma hissəsi ilə maraqlanırsınızsa, sizə proqram haqqında ümumi bir məlumat vermək istərdim.

Saat kodunun hər bir xırda detalını izah etmək öz -özünə bir təlimat ola bilər, buna görə proqramı obyekt yönümlü şəkildə izah edərək sadə saxlayacağam.

Bunun nə demək olduğunu bilmirsinizsə, obyekt yönümlü proqramlaşdırma (OOP) C ++ kimi ən müasir proqramlaşdırma dilləri anlayışıdır. Fərqli funksiyaları və dəyişənləri sözdə siniflərdə təşkil etməyə imkan verir. Sinif, bir və ya birdən çox obyekt yarada biləcəyiniz bir şablondur. Bu obyektlərin hər biri bir ad alır və öz dəyişənlər dəstinə malikdir.

Məsələn, saatın kodu alarmButton kimi bir neçə MultiTouchButton obyektindən istifadə edir. Bunlar Button kitabxanamın bir hissəsi olan MultiTouchButton sinifindəki obyektlərdir. Bu obyektlərin maraqlı tərəfi ondadır ki, onlarla real dünya obyektlərinə bənzər şəkildə əlaqə qura bilərsiniz. Məsələn, alarmButton.wasDoubleTapped () zəng edərək siqnalizasiya düyməsinə iki dəfə vurulduğunu yoxlaya bilərik. Bundan əlavə, bu funksiyanın tətbiqi fərqli bir faylda gözəl gizlənir və kodumuzdakı başqa bir şeyi dəyişdirərək onu pozmaqdan narahat olmuruq. Adafruit veb saytında obyekt yönümlü proqramlaşdırma dünyasına sürətli bir giriş tapa bilərsiniz.

Yuxarıdakı qrafikdə gördüyünüz kimi, saatlar proqramında bir çox fərqli obyekt var.

Giriş siqnallarını bir vuruş, ikiqat vurma və ya uzun basma kimi şərh edə bilən düymə obyektlərindən danışdıq.

Jukebox, adından da göründüyü kimi, səs -küy yarada bilər. Kiçik bir natiq vasitəsilə çalınacaq bir neçə melodiya var.

BinaryClock obyekti vaxtı və həyəcan siqnalını, habelə həyəcan izləməni idarə edir. Bundan əlavə, rtc modulundan vaxt alır və onu ledPanel üçün ikili məlumat tamponuna çevirir.

ColorController, bütün rəng effekti funksiyalarını əhatə edir və ledPanel üçün colorBuffer təmin edir. Arduinos EEProm -da vəziyyətini saxlayır.

Dimmer, saatların parlaqlığına diqqət yetirir. İstifadəçinin keçə biləcəyi fərqli rejimlər var. Mövcud rejim EEProm -da da saxlanılır.

LEDPanel, hər bir LED -in rəng dəyəri, parlaqlıq dəyəri və ikili vəziyyəti üçün fərqli tamponları idarə edir. PushToStrip () funksiyası çağırıldıqda, bunları üst -üstə qoyur və onları LED şeridinə göndərir.

Bütün obyektlər 3 əsas vəzifəni yerinə yetirmək üçün yalnız bir neçə funksiyanı özündə birləşdirən əsas (quraşdırma və döngə funksiyaları olan fayl) vasitəsi ilə "bağlıdır".

  1. İstifadəçi girişini şərh etmək - 4 düyməli obyektlərin girişini əldə edir və onları məntiqlə qoyur. Bu məntiq, saatın normal vəziyyətində olub olmadığını müəyyən etmək üçün saatın cari vəziyyətini yoxlayır və vaxt qurma və ya zəng etmə rejiminə uyğun olaraq digər obyektlərdən fərqli funksiyaları çağırır.
  2. Obyektlər arasında ünsiyyətin idarə edilməsi - Yeni məlumatın olub olmadığını və ya həyəcan siqnalı çalırsa (binaryClock) obyektini daim soruşur. Yeni bir məlumat varsa, binaryClock -dan informationBuffer alır və onu ledPanel obyektinə göndərir. Saat zəng çalırsa, musiqi qutusu işə düşür.
  3. Obyektlərin yenilənməsi - Proqramın hər bir obyektində girişlərin yoxlanılması və ya LED -in rənglərinin dəyişdirilməsi kimi işlər üçün istifadə olunan bir yeniləmə proseduru var. Saatın düzgün işləməsi üçün döngə funksiyasında dəfələrlə çağırılmalıdır.

Bu, ayrı -ayrı kod parçalarının birlikdə necə işlədiyinə dair ümumi bir anlayış verməlidir. Daha konkret suallarınız varsa, sadəcə məndən soruşa bilərsiniz.

Kodum qüsursuzdan uzaq olduğundan gələcəkdə daha da təkmilləşdirəcəyəm, buna görə də bir neçə funksiya dəyişə bilər. OOP ilə əlaqəli ən maraqlı şey, hələ də çox oxşar bir şəkildə işləyəcəyi və hələ də bunu başa düşmək üçün qrafikdən istifadə edə biləcəyinizdir.

Addım 13: Son sözlər

Son sözlər
Son sözlər

Bu nöqtəyə qədər oxumağa davam etməyinizə sevindim. Bu o deməkdir ki, layihəm çox cansıxıcı deyildi:).

Bu kiçik saata bir çox iş qoydum və sizin sənədlərinizi və videonuzu daha da çox işlədi, sizin üçün asanlaşdırmaq üçün öz İkili Zəngli Saatınızı qurmaq. Ümid edirəm səylərimə dəyərdi və gələcək həftə sonu layihəniz üçün əla bir fikir əldə edə bilərəm və ya heç olmasa sizə ilham verə bilərəm.

Aşağıdakı şərhlərdə saat haqqında nə düşündüyünüzü eşitmək istərdim:).

Hər təfərrüatı əhatə etməyə çalışsam da, ola bilsin ki, bir və ya iki şeyi qaçırmışam. Buna görə də hər hansı bir sualınız varsa soruşmaqdan çekinmeyin.

Həmişə olduğu kimi oxuduğunuz və xoşbəxt etdiyiniz üçün çox sağ olun.

LED müsabiqəsi 2017
LED müsabiqəsi 2017
LED müsabiqəsi 2017
LED müsabiqəsi 2017

LED yarışmasında 2017 -ci ildə ikinci yeri tutdu

Tövsiyə: