Spisu treści:

Budzik binarny oparty na Arduino: 13 kroków (ze zdjęciami)
Budzik binarny oparty na Arduino: 13 kroków (ze zdjęciami)

Wideo: Budzik binarny oparty na Arduino: 13 kroków (ze zdjęciami)

Wideo: Budzik binarny oparty na Arduino: 13 kroków (ze zdjęciami)
Wideo: Budzik oparty o mikrokontroler Arduino - Praca zaliczeniowa 2024, Lipiec
Anonim
Image
Image

By Basement EngineeringObserwuj więcej autora:

DIY laserowy licznik ludzi
DIY laserowy licznik ludzi
Budowa łodzi samojezdnej (ArduPilot Rover)
Budowa łodzi samojezdnej (ArduPilot Rover)
Budowa łodzi samojezdnej (ArduPilot Rover)
Budowa łodzi samojezdnej (ArduPilot Rover)
Idealna lampka nocna i stacja dokująca
Idealna lampka nocna i stacja dokująca
Idealna lampka nocna i stacja dokująca
Idealna lampka nocna i stacja dokująca

O: Cześć, nazywam się Jan i jestem twórcą, uwielbiam budować i tworzyć rzeczy, a także jestem całkiem dobry w naprawianiu rzeczy. Odkąd myślę, że zawsze lubiłem tworzyć nowe rzeczy i to robię do… Więcej o inżynierii piwnic »

Hej, Dzisiaj chciałbym pokazać, jak zbudować jeden z moich najnowszych projektów, mój binarny budzik.

W Internecie jest mnóstwo różnych zegarów binarnych, ale może to być pierwszy, wykonany z paska kolorowych adresowalnych diod LED, który ma również funkcję alarmu i przyciski dotykowe, aby ustawić takie rzeczy, jak czas i kolor.

Proszę, nie pozwól, aby ten skomplikowany wygląd Cię odstraszył. Z małym wyjaśnieniem, czytanie binarne nie jest tak trudne, jak się wydaje. A jeśli chcesz nauczyć się czegoś nowego, chętnie pomogę Ci w tym później.

Pozwól, że opowiem ci trochę o historii tego projektu:

Pierwotnie planowałem zbudować "normalny" zegar, który używa diod LED jako wskazówek, ale nie miałem pod ręką wystarczającej liczby diod LED.

Więc, co robisz, gdy chcesz wyświetlać czas za pomocą jak najmniejszej liczby diod LED?

Przechodzisz w tryb binarny i dokładnie to zrobiłem tutaj.

Ten zegar jest trzecią wersją tego rodzaju. Zbudowałem bardzo prosty prototyp zaraz po tym, jak trafił mi się pomysł na projekt i zabrałem go na Maker Faire w Hanowerze, aby zobaczyć, co ludzie o nim myślą. Kiedy tam byłem, otrzymałem wiele bardzo pozytywnych i interesujących opinii, a także pomysłów na ulepszenia.

Rezultatem tych wszystkich pomysłów i godzin myślenia, majsterkowania i programowania jest ten dość ciekawie wyglądający mały budzik, który ma o wiele więcej funkcji niż wersja 1.0, a dzisiaj przejdziemy przez każdy etap procesu budowania, więc możesz z łatwością sam zbuduj.

Istnieje również bardzo szczegółowy film na Youtube, na wypadek, gdybyś nie chciał czytać wszystkiego.

Krok 1: Zdobądź swoje rzeczy

Zdobądź swoje rzeczy
Zdobądź swoje rzeczy
Zdobądź swoje rzeczy
Zdobądź swoje rzeczy
Zdobądź swoje rzeczy
Zdobądź swoje rzeczy

Oto mała lista wszystkich komponentów i narzędzi, które będą potrzebne do zbudowania własnego zegara binarnego.

Elektronika:

  • 18 adresowalnych diod LED Ws2811 (np. Neopixels) na pasku z 60 diodami LED na m (ebay)
  • Arduino Nano (z procesorem ATMega328) (ebay)
  • 1307 Moduł RTC (ebay)
  • 4x pojemnościowe przyciski dotykowe (ebay)
  • Cyfrowy czujnik temperatury bs18b20 (ebay)
  • LDR (ebay)
  • Głośnik laptopa/smartfona lub brzęczyk piezo
  • Tranzystor NPN 2222A (lub coś podobnego)
  • męskie nagłówki
  • kątowe nagłówki żeńskie (ebay)
  • Rezystor 1kOhm
  • Rezystor 4,7kOhm
  • Rezystor 10kOhm
  • Przewody
  • 7x5cm prototypowanie PCB 24x18 otworów (ebay)
  • drut srebrny (drut jubilerski) (ebay)
  • Adapter mini USB 90° (ebay)

Inne materiały

  • Folia winylowa
  • Śruby z łbem kołnierzowym 4X 45mm m4 (ebay)
  • Podkładki metalowe 32X m4
  • Nakrętka zabezpieczająca 4X m4
  • Nakrętka 28X m4
  • Dystans 4X 10mm m3 mosiądzu PCB (ebay)
  • Śruba 8X 8mm m3 (ebay)
  • blacha aluminiowa
  • 2 mm arkusz mlecznego akrylu
  • 2mm arkusz przezroczystego akrylu
  • 3 mm arkusz MDF
  • taśma dwustronna

Narzędzia

  • kabel mini USB
  • komputer z Arduino IDE
  • Wiertło 3, 5 mm
  • Wiertło 4, 5 mm
  • wiertarka elektryczna
  • nóż do cięcia
  • radzenie sobie piła
  • jon lutowniczy
  • nożyczki do cięcia metalu
  • plik
  • papier ścierny

Szablony (teraz z wymiarami)

  • PDF
  • Losowanie Libre Office

Kod

  • Szkice
  • Biblioteka przycisków
  • Biblioteka timerów
  • Biblioteka szafy grającej
  • Zmodyfikowany RTClib
  • Biblioteka Adafruit Neopixel
  • Arduino-Kontrola-Temperatury-Biblioteka

Krok 2: Przytnij przedni i tylny panel

Wytnij przedni i tylny panel
Wytnij przedni i tylny panel
Wytnij przedni i tylny panel
Wytnij przedni i tylny panel
Wytnij przedni i tylny panel
Wytnij przedni i tylny panel
Wytnij przedni i tylny panel
Wytnij przedni i tylny panel

Pierwszym elementem, który wykonamy, jest akrylowy panel przedni. Zaznaczamy, gdzie chcemy, aby poszły nasze cięcia, pamiętając jednocześnie, że chcemy mieć trochę tolerancji na szlifowanie. Następnie po prostu zeskrobujemy akryl naszym nożem do cięcia. Po zrobieniu tego 10 do 20 razy mamy groove. Następnie możemy umieścić ten gaj na krawędzi stołu i zgiąć akryl, aż pęknie.

Po przycięciu przedniego panelu na wymiar wycinamy tylny panel z kawałka płyty MDF. Możemy do tego użyć naszej piły do strugarek, ale nóż do cięcia również się sprawdza. Wystarczy przymocować MDF do kawałka drewna i zeskrobać go nożem do cięcia, aż ostrze przejdzie i mamy dwa pojedyncze kawałki.

Teraz łączymy ze sobą dwa panele i szlifujemy każdą stronę, aby idealnie dopasować.

Po wykonaniu tej czynności wycinamy pierwszy szablon i kładziemy go na dwóch panelach za pomocą taśmy i zaczynamy wiercić zaznaczone otwory.

Najpierw wiercimy otwór 4, 5 mm w każdym z 4 rogów. Ponieważ akryl jest bardzo kruchy i nie chcemy, aby się złamał, zaczniemy od małego wiertła i będziemy szli w górę, aż do osiągnięcia pożądanej średnicy otworu. Następnie za pomocą szablonu szlifujemy rogi do odpowiedniego kształtu.

Krok 3: Zakończ tylny panel

Zakończ tylny panel
Zakończ tylny panel
Zakończ tylny panel
Zakończ tylny panel
Zakończ tylny panel
Zakończ tylny panel
Zakończ tylny panel
Zakończ tylny panel

Na razie możemy odłożyć przedni panel na bok i przykleić drugi szablon do tylnego panelu, gdzie musimy użyć wiertła 3,5 mm, aby wywiercić otwory na nasze 4 wsporniki PCB, a także 4 otwory oznaczające krawędzie za małe tylne okno.

Następnie używamy naszej piły do wycinania krawędzi, aby wyciąć okno i wygładzić krawędzie za pomocą pilnika. Nie można też zapomnieć o wywierceniu otworu na kabel mini USB (słyszałem o jednym niezbyt skupionym twórcy, który ma tendencję do robienia takich rzeczy:D).

Ponieważ zakończyliśmy już wycinanie tylnego panelu, możemy przystąpić do owinięcia go folią winylową. Po prostu przycinamy dwa kawałki do odpowiedniego rozmiaru i nakładamy pierwszy na jedną stronę. Następnie odcinamy felgi i uwalniamy okno. Suszarka do włosów może pomóc w ponownym uwidocznieniu wszystkich otworów, dzięki czemu możemy je również wyciąć. Po zrobieniu tego samego dla drugiej strony używamy naszego następnego szablonu i naszej techniki zadrapania i złamania, aby zrobić małe akrylowe okienko na nasz tylny panel.

Krok 4: Zrób panel LED

Zrób panel LED
Zrób panel LED
Zrób panel LED
Zrób panel LED
Zrób panel LED
Zrób panel LED

Teraz dochodzimy do punktu kulminacyjnego tego projektu, w najbardziej dosłownym tego słowa znaczeniu. Panel LED.

Używamy naszych nożyczek do cięcia metalu, aby wyciąć z blachy kawałek o wymiarach 12,2 cm na 8 cm. Zachowaj ostrożność, ponieważ nożyczki tworzą bardzo ostre krawędzie. Wygładzimy je naszym pilnikiem i papierem ściernym. Następnie dodajemy nasz kolejny szablon do wywiercenia otworów na śruby i przewody.

Czas na przygotowanie rzeczywistych diod LED.

Najpierw tniemy je na trzy paski po 6 diod LED. Niektóre paski LED mają bardzo cienką warstwę kleju lub w ogóle nie mają kleju, więc przyklejamy nasze paski do kawałka taśmy dwustronnej i przycinamy ją nożem. Dzięki temu przyklei się do metalowej płytki i choć nie jest to profesjonalne rozwiązanie, odizoluje miedziane nakładki od metalowej powierzchni pod spodem.

Zanim faktycznie przykleimy paski do panelu, czyścimy go alkoholem. Podczas mocowania diod LED musimy upewnić się, że umieściliśmy je we właściwym miejscu i we właściwym kierunku. Małe strzałki na pasku LED wskazują kierunek, w którym dane przepływają przez pasek.

Jak widać na piątym rysunku, nasza linia danych pochodzi z lewego górnego rogu panelu, przechodzi przez pierwszy pasek aż do prawej strony, a następnie z powrotem do początku następnego paska po lewej stronie i tak dalej. Więc wszystkie nasze strzałki muszą być skierowane na prawą stronę.

Podgrzejmy nasz jon lutowniczy i nałóżmy trochę cyny na miedziane podkładki, a także na nasz drut. Linie danych są połączone tak, jak właśnie opisałem, podczas gdy po prostu podłączamy pady plus i minus paska równolegle.

Po okablowaniu pasków używamy noża, aby ostrożnie podnieść końce każdego paska, przytrzymując diody LED w dół, tak aby nadal były skierowane do góry. Następnie nakładamy pod spód trochę gorącego kleju, aby zaizolować nasze połączenia lutowane.

Po wykonaniu tej czynności dodajemy kilka pinów nagłówka do przewodów prowadzących do płytki drukowanej. Przewody te powinny mieć długość około 16cm. Aby mieć pewność, że metalowy panel niczego nie zwiera, używamy multimetru do pomiaru rezystancji między wszystkimi pinami. Jeśli pokazuje coś powyżej 1kOhm, wszystko jest w porządku.

Teraz możemy podłączyć go do Arduino, przeprowadzić strandtest i cieszyć się kolorami.

Krok 5: Stwórz przewodnik świetlny

Zrób lekki przewodnik
Zrób lekki przewodnik
Zrób lekki przewodnik
Zrób lekki przewodnik
Zrób lekki przewodnik
Zrób lekki przewodnik
Zrób lekki przewodnik
Zrób lekki przewodnik

Jeśli umieścimy nasz panel ledowy tuż za mlecznym akrylem, odróżnienie poszczególnych diod LED może być dość trudne. To sprawiłoby, że nasz zegar byłby jeszcze trudniejszy do odczytania, niż jest.

Aby rozwiązać ten problem, zrobimy sobie mały przewodnik świetlny. W tym celu po prostu wycinamy kolejny kawałek MDF, który ma taki sam rozmiar jak przedni panel. Następnie dodajemy do niego kolejny szablon i wiercimy w nim osiemnaście otworów 3,5 mm na diody LED oraz cztery otwory 4,5 mm na wkręty. Następnie możemy przymocować go do przedniego panelu i użyć papieru ściernego, aby wyrównać oba.

Jak widać na ostatnim zdjęciu, światło wydaje się teraz o wiele bardziej skupione.

Krok 6: Utwórz ramkę przycisku

Utwórz ramkę przycisku
Utwórz ramkę przycisku
Utwórz ramkę przycisku
Utwórz ramkę przycisku
Utwórz ramkę przycisku
Utwórz ramkę przycisku

Ostatnim elementem obudowy, który zamierzamy wykonać, jest ramka przycisku.

Jeszcze raz wycinamy kawałek płyty MDF na odpowiedni rozmiar i dodajemy do niego szablon, następnie wiercimy wszystkie niezbędne otwory i za pomocą naszej piły do wycinania wycinamy środkową część.

Nasza rama ma utrzymać na miejscu 4 przyciski dotykowe, czujnik światła i nasz mały głośnik. Zanim przymocujemy je do ramy, wycinamy kilka mniejszych kawałków okładki z płyty MDF. Następnie przyklejamy na gorąco nasze elementy do tych pokryw i dodajemy do nich przewody.

Power pady przycisków dotykowych są podłączone równolegle, a każda linia wyjściowa ma oddzielny przewód. To także dobry moment na sprawdzenie, czy wszystkie działają. Ponieważ czujnik światła potrzebuje 5 V z jednej strony, możemy go po prostu podłączyć do przycisków alarmowych VCC pad i przylutować przewód do drugiej nogi.

Po przygotowaniu paneli nacinamy boki ramy, aby zrobić miejsce dla nich i ich drutów.

Następnie usuwamy pył drzewny ze wszystkich kawałków odkurzaczem i przykrywamy folią winylową.

Używamy precyzyjnego noża do usuwania kawałków winylu bezpośrednio nad wrażliwymi obszarami naszych modułów dotykowych. Za pomocą taśmy dwustronnej możemy następnie przymocować własne guziki do płyty MDF. Moje guziki zrobiłem z gumowej pianki, która nadaje im miękką, miękką fakturę, ale możesz użyć dowolnego niemetalicznego materiału.

Na ramie używamy naszego noża, aby ponownie uwolnić trochę MDF, co daje nam przyczepną powierzchnię dla gorącego kleju. Następnie możemy w końcu przykleić elementy do boków naszej ramy.

Krok 7: Przylutuj główną płytkę drukowaną

Przylutuj główną płytkę drukowaną
Przylutuj główną płytkę drukowaną
Przylutuj główną płytkę drukowaną
Przylutuj główną płytkę drukowaną
Przylutuj główną płytkę drukowaną
Przylutuj główną płytkę drukowaną

Zostawmy ramkę tak, jak jest teraz i przejdźmy do płytki drukowanej. Na pierwszym zdjęciu widać układ PCB.

Zaczynamy od umieszczenia elementów o najniższym profilu na płytce drukowanej. Najmniejsze elementy to mostki druciane, które trochę za późno przypomniałem sobie, więc zacząłem od rezystorów. Wlutowujemy nasze komponenty na miejsce i przechodzimy do następnego wyższego zestawu komponentów.

Następnie mamy nasze żeńskie piny nagłówka. Aby zaoszczędzić trochę miejsca i móc podłączyć naszą elektronikę z boku montujemy je pod kątem 90 stopni.

Tranzystory nie pasują do rozstawu otworów 2,54 mm w naszej płytce drukowanej, dlatego używamy naszych szczypiec, aby ostrożnie wygiąć ich nogi do kształtu pokazanego na drugim zdjęciu. Najpierw lutujemy jedną z ich nóg i odwracamy płytkę drukowaną. Następnie ponownie rozgrzewamy złącze lutownicze i używamy palca lub szczypiec do prawidłowego ustawienia elementu. Teraz możemy przylutować pozostałe dwie nogi na miejscu.

Po wszystkich małych elementach lutujemy nasze Arduino i nasz moduł zegara czasu rzeczywistego. Moduł RTC również nie pasuje do rozstawu otworów, więc wyposażymy tylko stronę, która ma 7 pól lutowniczych z pinami nagłówka. Ponadto umieszczamy pod nim taśmę, aby zapobiec zwarciom.

Ponieważ wszystkie nasze komponenty są lutowane na miejscu, nadszedł czas na wykonanie połączeń po drugiej stronie płytki. W tym celu wyjmiemy nasz nieizolowany drut. Do wyprostowania można użyć szczypiec. Następnie tniemy drut na mniejsze kawałki i lutujemy go do PCB.

Aby wykonać połączenie rozgrzewamy złącze lutownicze i wkładamy przewód. Następnie trzymamy na nim jon lutowniczy, aż osiągnie odpowiednią temperaturę i lut go otacza i otrzymujemy złącze, które wygląda jak na zdjęciu. Jeśli nie podgrzejemy drutu, możemy skończyć z zimnym złączem, które wyglądałoby podobnie do drugiego przykładu i nie przewodziło zbyt dobrze. Możemy użyć naszego przecinaka do drutu, aby docisnąć drut podczas lutowania i upewnić się, że leży płasko na PCB. Na dłuższych ścieżkach połączenia lutujemy go do jednego padu co 5 do 6 otworów, aż dojdziemy do rogu lub kolejnego elementu.

W rogu przecinamy drut nad pierwszą połową pola lutowniczego i przylutowujemy do niego koniec. Następnie bierzemy nowy kawałek drutu i idziemy stamtąd pod kątem prostym.

Wykonanie tych połączeń pustym przewodem jest dość trudne i wymaga pewnych umiejętności, więc jeśli robisz to po raz pierwszy, zdecydowanie nie jest złym pomysłem, aby przećwiczyć to na złomowanej płytce drukowanej, zanim spróbujesz to zrobić na prawdziwej.

Po zakończeniu lutowania ponownie sprawdzamy połączenia i upewniamy się, że nie wystąpiły żadne zwarcia. Następnie możemy umieścić płytkę PCB w ramce przycisku i użyć jej jako odniesienia dla niezbędnych długości drutu ramki. Następnie przycinamy te przewody na odpowiednią długość i dodajemy do nich męskie piny.

Wszystkie połączenia 5 V i uziemienia przycisków dotykowych łączą się w złącze 2-stykowe. 4 przewody wyjściowe mają złącze 4-stykowe i linię czujnika światła, a także dwa przewody głośnikowe połączone w złącze trzystykowe. Nie zapomnij oznaczyć jednej strony każdego gniazda i złącza za pomocą ostrza lub taśmy, aby nie podłączyć ich kwasowo w niewłaściwy sposób.

Krok 8: Złóż zegar

Złóż zegar
Złóż zegar
Złóż zegar
Złóż zegar
Złóż zegar
Złóż zegar
Złóż zegar
Złóż zegar

Następnie wróciłem do panelu przedniego i starannie nakleiłem naklejkę wykonaną z przezroczystej folii do drukarki laserowej jako ostateczny szlif.

Mimo że nakładałem go bardzo ostrożnie, nie byłem w stanie uzyskać efektu bez pęcherzyków, co jest niestety wyraźnie widoczne po bliższym przyjrzeniu się. Folia też nie bardzo dobrze trzyma się rogów, więc nie mogę polecić tego rozwiązania.

Prawdopodobnie można to zrobić za pomocą lepszej naklejki lub, jeśli jesteś dobry w rysowaniu, możesz dodać liczby za pomocą sharpie.

Teraz mamy już wszystkie komponenty i możemy złożyć nasz zegar.

Zaczynamy od złożenia razem światłowodu i panelu przedniego. Po włożeniu wszystkich 4 śrub dopasowujemy oba panele, a następnie je dokręcamy. Kilka orzechów później pojawia się panel świetlny, w którym musimy spojrzeć w kierunku. Kabel powinien znajdować się na górze.

Trzeci element to ramka na guziki. Pamiętaj, że patrząc od przodu, głośnik powinien znajdować się po prawej stronie zegara. Przeciągnij kabel panelu ledowego przez środek ramy, zanim przymocujesz go na miejscu.

Teraz odkładamy przedni montaż na bok i przechodzimy do tylnego panelu. Na zdjęciu widać również moją piękną, samodzielnie wykonaną przejściówkę mini USB 90 stopni. Podłączyłem ci odpowiedni adapter, więc nie będziesz musiał zajmować się takim bałaganem. Możesz po prostu podłączyć adapter i poprowadzić kabel przez otwór w tylnym panelu.

Bierzemy nasze śruby M3 i przekładki do PCB, aby naprawić małe okienko. Ważne jest, aby dokładnie dokręcić śruby, aby nie uszkodzić naszego akrylu. Następnie bierzemy naszą płytkę drukowaną, podłączamy nasz adapter i przykręcamy go do przekładek. Strona komponentu powinna być skierowana w stronę okna, podczas gdy port USB Arduino skierowany jest w dół zegara.

Następnie wpinamy wszystkie złącza z panelu przedniego, pamiętając o polaryzacji i ostrożnie wciskamy wszystkie przewody do zegara. Następnie możemy zamknąć go tylnym panelem i dokręcić 4 pozostałe nakrętki zabezpieczające.

W końcu chcesz mieć podkładkę z każdej strony każdego panelu, podczas gdy światłowód jest umieszczony bezpośrednio za przednim panelem. Mamy jedną nakrętkę między światłowodem a panelem led i dwie kolejne, oddzielające ją od ramki przycisku. Widać to również na ostatnim zdjęciu.

Ponieważ użyłem krótkich śrub o długości 40mm, mam tylko 3 nakrętki oddzielające tylny panel i ramę. Przy odpowiednich śrubach 45 mm, dodałbyś tutaj kolejną nakrętkę, a także jedną lub dwie dodatkowe podkładki. Na końcu montażu mamy nakrętkę zabezpieczającą, dzięki czemu wszystko pozostaje na swoim miejscu.

Krok 9: Prześlij kod i skalibruj czujnik światła

Prześlij kod i skalibruj czujnik światła
Prześlij kod i skalibruj czujnik światła
Prześlij kod i skalibruj czujnik światła
Prześlij kod i skalibruj czujnik światła
Prześlij kod i skalibruj czujnik światła
Prześlij kod i skalibruj czujnik światła

Czas na wgranie naszego kodu.

Najpierw pobieramy wszystkie niezbędne pliki i rozpakowujemy je. Następnie otwieramy nasz folder bibliotek Arduino i wrzucamy do niego wszystkie nowe biblioteki.

Teraz otwieramy szkic kalibracji czujnika światła, który daje nam jasne i ciemne wartości dla funkcji automatycznego przyciemniania zegara. Wgrywamy go, otwieramy monitor szeregowy i postępujemy zgodnie z instrukcjami na ekranie.

Po wykonaniu tej czynności otwieramy rzeczywisty kod zegarów binarnych i zastępujemy dwie wartości tymi, które właśnie zmierzyliśmy.

Zamykamy wszystkie inne okna, wgrywamy kod do naszego zegara i gotowe.

Czas pobawić się naszym nowym gadżetem.

Krok 10: Szybkie wprowadzenie do systemu binarnego

Szybkie wprowadzenie do systemu binarnego
Szybkie wprowadzenie do systemu binarnego
Szybkie wprowadzenie do systemu binarnego
Szybkie wprowadzenie do systemu binarnego
Szybkie wprowadzenie do systemu binarnego
Szybkie wprowadzenie do systemu binarnego
Szybkie wprowadzenie do systemu binarnego
Szybkie wprowadzenie do systemu binarnego

Zanim przejdziemy dalej, chciałbym odpowiedzieć na jedno pytanie, które prawdopodobnie już przeszło Ci przez głowę, "Jak u licha czytasz ten zegar?"

Cóż, w tym celu chciałbym przedstawić krótkie wprowadzenie do systemu binarnego.

Wszyscy znamy system dziesiętny, w którym każda cyfra może mieć 10 różnych stanów, od 0 do 9. W systemie binarnym każda cyfra może mieć tylko dwa stany, 1 lub 0, dlatego możesz użyć czegoś tak prostego jak dioda do wyświetlić liczbę binarną.

Aby wyświetlić liczby większe niż 9 w systemie dziesiętnym, dodajemy więcej cyfr. Każda cyfra ma określony mnożnik. Pierwsza cyfra od prawej ma mnożnik równy 1, następna to 10, a następna to 100. Z każdą nową cyfrą mnożnik jest dziesięć razy większy niż poprzednia cyfra. Wiemy więc, że liczba 2 umieszczona o jedną cyfrę po lewej stronie reprezentuje liczbę 20. Podczas gdy dwie cyfry po lewej stronie oznaczają 200.

W systemie binarnym każda cyfra ma również mnożnik. Ponieważ jednak każda cyfra może mieć tylko dwa różne stany, każdy nowy mnożnik jest dwa razy większy niż poprzedni. A tak przy okazji, cyfry binarne nazywane są bitami. Spójrzmy więc na nasz pierwszy przykład, jeśli umieścimy 1 na najniższej pozycji, będzie to prosta 1, ale jeśli umieścimy ją na następnej wyższej pozycji, gdzie nasz mnożnik wynosi 2, reprezentuje liczbę 2 w systemie binarnym.

Co powiesz na nieco bardziej skomplikowany przykład na dole obrazu. Trzeci i pierwszy bit są włączone. Aby uzyskać reprezentowaną tutaj liczbę dziesiętną, po prostu dodajemy wartości dwóch bitów. Czyli 4 * 1 + 1 * 1 lub 4+1 daje nam liczbę 5.

8 bitów nazywamy bajtem, więc zobaczmy, jaką liczbę otrzymamy, jeśli wypełnimy cały bajt jedynkami.1+2+4+8+16+32+64+128, czyli 255, co jest najwyższą wartością, jaką może mieć pojedynczy bajt.

Nawiasem mówiąc, podczas gdy w systemie dziesiętnym cyfra z najwyższym mnożnikiem zawsze jest pierwsza, masz dwa sposoby zapisywania liczby w systemie binarnym. Te dwie metody są nazywane najpierw najmniej znaczącym bajtem (LSB) i najpierw najbardziej znaczącym bajtem (MSB). Jeśli chcesz odczytać liczbę binarną, musisz wiedzieć, który z dwóch formatów jest używany. Ponieważ jest bliższy systemowi dziesiętnemu, nasz zegar binarny używa wariantu MSB.

Wróćmy do naszego przykładu z prawdziwego świata. Jak zaznaczono na szóstym obrazku, nasz zegar ma 4 bity do wyświetlania godziny. Wtedy mamy 6 bitów na minutę i 6 bitów na sekundę. Co więcej, mamy pojedynczy bit am/pm.

W porządku, powiedz mi, która jest godzina na szóstym zdjęciu, potem przejdź do ostatniego.. ….

w sekcji godzinowej mamy 2+1, czyli 3, a godzina po południu jest włączona, więc jest wieczór. Następna minuta 32+8, czyli 40. Dla sekund mamy 8+4+2, czyli 14. Czyli jest 15:40:14 lub 15:40:14.

Gratulacje, właśnie nauczyłeś się czytać zegar binarny. Oczywiście trochę się przyzwyczaisz i na początku będziesz musiał zsumować liczby, za każdym razem, gdy chcesz wiedzieć, która jest godzina, ale podobnie jak w zegarze analogowym bez tarczy, przyzwyczaisz się do wzorów diod LED czas.

I to jest część tego, o co chodzi w tym projekcie, przenoszenie czegoś tak abstrakcyjnego jak system binarny do realnego świata i lepsze poznanie go.

Krok 11: Korzystanie z binarnego budzika

Korzystanie z binarnego budzika
Korzystanie z binarnego budzika
Korzystanie z binarnego budzika
Korzystanie z binarnego budzika
Korzystanie z binarnego budzika
Korzystanie z binarnego budzika

Teraz w końcu chcemy pobawić się zegarem, więc przyjrzyjmy się kontrolkom.

Oprogramowanie rozróżnia pojedyncze dotknięcie przycisku, podwójne dotknięcie i długie dotknięcie. Tak więc każdy przycisk może być używany do wielu działań.

Dwukrotne dotknięcie przycisku w górę lub w dół zmienia tryb koloru diody LED. Możesz wybierać między różnymi trybami kolorów statycznych i blaknących, a także trybem temperatury. Jeśli jesteś w jednym ze statycznych trybów kolorów, przytrzymanie przycisku w górę lub w dół zmienia kolor. W trybie zanikania pojedyncze dotknięcie zmienia prędkość animacji.

Aby ustawić tryb ściemniacza, dwukrotnie dotknij przycisku OK. Panel LED wskazuje ustawiony tryb poprzez wielokrotne mignięcie.

  • Jeden raz oznacza brak ściemniacza.
  • Dwa razy oznacza, że jasność jest kontrolowana przez czujnik światła.
  • Trzy razy, a diody LED wyłączają się automatycznie po 10 sekundach bezczynności.
  • Cztery razy i oba tryby dimmera są połączone.

Długie naciśnięcie przycisku ok spowoduje przejście do trybu ustawiania czasu, w którym możesz użyć strzałek w górę iw dół, aby zmienić liczbę. Jedno dotknięcie przycisku OK przenosi Cię z godzin do minut, jeszcze jedno dotknięcie i możesz ustawić sekundy. Potem ostatnie stuknięcie oszczędza nowy czas. Jeśli przypadkowo wejdziesz w tryb ustawiania czasu, możesz po prostu poczekać 10 sekund, a zegar automatycznie go opuści.

Podobnie jak w przypadku przycisku ok, długie naciśnięcie przycisku alarmu pozwala ustawić alarm. Dwukrotne dotknięcie przycisku alarmu aktywuje lub dezaktywuje alarm.

Jeśli zegar dzwoni, wystarczy nacisnąć przycisk alarmu, aby go uśpić na 5 minut lub przytrzymać, aby wyłączyć rozbrojenie alarmu.

To były wszystkie funkcje, jakie do tej pory posiadał zegar. W przyszłości może dodam więcej, które można uzyskać, jeśli pobierzesz najnowszą wersję oprogramowania.

Krok 12: Zrozumienie kodu (opcjonalnie)

Zrozumienie Kodeksu (opcjonalnie)
Zrozumienie Kodeksu (opcjonalnie)

Wiem, że wiele osób nie przepada za programowaniem. Na szczęście dla tych ludzi do zbudowania i używania tego zegara binarnego nie jest wymagana żadna wiedza programistyczna. Więc jeśli nie zależy Ci na stronie programowania, możesz po prostu pominąć ten krok.

Jeśli jednak interesuje Cię część dotycząca kodowania, chciałbym przedstawić ogólny przegląd programu.

Wyjaśnienie każdego najmniejszego szczegółu kodu zegarów byłoby samo w sobie Instructable, więc utrzymam to w prostocie, wyjaśniając program w sposób obiektowy.

Jeśli nie wiesz, co to oznacza, programowanie obiektowe (OOP) jest koncepcją większości nowoczesnych języków programowania, takich jak C++. Pozwala organizować różne funkcje i zmienne w tzw. klasy. Klasa to szablon, z którego można utworzyć jeden lub wiele obiektów. Każdy z tych obiektów otrzymuje Nazwę i własny zestaw zmiennych.

Na przykład kod zegara używa kilku obiektów MultiTouchButton, takich jak alarmButton. Są to obiekty z klasy MultiTouchButton, która jest częścią mojej biblioteki Button. Fajną rzeczą w tych obiektach jest to, że można z nimi komunikować się podobnie do obiektów ze świata rzeczywistego. Na przykład możemy sprawdzić, czy przycisk alarmu został dwukrotnie naciśnięty, wywołując alarmButton.wasDoubleTapped(). Co więcej, implementacja tej funkcji jest ładnie ukryta w innym pliku i nie musimy się martwić o jej uszkodzenie, zmieniając cokolwiek innego w naszym kodzie. Szybkie wejście w świat programowania obiektowego znajdziesz na stronie Adafruit.

Jak widać na powyższej grafice, program zegary posiada kilka różnych obiektów.

Właśnie rozmawialiśmy o obiektach przycisków, które mogą interpretować sygnały wejściowe jako stuknięcie, dwukrotne stuknięcie lub długie naciśnięcie.

Szafa grająca, jak sama nazwa wskazuje, potrafi hałasować. Ma kilka melodii, które można odtwarzać przez mały głośnik.

Obiekt binaryClock zarządza ustawieniami czasu i alarmów, a także obserwowaniem alarmów. Ponadto pobiera czas z modułu rtc i konwertuje go na binarny bufor informacji dla ledPanel.

ColorController zawiera wszystkie funkcje efektów kolorystycznych i zapewnia colorBuffer dla ledPanel. Zapisuje również jego stan w EEPromie Arduinos.

Ściemniacz dba o jasność zegarów. Ma różne tryby, przez które użytkownik może przechodzić. Aktualny tryb jest również zapisywany w EEProm.

LedPanel zarządza różnymi buforami dla wartości koloru, wartości jasności i binarnego stanu każdej diody LED. Za każdym razem, gdy wywoływana jest funkcja pushToStrip(), nakłada je i wysyła do paska led.

Wszystkie obiekty są „połączone” przez główny (plik z funkcjami konfiguracji i pętli), który zawiera tylko kilka funkcji do wykonania 3 podstawowych zadań.

  1. Interpretacja danych wejściowych użytkownika - pobiera dane wejściowe z 4 obiektów przycisków i poddaje je logice. Ta logika sprawdza aktualny stan zegara, aby określić, czy zegar jest w normalnym trybie ustawiania czasu lub dzwonienia i odpowiednio wywołuje różne funkcje z innych obiektów.
  2. Zarządzanie komunikacją między obiektami - Ciągle pyta obiekt binaryClock, czy ma dostępne nowe informacje lub czy alarm isRinging(). Jeśli ma nowe informacje, pobiera informationBuffer z binaryClock i wysyła je do obiektu ledPanel. Jeśli zegar dzwoni, uruchamia szafę grającą.
  3. Aktualizacja obiektów - Każdy z obiektów programu posiada procedurę aktualizacji, która jest używana do takich rzeczy, jak sprawdzanie wejść lub zmiana kolorów diody LED. Muszą one być wywoływane wielokrotnie w funkcji pętli, aby zegar działał poprawnie.

Powinno to dać ogólne pojęcie o tym, jak poszczególne fragmenty kodu współpracują ze sobą. Jeśli masz bardziej szczegółowe pytania, możesz mnie po prostu zadać.

Ponieważ mój kod jest zdecydowanie daleki od doskonałości, będę go dalej ulepszać w przyszłości, więc kilka funkcji może się zmienić. Fajną rzeczą w OOP jest to, że nadal będzie działać w bardzo podobny sposób i nadal możesz używać grafiki, aby to zrozumieć.

Krok 13: Ostatnie słowa

Ostatnie słowa
Ostatnie słowa

Cieszę się, że czytałeś do tego momentu. Oznacza to, że mój projekt nie był zbyt nudny:).

Włożyłem mnóstwo pracy w ten mały zegar i jeszcze więcej pracy w całą dokumentację i wideo, aby ułatwić ci zbudowanie własnego budzika binarnego. Mam nadzieję, że mój wysiłek się opłacił i podrzucę Ci świetny pomysł na projekt na najbliższy weekend lub przynajmniej podam inspirację.

Chciałbym usłyszeć, co myślisz o zegarze w komentarzach poniżej:).

Mimo że starałem się opisać każdy szczegół, mogło mi się coś przeoczyć. Więc nie wahaj się zapytać, czy zostały jeszcze jakieś pytania.

Jak zawsze bardzo dziękuję za przeczytanie i szczęśliwe robienie.

Konkurs LED 2017
Konkurs LED 2017
Konkurs LED 2017
Konkurs LED 2017

Drugie miejsce w konkursie LED 2017

Zalecana: