Мазмұны:

132 пиксельдік сағат: 5 қадам (суреттермен)
132 пиксельдік сағат: 5 қадам (суреттермен)

Бейне: 132 пиксельдік сағат: 5 қадам (суреттермен)

Бейне: 132 пиксельдік сағат: 5 қадам (суреттермен)
Бейне: RTX 3090 Ti vs RTX 3060 Ultimate Showdown for Stable Diffusion, ML, AI & Video Rendering Performance 2024, Қараша
Anonim
Image
Image
132 пиксельдік сағат
132 пиксельдік сағат

Мен есімде қалғанымдай, жарық диодты және уақытты ұнататынмын. Бұл жобада мен шырша тақтасы арқылы орнатылған және жарқырайтын 132 неопиксельді жарықдиодты пайдаланып ағымдағы уақытты көрсететін үлкен қабырға сағатын жасадым. Бұл әр сағат, минут және секунд үшін жеке пиксельі бар гибридті аналогты цифр.

Бұл мен қабылдаған ең ірі жоба болды, мен бұл туралы 6 ай бұрын ойлана бастадым, және идея біртіндеп қосылды. Мен нәтижеге өте қуаныштымын және сіздермен бөлісуді асыға күтемін.

1 -қадам: материалдар мен құралдарды жинау

Жабдықтар мен құралдарды жинау
Жабдықтар мен құралдарды жинау
Жабдықтар мен құралдарды жинау
Жабдықтар мен құралдарды жинау
Жабдықтар мен құралдарды жинау
Жабдықтар мен құралдарды жинау
Жабдықтар мен құралдарды жинау
Жабдықтар мен құралдарды жинау

Компоненттер

Бұл жоба менің жергілікті DIY дүкеніндегі хобби тақтасына салынған. Тақтаның ені 850 мм, биіктігі 500 мм және тереңдігі 18 мм.

Бұл жобада қолданылатын светодиодтар 5050 WS2812b дөңгелек ПХД -де орнатылған, олардың диаметрі шамамен 9 мм, артқы жағында дәнекер жастықшалары бар.

Мен Arduino Pro Mini үйлесімді микроконтроллерді қолданамын. Бұл 5 В 16 МГц нұсқасы. Мен мұны таңдадым, өйткені ол өте жұқа дизайнмен, кішкентай аяқтармен және барлық қажет порттармен және болашақта жаңартуларға арналған қосалқы бөлшектермен жабдықталған. Ол сондай -ақ 5 вольтты құрайды, сондықтан мен светодиоды, микроконтроллер мен RTC үшін бір қуат көзін қолдана аламын

Уақытты сақтау DS3231 чипі бар RTC (Real Time Clock) модулімен қамтамасыз етіледі. Бұл чип өте дәл, сондықтан уақыт тым көп кетпеуі керек.

Сонымен қатар қолданылады:

Сым. Дәнекерлеу және ыстық желім.

Құралдар:

Қуат бұрғылау және ағаш бұрғылар (10 мм және 5 мм)

Пісіру темірі

Ыстық желім қаруы

сым үзінділері

Дремель мен плунж маршрутизаторының керек -жарақтары

2 -қадам: Таңбалау, бұрғылау және бағыттау

Таңбалау, бұрғылау және бағыттау
Таңбалау, бұрғылау және бағыттау
Таңбалау, бұрғылау және бағыттау
Таңбалау, бұрғылау және бағыттау
Таңбалау, бұрғылау және бағыттау
Таңбалау, бұрғылау және бағыттау

Бұрғылау

  • Қарама -қарсы бұрыштардан сызық сызу арқылы тақтаның ортасын түзу жиектің көмегімен табыңыз.
  • Жіп пен қаламның көмегімен 3 шеңберді белгілеңіз. Сыртқы дөңгелек тақтаның шетінен шамамен 20 мм қашықтықта болуы керек, ал қалған 2 сызық соңғы жолдан 15 мм қашықтықта жылжиды.
  • Мен сыртқы 2 жолдағы минуттар мен секундтардың, ішкі сызықтағы сағаттардың орнын белгілеуге көмектесу үшін басылған сағатты қолдандым.
  • Әр сағатына, минутына және секундына шамамен 5 мм тереңдікте 10 мм тесіктер бұрғылаңыз.
  • Тақтаны сағат, минут және секундқа тесу үшін 5 мм бұрғылауды қолданыңыз.

