Spisu treści:

Łatwy zegar letni: 7 kroków
Łatwy zegar letni: 7 kroków

Wideo: Łatwy zegar letni: 7 kroków

Wideo: Łatwy zegar letni: 7 kroków
Wideo: Tajemnica Siedmiu Zegarów - Agathy Christie | audiobook Pl 2024, Lipiec
Anonim
Łatwy zegar czasu letniego
Łatwy zegar czasu letniego
Łatwy zegar czasu letniego
Łatwy zegar czasu letniego

Fabuła

Ten projekt rozpoczął się jako wyzwanie dla mnie, aby nauczyć się programowania (kodowania) za pomocą Arduino Uno i pojedynczego wyświetlacza LCD 1602A, najpierw chciałem przesunąć Arduino do granic dokładności. Jest to projekt budowy zegara bez użycia modułu RTC (moduł zegara czasu rzeczywistego) i bez użycia opóźnienia(); polecenia, ponieważ opóźnienie(); polecenie zatrzymuje kod na określony czas. Kiedy pracowałem nad podstawowym kodem utrzymującym czas, pomyślałem, że może to być trochę przyziemne, więc postanowiłem dodać funkcję czasu letniego jako nowatorski dodatek, aby urozmaicić wszystko i być może zwiększyć zainteresowanie tym projektem. Początkowo pomysł był czysto nowatorski, ale im dłużej nad nim pracuję i obserwuję fizyczny zegar, który mam na biurku, tym pomysł staje się bardziej praktyczny. Dzięki dodaniu modułu RTC i dostosowaniu kodu zegar ten będzie dokładny przez wiele lat i przy bardzo niskich kosztach dla producentów i odbiorców kupujących taki zegar.

Daylight Savings Time lub (DST) istnieje od ponad 100 lat (Google to ma dość kolorową historię). Nie chcę wdawać się w politykę, ale jest to proste i bolesne ćwiczenie, które nie ułatwia życia zwykłym ludziom (ty i ja). W większości cieszymy się dodatkową godziną światła dziennego, ale sposób, w jaki jest stosowany, jest brutalny. Czas na poważne ulepszenie bardzo starego pomysłu.

Ten przykład jest łatwy do życia w epoce cyfrowej i postępie technologicznym, który można łatwo zastosować do wszystkich rodzajów zegarów cyfrowych, ale może pomóc w upadku zegara analogowego. Zamiast 1-godzinnego skoku z czasu standardowego do czasu letniego, a następnie czasu letniego do czasu standardowego, ten zegar opiera się na stopniowym postępie czasu od przesilenia zimowego do przesilenia letniego, a następnie z powrotem do czasu standardowego podczas następnego przesilenia zimowego rok po roku. To przejście odbywa się przez 180 dni z każdego okresu 6 miesięcy, korekta wynosi 20 sekund dziennie przez 360 dni, a pozostałe 5 lub 6 dni dodaje się do długości przesileń. Mój przykład tutaj zwiększa się o 1 minutę raz na trzy dni w ciągu 180-dniowego cyklu. Około 21 czerwca każdego roku zegar jest o pełną godzinę do przodu, a około 21 grudnia każdego roku zegar cofa się do czasu standardowego. Rok przestępny można łatwo wyliczyć, zwłaszcza jeśli używany jest zegar czasu rzeczywistego. Półkula południowa jest również łatwo przystosowana do tego zegara, skala slajdu jest po prostu 6 miesięcy przesunięta w fazie z półkuli północnej.

Są trzy miejsca na świecie, w których czas letni byłby prawie bez zmian, region równikowy i bieguny. Nie sądzę, żeby światło dzienne na równiku zmieniało się zbytnio, nie wiem, czy którykolwiek z obszarów tropikalnych używa czasu letniego, a bieguny to znowu inna historia, po prostu „Która” jest w ogóle godzina na biegunach?

Krok 1: O zegarze

O zegarze
O zegarze
O zegarze
O zegarze

Stworzony przeze mnie zegar bazuje na standardowym czasie, który nigdy nie różni się od międzynarodowego zegara światowego, który jest wyświetlany w pierwszej linii wyświetlacza 1602 LCD. Druga linia to ta sama skala czasu, ale pokazuje przesunięcie minut od jednego przesilenia do następnego. Od przesilenia zimowego do przesilenia letniego przesunięcie zwiększa się o jedną minutę co trzy dni do maksymalnie sześćdziesięciu minut. Od przesilenia letniego do przesilenia zimowego przesunięcie zmniejsza się o jedną minutę co trzy dni, aż czas standardowy i czas letni będą takie same.

W tym przykładzie użyłem czasu wojskowego (zegar 24-godzinny) i czasu standardowego (zegar 12-godzinny) AM i PM, aby pomóc osobom nie zaznajomionym z 24-godzinną skalą czasu, a także dało to mojemu pokojowi wyświetlanie numeru dnia, w którym jest czas letni zestaw od. Kod można zmienić, aby wyświetlić zegar 12-godzinny. Dodałem trzy przyciski podłączone do cyfrowych pinów 2, 3 i 4, aby dostosować czas. Te przyciski zwiększają tylko sekundy, minuty lub godziny. Przyciski są opcjonalne, zegar będzie nadal działał poprawnie, jeśli nie podłączysz przycisków i nie będziesz musiał zmieniać kodu. Zalecałbym przynajmniej użycie przycisku do regulacji sekund, a jeśli nie można osiągnąć pełnej dokładności, utrzymuj zegar w zwolnionym tempie, przycisk przesuwa czas o 1 sekundę na sekundę.

Jeśli uruchomisz zegar z Arduino IDE, załadowanie i uruchomienie szkicu zajmie około 5,5 do 6 sekund, jeśli masz załadowany szkic do Arduino, podłącz go do gniazdka ściennego lub zasilacza, zajmie to około 2,5 3 sekundy na uruchomienie i uruchomienie.

Konieczna jest ręczna konfiguracja, gdy w końcu przygotujesz zegar do pracy.

Ten zegar nie używa modułu RTC ani nie używa "delay();" polecenia.

Jeśli lubisz używać RTC z Arduino, ta koncepcja może być nadal używana. RTC przekaże Ci wszystkie informacje potrzebne do dodania czasu EDSC. Kod może być zupełnie inny z modułem RTC, nie zaglądałem do niego. Jeśli to robisz, jesteś prawie sam, ale to świetny sposób na ćwiczenie mózgu.

Krok 2: Czego będziesz potrzebować

Czego będziesz potrzebować
Czego będziesz potrzebować
Czego będziesz potrzebować
Czego będziesz potrzebować
Czego będziesz potrzebować
Czego będziesz potrzebować

LISTA ZAKUPÓW

1 Arduino Uno lub Mega2569 (piny I2C to A4 i A5 w UNO oraz 20 i 21 w 2560 Mega)

Prawie każde inne Arduino powinno działać, użyte piny mogą być inne. Z tego względu każda płyta kontrolera będzie działać. Będziesz musiał przepisać kod dla tej płyty lub producenta.

1 1602 wyświetlacz LCD (kolor do wyboru)

Używam plecaka I2C z wyświetlaczem LCD, uważam, że konfiguracja jest łatwiejsza i szybsza.

Przewody połączeniowe

DOSTAWY OPCJONALNE

1 średniej wielkości deska do chleba

1-3 przyciski ze stykiem chwilowym

1-3 Rezystory 10 kΩ

Ta instrukcja jest długa, więc nie zajmę się montażem ani szafką, której używałem do wyświetlania zegara. Jeśli podoba Ci się ten projekt i chcesz stworzyć stałą wersję, zaprojektuj go według własnych upodobań. Ten projekt jest dla mnie idealny, ponieważ miałem wszystko, czego potrzebowałem w moim śmietniku i podoba mi się jego wygląd.

UWAGI:

Aby uniknąć przerw w dostawie prądu, mój ostatni zegar jest zasilany przez panel słoneczny, który mam na zewnątrz. Panel słoneczny utrzymuje naładowany akumulator 12 V z regulatorem, aby zapobiec przeładowaniu. Ta bateria jest podłączona do Arduino przez gniazdo zasilania obok portu USB. Utrzymuję port USB podłączony do sieci, aby zmniejszyć zużycie baterii. Oba źródła zasilania mogą być używane jednocześnie bez uszkodzenia Arduino. Akumulator 12 V można naładować do maksymalnie 14,5 V, co jest zbyt wysokie dla Arduino, więc używam konwertera buck, aby zmniejszyć napięcie zasilania z akumulatora do zakresu od 9 do 12 woltów. Akumulator 12 V, który trzymam naładowany, wytrzyma 3 lub 4 dni, jeśli dni są pochmurne. Regulator, którego używam, odetnie zasilanie Arduino, jeśli napięcie akumulatora spadnie do 11 woltów. Bateria, którą mam, pochodzi z systemu oświetlenia awaryjnego dla budynków komercyjnych, jest około jednej czwartej wielkości małego akumulatora samochodowego. Jeśli zamierzasz używać akumulatora samochodowego, trzymaj go w dobrze wentylowanym miejscu (na zewnątrz), akumulatory samochodowe wydzielają wodór i tlen podczas ładowania i rozładowywania, jest to wybuchowa kombinacja.

OSTRZEŻENIE

TRZYMAĆ AKUMULATOR W STUDNI

OBSZAR WENTYLOWANY, NA ZEWNĄTRZ

Krok 3: Okablowanie

Okablowanie
Okablowanie

Dostarczyłem schemat dla wszystkich połączeń w tym projekcie, jeśli używasz płytki stykowej, będziesz potrzebować płytki średniej wielkości, przełączniki będą potrzebowały miejsca do rozłożenia, aby obwód nie był zagmatwany.

Wyświetlacz LCD 1602 ma dla uproszczenia plecak I2C, jeśli używasz połączeń SPI, musisz sprawdzić, jak go używać i zmienić kod na początku szkicu. Nigdy nie korzystałem z połączeń SPI, więc piny 2, 3 i 4 mogą być niedostępne dla trzech przycisków.

Trzy przyciski służą do ustawiania czasu na zegarze. Przesuwają tylko czas (NAPRZÓD). W końcowych korektach utrzymuj zegar w kodzie wolniej (około 1 do 2 sekund dziennie lub kilka dni), w ten sposób możesz przesunąć czas w razie potrzeby. Każdy przycisk przesuwa czas o jeden przyrost na sekundę, dolny o 2 sekundy na sekundę, środkowy o 1 minutę na sekundę, a górny o 1 godzinę na sekundę. Dość wysoki stopień dokładności powinien być wykonalny, więc nie będziesz musiał go często dostosowywać.

Jeśli ustawiasz sekundy, minuty lub godziny (na przykład jeśli minuty są przesunięte o 58, 59, 00), godzina przesunie się do następnej godziny.

Te trzy przyciski to ostatni dodatek do zegara, działają dobrze, ale może być lepszy sposób. Pamiętaj tylko, że jeśli zadzierasz z tą częścią kodu, to "delay();" nie można użyć polecenia. Użyłem tej metody, ponieważ nie muszę się martwić o odbicie przełącznika i dziwne skoki w czasie.

Krok 4: Co pokazuje wyświetlacz

Co pokazuje wyświetlacz
Co pokazuje wyświetlacz

Na wyświetlaczu LCD 1602 umieściłem wiele informacji, które wymagają wyjaśnienia:

Linia 1 lub linia zero '0' podczas mówienia w kodzie, pokazuje czas standardowy. Po lewej stronie jest 'STD', to oznacza czas 'STANDARD'.

Następny w pierwszej linii pośrodku to Twój lokalny czas standardowy. Nie zaczynaj od czasu letniego, zegar wyświetli go w drugiej linii.

Ta skala czasu jest zegarem 12-godzinnym, więc po prawej stronie znajduje się „AM” lub „PM”, aby wskazać poranek lub popołudnie.

Wiersz 2 Lub wiersz pierwszy „1”, gdy mówimy w kodzie, pokazuje czas letni, który zmienia się w zależności od dnia w roku. „DST” po lewej oznacza „Czas letni”

W środku drugiej linii znajduje się twój lokalny czas wojskowy, który jest zegarem 24-godzinnym. Usłyszysz to na przykład jako „och sześćset godzin”.

Po prawej stronie znajduje się dzień roku w odniesieniu do przesilenia zimowego, na półkuli północnej 21 grudnia (w przybliżeniu) to dzień zerowy „0”, a na półkuli południowej 21 czerwca (w przybliżeniu) to dzień zerowy „0”.

Podczas pierwszej konfiguracji zegara udostępniłem dwa pliki.pdf w celach informacyjnych. Wybierz plik, który odnosi się do półkuli, na której mieszkasz.

Trzy przyciski po prawej stronie zwiększają sekundy, minuty i godziny od dołu do góry.

Krok 5: Konfiguracja szkicu

Konfiguracja szkicu
Konfiguracja szkicu

Istnieje kilka wierszy kodu, które należy skonfigurować przed pierwszym uruchomieniem. Niektóre z tych linii muszą być zmieniane za każdym razem, gdy odłączasz zegar i zmieniasz wartości zmiennych w szkicu. Jeśli uruchomisz zegar dla IDE, załadowanie i uruchomienie zajmie około 6 sekund. Jeśli załadujesz szkic z IDE, a następnie odłączysz zegar i zrestartujesz go od brodawki ściennej lub zasilacza, szkic uruchomi się za około 2,5 sekundy.

Linia 11 LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Ta linia adresuje wyświetlacz LCD i ustawia właściwy adres plecaka I2C. 0x27 to adres każdego z zakupionych przeze mnie plecaków. Jeśli włączysz zegar, ale nie wyświetla danych, ale się świeci, adres prawdopodobnie jest inny na twoim LCD. Poniżej zamieszczam link do opisu, jak zmienić adres plecaka LCD lub znaleźć adres.

Wiersze 24 int minuta St = 35;

Ustaw minutę rozpoczęcia dla standardowego zegara, zwykle ustaw ją 5 minut przed uruchomieniem zegara, aby umożliwić ustawienie czasu.

Linie 25 int godzinaSt = 18;

Ustaw godzinę na rozpoczęcie czasu STD (zegar 24-godzinny). 18:00 będzie to godzina 18.

Linia 26 int DSTdays = 339;

Pobierz i zapoznaj się z plikiem pdf „Łatwa DST Clock Time Scale” (półkula północna lub południowa), w którym mieszkasz, wyszukaj datę i wstaw w tym wierszu numer dnia. (Lewa kolumna). Przykład (24 listopada to dzień #339 na półkuli północnej i dzień #156 na półkuli południowej)

Wiersz 27 int DSTrok = 2019;

Wprowadź bieżący rok.

Linia 92 if ((masterTime - previousMasterTimeSt >=1000) && (microTime - previousMicroTimeSt >= 500)){

„Poprzedni MasterTimeSt” należy porównać z liczbą milisekund, więc ten „1000” może wymagać zmiany na 999 w zależności od wewnętrznego zegara płyty Arduino, a następnie dostosować poprzedni MicroTime, aby precyzyjnie dostroić zegar. Zegar wewnętrzny, chociaż 16MH, różni się od jednej płyty do drugiej.

„poprzedniMicroTimeSt” precyzyjnie dostraja wewnętrzny zegar, aby pomóc odliczyć dokładną 1 sekundę. Jeśli zegar jest zbyt szybki, zwiększ mikrosekundy, a jeśli zegar jest zbyt wolny, zmniejsz mikrosekundy i jeśli to konieczne, zmniejsz milisekundy do 999, a następnie rozpocznij mikrosekundy na około 999, 990 lub zwiększ prędkość zegara.

Każda płytka Arduino ma nieco inną prędkość, dlatego liczby te będą się zmieniać z każdą płytką, której używasz. Część kodu nie została jeszcze przetestowana, jest to wiersz 248, aby uwzględnić każdy rok przestępny. W ciągu najbliższych kilku tygodni przetestuję to i opublikuję ewentualne zmiany.

Krok 6: Uwagi końcowe

Uwagi końcowe
Uwagi końcowe

Ten projekt jest łatwy do zbudowania, ale koncepcja i niezbędne poprawki w kodzie mogą być zadaniem, nie spiesz się i zastanów, zegar nie wygasa do końca 2037 roku. Będę bacznie obserwował mój e-mail z pytaniami, ponieważ jestem pewien, że będą, nie jestem literackim geniuszem, więc niektóre z moich opisów mogą być nieco niejasne.

Dołączone są dwa pliki.pdf, pobierz plik dla półkuli, na której mieszkasz, ten plik zawiera niezbędne informacje, aby dokładnie uruchomić zegar.

Dzięki informacjom manipulowanym w szkicu łatwo byłoby wyświetlić nie tylko standardowy czas i czas letni, ale także dzień i datę na wyświetlaczu LCD 2004A. Jeśli podobają Ci się wyzwania, jakie stawia ten projekt, spróbuj podłączyć wyświetlacz LCD 2004A, a następnie dodaj kod, aby wyświetlić dodatkowe informacje lub jeśli okaże się, że jest wystarczająco interesujące, zrobię inną odmianę tego projektu, zawierającą te dodatkowe informacje.

Próbowałem być all-inclusive w tym projekcie, ale znalazłem trzy obszary na świecie, o którym mowa. Biegun północny, biegun południowy i równik.

Czy czas letni jest konieczny, a nawet możliwy na biegunach północnych lub południowych?

Która jest godzina na biegunie północnym lub południowym?

W jakim kierunku podróżowałbyś, aby opuścić biegun północny lub biegun południowy?

Z bieguna południowego w jakim kierunku byś się udał, aby dotrzeć do Australii, Ameryki Północnej, Europy lub Azji?

W jakiej strefie czasowej mieszka Święty Mikołaj?

Czy potrzebuje czasu letniego?

Która w ogóle jest godzina na biegunie północnym?

W jakim kierunku podróżuje Święty Mikołaj, aby dostarczyć wszystkie swoje prezenty?

Na jakiej szerokości geograficznej czas letni jest skuteczny?

Teraz na równiku;

Czy ten zegar nadaje się do użytku na równiku?

Czy użyją skali półkuli północnej czy południowej?

Jakie są daty przesilenia zimowego i przesilenia letniego?

Na jakiej szerokości geograficznej czas letni jest skuteczny?

Czy pingwiny potrzebują czasu letniego?

Myślisz, że jestem dziwny, myśląc o tych pytaniach?

Szczęśliwego budowania wszystkich!

filmnut

Krok 7: Inne linki

To jest link do określenia lub zmiany adresu na plecaku I2C:

www.instructables.com/id/1602-2004-LCD-Adapter-Addressing/

PiotrS napisał doskonałą instrukcję dla adresów sprzętowych I2C

plac zabaw.arduino.cc/Main/I2cScanner

Ten link przeskanuje twoje urządzenie I2C i zwróci adres

Zalecana: