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

Тэтгэвэрт гарах цаг / тоолох / Dn цаг: 4 алхам (зурагтай)
Тэтгэвэрт гарах цаг / тоолох / Dn цаг: 4 алхам (зурагтай)

Видео: Тэтгэвэрт гарах цаг / тоолох / Dn цаг: 4 алхам (зурагтай)

Видео: Тэтгэвэрт гарах цаг / тоолох / Dn цаг: 4 алхам (зурагтай)
Видео: КАК ПРИГОТОВИТЬ БОГРАЧ. ТАК Я ЕЩЁ НЕ ГОТОВИЛ. ЛУЧШИЙ РЕЦЕПТ 2024, Арваннэгдүгээр
Anonim
Тэтгэврийн цаг / тоолох / Dn цаг
Тэтгэврийн цаг / тоолох / Dn цаг

Надад шүүгээнд 8x8 хэмжээтэй LED матрицтай цөөн хэдэн дэлгэц байсан бөгөөд тэдэнтэй юу хийх талаар бодож байсан. Бусад зааварчилгаанаас санаа авч, ирээдүйн огноо/цагийг тоолохын тулд тоолох/дээш харуулах дэлгэцийг бий болгох, хэрэв зорилтот хугацаа өнгөрвөл үүнээс тоолох санаа надад төрсөн. Би үүнийг одоо тавиур дээр сууж байсан тэтгэвэрт гарах цаг болголоо.

Үүнийг лонхонд хийх санаа нь бүрхүүлийн талаар бодож байхдаа санамсаргүй байдлаар гарсан юм. Бусад нь усан онгоцыг саванд хийдэг, яагаад цаг болохгүй гэж?

Би мөн цагийг зуны цагийн дагуу дагаж мөрдөхийг хүсч байсан бөгөөд мэдээж сүлжээнээс салгахдаа тохиргоо, цагийг санаж байхыг хүсч байсан. Би цагийг USB -ээр тэжээж байгаа бөгөөд хэрэв та өөр зүйл хийхийг хүсч байвал эсвэл кодонд нэмэлт функц оруулахыг хүсч байвал үүнийг дахин програмчлах боломжтой болгодог. Код нь маш энгийн бөгөөд маш их оновчтой болгох боломжтой. Би хүлээн зөвшөөрөх ёстой RAM -ийн хэрэглээний талаар сайн санаа тавиагүй. Хэрэв надад цаг хугацаа, урам зориг байгаа бол би үүнд эргэж очих болно.

Хангамж

1. Ардуино Нано

2. RTC (Би EEPROM -тэй нийтлэг DS3231 ашигладаг байсан)

3. 12x 8x8 цэг матрицын модуль. (Надад дөрвөлжин модулиуд байсан бөгөөд энэ нь дараалалд ороход илүү хялбар байсан)

4. Дэлгэцийн тод байдлыг тохируулах LDR

5. Резистор 10 кОм

6. Конденсатор 5x 100 uF дэлгэц дээрх үсрэлтийг дарах

7. 8x8 модулийн тодосгогч байдлыг нэмэгдүүлэхийн тулд би "Цонхны хальс" харанхуй өнгийг ашигласан. Дэлгэц нь асахгүй бол LED -ийг цагаан цэг болгон харуулдаг. Цонхны хальс нь гялалзсан хар харагдуулдаг.

Алхам 1: Бүрэлдэхүүн хэсгүүдийг холбоно уу

Бүрэлдэхүүн хэсгүүдийг холбоно уу
Бүрэлдэхүүн хэсгүүдийг холбоно уу
Бүрэлдэхүүн хэсгүүдийг холбоно уу
Бүрэлдэхүүн хэсгүүдийг холбоно уу

Би дэлгэцийг угсрахдаа дөрвөлжин дэлгэцийн гурвыг ашигласан. Огноог ташуу зураасаар, цагийг хоёр цэгээр харуулахын тулд бидэнд 8 тэмдэгтийн зай хэрэгтэй. Ердийн 5x7 фонтыг ашиглан бидэнд нэг мөрөнд 8х8 хэмжээтэй зургаан блок хэрэгтэй болно. Би дөрвөлжин блокуудын нэгийг хагасаар хувааж, талхны хавтангийн схемд үзүүлсэн шиг эдгээрийг хоёр эгнээгээр зургаан блокоор байрлуулав.

Алхам 2: 3D хэвлэсэн хэсэг

3D хэвлэсэн эд анги
3D хэвлэсэн эд анги
3D хэвлэсэн эд анги
3D хэвлэсэн эд анги
3D хэвлэсэн эд анги
3D хэвлэсэн эд анги

Дэлгэцийн хоёр эгнээ барьж, тэдгээрийг лонхонд байрлуулахын тулд би дэлгэцийн хүрээний дугуй хэлбэртэй цагираг хэвлэв. Би доор ашиглаж байсан файлуудаа нэмсэн. Тэдгээрийг дэмжлэггүйгээр хэвлэхийн тулд тэдгээрийг хэсэг болгон хуваасан. Дэлгэцийн зураг дээр дэлгэцийн хүрээн дээр наасан хоёр цагираг харагдаж байна. Лонхны хүзүүний бүрхүүл нь дэлгэцийн горим хооронд шилжих, одоогийн цаг, зорилтот цагийг тохируулах гурван товчлууртай. Миний TPU дээр хэвлэсэн лонхны хүзүүний таг нь USB кабелийг холбогчийг таслахгүйгээр таг руу шургуулж, цөөн хэдэн ороомогоор боож өгнө. Би хамгийн доод хэсэгт нь зүссэн 1.5 л дарсны шилийг хэрэглэсэн гэдгээ хэлэхээ мартсан байна. Хэвлэх бүх эд анги нь 20х20 см хэмжээтэй (8х8 инч) принтерийн орон дээр суурилагдсан болно.

Алхам 3: Код

Arduino код нь цөөн хэдэн түгээмэл хэрэглэгддэг номын санг ашиглаж байна.

MD_MAX72xx

ТХН

Утас

RTClib

Цагийн бүс

TimeLib

INO файлд өөрчлөх шаардлагатай хэд хэдэн мөрүүд байна:

38-р мөр: #тодорхойлох HARDWARE_TYPE MD_MAX72XX:: FC16_HW <- 8x8 модуль болон түүний чиглэлээс хамаарна

FC16_HW -ийн оронд дараахь зүйлийг хийх боломжтой.

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

Код нь АНУ -ын Төв цагийн тохиргоог ашиглаж байгаа бөгөөд бусад цагийн бүсэд тохируулга хийх шаардлагатай байна.

53/54 мөр:

TimeChangeRule myDST = {"CDT", Хоёрдугаарт, Нар, 3 -р сар, 2, -300}; // Өдрийн гэрлийн цаг UTC -5TimeChangeRule mySTD = {"CST", First, Sun, Nov, 2, -360}; // Стандарт цаг UTC -6

Үүнийг тохируулахад хялбар байдаг. CST/CDT гэдэг нэр нь лавлагаа авахад л болно. Би гурван үсгийн товчлолыг харуулдаггүй, тиймээс энэ нь хамаагүй. Дараагийн параметрүүд нь тухайн сард ямар өдөр шилжихийг хэлнэ. Тохируулга нь хэдэн минутын дотор хийгддэг тул +/- 30 минутын тохиргоог ашигладаг байршлууд мөн ажиллах болно.

RTC нь UTC-Time дээр дотооддоо ажилладаг бөгөөд цагийн бүсийн номын сангийн зориулалтын дагуу ажиллах боломжийг олгодог. Энэ код нь миний ашиглаж байсан цагны чипээс эсрэгээр хуучин DS1307 чипийг яагаад дурдсан болохыг та гайхаж магадгүй, гэхдээ энэ нь хамаагүй. Номын сан нь аль чиптэй сайн ажилладаг. DS1307 нь DS3132 -оос илүү зөрөх хандлагатай байдаг. DS3132 бол хамгийн тохиромжтой цаг юм. Интернет цаг нэмэх хүсэлтэй хүмүүсийн хувьд ESP8266 нь энэ ажлыг маш амархан хийх болно. Энэ нь БОЭТ -ийг хуучирсан болгож магадгүй юм. Хэрэв та эдгээр өөрчлөлтийг хийж байгаа бол зорилтот хугацааг хадгалахын тулд Arduino EEPROM -ийг ашиглаарай, ингэхийн тулд би RTC EEPROM -ийг ашигласан.

Алхам 4: Үйл ажиллагаа ба тохиргоо

Үйл ажиллагаа ба тохиргоо
Үйл ажиллагаа ба тохиргоо
Үйл ажиллагаа ба тохиргоо
Үйл ажиллагаа ба тохиргоо
Үйл ажиллагаа ба тохиргоо
Үйл ажиллагаа ба тохиргоо

Гурван товчлуур байна

1. Цэс / тохиргоо

2. Дээш

3. Доошоо

Цэсийн товчлуур нь өнөөгийн цаг, зорилтот цаг, дельта цаг гэсэн гурван дэлгэцийн төрлөөр дугуй унах боломжийг олгодог. Дельта цаг нь одоогийн цаг ба зорилтот хугацааны хоорондох өдрийн тоо, HH/MM/SS -ийг харуулдаг. Энэ нь ирээдүйд зорилт бол t- ба тоолох, эсвэл өнгөрсөн хугацаанд бол t+ гэж тоолох болно.

Одоогийн эсвэл зорилтот цагийг тохируулахын тулд одоогийн цаг эсвэл зорилтот цагийн дэлгэцийг сонгоно уу. Цагийг өөрчлөхийн тулд цэсийн товчлуурыг 2 секундын турш бариад суллахад тохиргооны горимд орно. Хөрш зэргэлдээх "/" эсвэл ":" нь "" болж хувирах бөгөөд энэ нь таны аль цифрийг тохируулж байгааг зааж өгнө. Дээш/доош товчлууруудыг ашиглан hh/mm/ss ба mm/dd/yy -ийг тус тусад нь тохируулна уу. Би mm/dd/yy ба dd/mm/yy хооронд шилжих тохиргоог нэмээгүй, энэ нь кодыг өөрчлөх шаардлагатай байна, эсвэл хэн нэгэн энэ боломжийг нэмэхийг хүсч магадгүй юм.

Хэрэв та минутыг 59 -ээс дээш эсвэл 00 -оос доош хийвэл цагийн дэлгэц мөн тохируулагдах болно гэдгийг та анзаарах болно. Энэ цифрийн 0 -ээс доогуур буюу түүнээс дээш давсан тохиолдолд дараагийн өндөр утгыг өөрчлөх секунд, цаг, өдрийн хувьд мөн адил байна. Би хувь хүний сар бүрийн хязгаарыг програмчлахаас зайлсхийхийн тулд үүнийг хийсэн бөгөөд хэрэв 2 -р сарыг үсрэх жилд 29 хоног хийх шаардлагатай бол. Цагийг тохируулах ажлыг үнэн хэрэгтээ 1-1970 оны 1-р сараас хойш хэдхэн секундын дотор хийдэг.

Тооцооллыг харуулахын тулд би энгийн видео нэмсэн. Би эдгээрийг эргэдэг дугуйны дэлгэц шиг болгохыг хүссэн. Хэрэв та өөрчлөлтийн үргэлжлэх хугацааг тохируулахыг хүсч байвал INO 69 -р мөрөнд өөрчлөлтийг хурдасгах эсвэл удаашруулах хэд хэдэн сонголтыг танд өгөх болно. 120ms нь тоонуудыг хангалттай удаан гүйлгэх бөгөөд энэ нь тасралтгүй ажилладаг дугуй байх болно.

Энэхүү зааварчилгаа танд таалагдсан гэж найдаж байна.

Патрик Гешвинднер

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