Маршруттау

Бұл қадам қажет болмаса да, бұл сағатты қабырғаға ілініп тұруға мүмкіндік береді.

  • Тақтадағы маршрутизатор мен дөңгелек бағыттаушы маршрут сымдық арналарын қолдану
  • РТК мен микроконтроллердің тұруы үшін ойықты белгілеңіз және бағыттаңыз.
  • Арнаны сыртқы сызықтардан сымдардың ойығына дейін бағыттаңыз

3 -қадам: Солдаттар, кесу және жалаңаштау

Солай көп сарбаздық, кесу және жалаңаштау
Солай көп сарбаздық, кесу және жалаңаштау
Солай көп сарбаздық, кесу және жалаңаштау
Солай көп сарбаздық, кесу және жалаңаштау
Солдаттар, кесу және жалаңаштау
Солдаттар, кесу және жалаңаштау

Бұл келесі бөлік айтуға қарағанда әлдеқайда оңай. Менің кеңесім - бұл асығыс. жүйені табуға тырысыңыз және ырғаққа түсіңіз.

Жарық диодтарының әрқайсысына 5 вольт, 5 вольт, Деректерді енгізу, Деректерді шығару, Жерге қосу және Жерге қосу қажет. Микроконтроллер мен РТЖ қуатын қоса алғанда, оның 400 -ден астам сымдары, олардың барлығы екі жақтан жыртылған және дәнекерленген.

Бұл қадам үшін жабысқақ көк зат өте пайдалы.

  • Мен бір -біріне қосылу үшін қажет сымның ұзындығын анықтау үшін олардың тесіктеріне 2 жарықдиодты қоюдан бастадым.
  • Сымның бірінші бөлігін бағыттаушы ретінде пайдаланып, мен әр түсті сымның 60 -ын кесіп алдым.
  • Әр сымның ұшынан 2 мм ілгекті алып тастап, оларды дәнекермен бекітіңіз.
  • Жарық диодты жастықшалардың әрқайсысына дәнекерлеудің кішкене бөлігін дәнекерлеңіз.
  • Сымдарды светодиодтарға дәнекерлеп, минут пен секунд ішінде 60 тізбекті және сағат ішінде 12 тізбекті құрыңыз. Мен 5В үшін қызыл сымды, деректер үшін сары, жер үшін көк түсті қолдандым.
  • Әрбір Деректерді шығаруды (DOUT) келесі жарықдиодты Data In (DIN) желісіне қосуды ұмытпаңыз
  • Әрбір тізбекті дозадағы соңғы сымға деректер сымы қажет емес.

Барлық тізбектер аяқталғаннан кейін оларды орнатпас бұрын оларды сынап көрген дұрыс. Мен әр LED жұмыс істеп тұрғанын растау үшін Arduino UNO мен Adafruit NeoPixel Strand тестін қолдандым.

Ұзын сымдарды 5В, Жерге және Деректер тізбектерінің әрқайсысына дәнекерлеңіз.

Бұл кезде бес 5В сым, Arduino Pro Mini -ге қосылған үш деректер сымы және 5 жер сымы болуы керек.

5В сымдардың ұштарынан 5 мм қашықтықты алып тастаңыз және олардың барлығын дәнекерлеңіз және жердегі сымдар үшін қайталаңыз.

Үш тізбекті аяқтағаннан кейін Arduino Pro Mini -дің RAW түйреуішіне 5В сымды, сондай -ақ RTC үшін VCC істігіне жалғаңыз. Arduino Pro Mini мен RTC бойынша GND жерге тұйықталатын сым, содан кейін тағы 2 сым:

SCL RTC -ден A5 -ке Pro Mini -де

SDA RTC -ден A4 -ке дейін Pro Mini -де

Жарық диодтарынан алынған деректер желілері келесіге қосылуға тиіс:

  • Секундтар - Сандық түйреуіш 3.
  • Минуттар - DigitalPin 4
  • Сағат - DigitalPin 5

4 -қадам: Орнату

Орнатылуда
Орнатылуда
Орнатылуда
Орнатылуда
Орнатылуда
Орнатылуда

Дәнекерленгеннен кейін, жарықдиодты тесіктерге орнату тікелей алға қарай жүргізілуі керек. Жарықдиодты орнату керек, сондықтан деректер артқы жағынан қараған кезде сағат тіліне қарсы айналады, себебі код алдыңғы жағына орнатылады.

Мен оларды ұстап тұру үшін аз мөлшерде ыстық желімді қолдандым, өйткені егер ол болашақта бір жарықдиодты алмастыра алса.

Мен сондай -ақ ыстық сымдарды барлық сымдарды ұқыпты және ұқыпты ұстау үшін және бөшке қосқышын тақтаға бекіту үшін қолдандым.

Бірнеше arduino pro mini бағдарламалау нұсқаулықтары бар. Мен бұл кодты Arduino -ға жүктеу үшін сыртқы USB -ді сериялық түрлендіру әдісін қолданамын:

Бұл код сонымен қатар RTC -дегі уақытты ол құрастырылған уақытқа орнатады. сондықтан жүктеу түймесін басу маңызды, сондықтан ол мүмкіндігінше тез сәйкес келеді және жүктеледі.

Бұл кодтың көп бөлігін Энди Доро NeoPixel қоңырау сағатынан алған. Кейбіреулер Adafruit NeoPixel Strand тестінен, ал кейбіреулерін мен жинадым.

Сізге бірнеше кітапхананы орнату қажет. Олар Arduino бағдарламалық жасақтамасындағы Кітапханалар менеджерінен қол жетімді.

Ws2812b светодиоды үшін Adafruit NeoPixel

I2C арқылы RTC -мен сөйлесу үшін сым (бұл стандартты түрде салынған)

және RTClib RTC -тен не сұрау керектігін білгені үшін

/************************************************* ***************************Энди Дороның NeoPixel қоңырау сағаты ([email protected]) https://andydoro.com/ringclock/ ************************************************ **************************

Қайта қарау тарихы

Күні не арқылы

20140320 AFD Бірінші жобасы 20160105 AFD Faded доға 20160916 AFD Trinket үйлесімді 20170727 AFD 3D қоршау үшін STARTPIXEL қосылды, айнымалы бастапқы нүкте, DST кітапханасы арқылы 20180424 AFD автоматты DST қолдауын қосты https://github.com/andydoro/DST_RTC *

/ кітапхана кодын қосыңыз:

#қосу #қосу

#қосу

// түйреуіштерді анықтау

#анықтамасы SECPIN 3 #анықтау MINPIN 4 #анықтау HOUPIN 5

#dightine BRIGHTNESS 20 // максималды жарықтықты орнатыңыз

#анықтау r 10

#анықтау g 10 #анықтау b 10 RTC_DS3231 rtc; // Сағат объектісін орнату

Adafruit_NeoPixel жолағыS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // жолақты объект

Adafruit_NeoPixel жолағыM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // жолақты объект Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // жолақты объект байт pixelColorRed, pixelColorGreen, pixelColorBlue; // түс мәндерін сақтайды

жарамсыз орнату () {

Wire.begin (); // I2C бастаңыз rtc.begin (); // сағатты бастау

Serial.begin (9600);

// pinMode (SECPIN, OUTPUT) пинмодтарын орнатыңыз; pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);

if (rtc.lostPower ()) {

Serial.println («RTC қуатын жоғалтты, уақытты орнатуға мүмкіндік береді!»); // келесі жол RTC бұл эскиз құрастырылған күні мен уақытына орнатады rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))); // Бұл жол РТК -ны нақты күн мен уақытпен белгілейді, мысалы, орнату үшін // 21 қаңтар 2014 ж. Таңғы 3 -те: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

stripM.begin (); stripH.begin (); // жолақ.шоу (); // Барлық пикселдерді «өшіру» күйіне келтіріңіз

// іске қосу реті

кешіктіру (500);

colorWipeS (stripS. Color (0, g, 0), 5); // Көк түсWipeM (stripM. Color (r, 0, 0), 5); // Көк түсWipeH (stripH. Color (0, 0, b), 50); // Көк

кешіктіру (1000);

DateTime theTime = rtc.now (); // DST байтын ескереді secondval = theTime.second (); // алу секунд байт минуттық = theTime.minute (); // алу минут int hourval = theTime.hour (); сағаттық уақыт = сағаттық сағат % 12; // Бұл сағат 12 сағат, егер 13-23 болса, 0-11`-ге айналдырыңыз

for (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); кешіктіру (5); }

for (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); кешіктіру (5); }

for (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); кешіктіру (5); }

}

void loop () {

// уақыт ал

DateTime theTime = rtc.now (); // DST ескереді

байт секундтық = theTime.second (); // секунд алыңыз

байт минуты = theTime.minute (); // алу минут int hourval = theTime.hour (); // алу сағаттық сағат = сағат тілі % 12; // Бұл сағат-12 сағат, егер 13-23 болса, 0-11`-ге айналдырыңыз

stripS.setPixelColor (екінші мән, 0, 0, 20); stripS.show (); кешіктіру (10); if (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); кешіктіру (16);}}

stripM.setPixelColor (минуттық, 0, g, 0);

stripM.show (); кешіктіру (10); if (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); кешіктіру (16);}}

stripH.setPixelColor (сағат тілі, r, 0, 0);

stripH.show (); кешіктіру (10); if (secondval == 59 && minuteval == 59 && hourval == 11) {for (uint8_t i = stripH.numPixels (); i> 0; i--) {stripH.setPixelColor (i, 0, 0, b); stripH.show (); кешіктіру (83);}} // сериялық күйін келтіру үшін Serial.print (сағат тілі, DEC); Serial.print (':'); Serial.print (минуттық, DEC); Serial.print (':'); Serial.println (Secondval, DEC); }

// Нүктелерді бірінен соң бірін түспен толтырыңыз

жарамсыз colorWipeS (uint32_t c, uint8_t күту) {үшін (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); кешіктіру (күту); }}

жарамсыз colorWipeM (uint32_t c, uint8_t күту) {

for (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); кешіктіру (күту); }}

жарамсыз colorWipeH (uint32_t c, uint8_t күту) {

for (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); кешіктіру (күту); }}

5 -қадам: Соңғы әсерлер

Image
Image
Соңғы жанасулар
Соңғы жанасулар

Енді қалуға болатын нәрсе - RTC мен микроконтроллерді ойыққа бекіту.

Мен RTC батареясын жоғары қаратып қойдым, сондықтан қажет болған жағдайда батареяны оңай ауыстыра аламын.

5В сымдарын коннектордың + жағына, ал жерге тұйықтау жағына жалғаңыз

Қуат беріңіз!

Менде USB аккумуляторлық банкке қосылдым, бірақ USB телефонды зарядтағыш жақсы жұмыс істейді.

Ескерту:

Жарық диодтарының жарықтығы кодта орнатылған. Ағымдағы ұтыс ойынының төмен болуы үшін ол төмен деңгейге қойылды. Барлық жарық диодтары жанған кезде, ол 8 амперді тарта алады. Ағымдағы қондырғыда оның мәні 1 -ден төмен.

Сағат сайысы
Сағат сайысы
Сағат сайысы
Сағат сайысы

Сағат сайысында екінші орын

Ұсынылған: