Мазмуну:
- 1 -кадам: Билл материалдар
- 2 -кадам: Ойуу жана оюу
- 3 -кадам: Лакты сүртүү жана колдонуу
- 4 -кадам: Районду жасоо
- 5 -кадам: Программаны жүктөө
- 6 -кадам: LED диоддорун коюу
- 7 -кадам: LEDди туташтыруу
- 8 -кадам: Райондук тактаны LED менен туташтыруу
- 9 -кадам: мрамор коюу
Video: Бинардык стол сааты: 9 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Бинардык сааттар эң сонун жана экиликти (санарип түзмөктөрдүн тили) билген адам үчүн гана. Эгерде сиз технологиялык жигит болсоңуз, анда бул кызык саат сиз үчүн. Андыктан өзүңүз жасаңыз жана убактыңызды жашырыңыз!
Сиз Интернеттен ар кандай типтеги бинардык сааттарды көп таба аласыз. Amazon.com сыяктуу онлайн дүкөндөн экилик саат сатып алсаңыз болот. Бирок бул саат баарынан айырмаланат жана мында мрамор ойноп, ага жарашыктуу көрүнүш бердим.
Баруудан мурун демо видеону көрүңүз.
1 -кадам: Билл материалдар
Аппараттык компоненттер
1. Arduino Pro Micro (aliexpress.com сайтынан сатып алыңыз): Бул сааттын негизги жүрөгү жана RTCден убакытты окуйт жана ошого жараша светодиоддорду айдоого көрсөтмө берет. Эгер өлчөмү сиз үчүн мааниге ээ болбосо, Pro Micro ордуна Arduino Nano колдоно аласыз.
2. DS3231 RTC модулу (aliexpress.com сайтынан сатып алуу): DS3231 RTC электр өчкөндө да убакытты көзөмөлдөп турат. DS1307 сыяктуу башка RTC колдонулушу мүмкүн, бирок DS3231 тагыраак.
3. MAX7219CNG LED Driver IC (aliexpress.com сайтынан сатып алуу): Arduino төөнөгүчтөрдүн саны чектелүү. Ошентип, эгер сиз Arduino казыктарын текке кетирбестен, көптөгөн тонна светодиоддорду айдагыңыз келсе, MAX7219 - бул куткаруучу. Бул сериялык маалыматтарды талап кылат жана 64 LEDди өз алдынча айдай алат.
4. 20 PCS Blue LED, 5мм (aliexpress.com сайтынан сатып алуу): Blue мен үчүн эң жакшы натыйжаны берди. Сиз башка түстөр менен аракет кыла аласыз.
5. 20 PCS Playing Marble (aliexpress.com сайтынан сатып алуу): Стандарттык өлчөмдөгү ойноочу мрамор колдонулган. Мрамор жарык өтүшү үчүн тунук болушу керек.
6. Резистор 10K: MAX7219 IC сегментинин агымын көзөмөлдөө үчүн колдонулат. Ар кандай сегменттик токтун так наркын билүү үчүн маалымат барагын караңыз.
7. Зымдар
8. Прототип PCB Board (aliexpress.com сайтынан сатып алыңыз): Мен IC базасы менен MAX7219 IC үчүн ПХБ прототибин колдондум. Сиз ошондой эле өзүңүздүн PCB тактаңызды жасай аласыз.
Аппараттык куралдар
1. CNC 3018 PRO Laser Engraver Wood CNC Router Machine (aliexpress.com сайтынан сатып алыңыз): Theis DIY CNG машинасы мрамор жана светодиоддор үчүн жыгачка оюу үчүн колдонулган. Бул эң сонун машина, ал кандайдыр бир жасоочу жана хоббист үчүн төмөн баада.
2. Soldering Station (aliexpress.com сайтынан бирөөсүн сатып алыңыз): Долбоор үчүн кээ бир ширетүү талап кылынат жана жакшы ширетүүчү темир даярдоочу үчүн эң керектүү курал. 60W DIY ширетүү үчүн жакшы чечим болуп саналат.
3. Wire Cutter (aliexpress.com сайтынан сатып алыңыз)
4. CNC үчүн титан капталган карбиддик учтуу фрезер (aliexpress.com сайтынан сатып алыңыз): Сиз ошондой эле машина менен берилген битти колдонуп көрсөңүз болот. Бул учурда, дизайнга бир аз өзгөртүүлөрдү киргизүү керек.
2 -кадам: Ойуу жана оюу
Мен сааттын диоддорун коюу үчүн 165X145X18.8 мм Soft Maple жыгач бөлүгүн алдым. Ар бир чырактын үстүнө мен мрамор койом жана стандарттык ойноочу мрамордун өлчөмү диаметри 15.5 мм. Ошентип, тереңдиги 7 мм болгон 15,7 мм тешик жасадым. Тешиктин ортосунда мен LED диаметри үчүн 5 мм бургу жасадым. Бардык текст 2 мм тереңдикте жасалган. Тандооңуздун тереңдигин көбөйтө же азайта аласыз. Сиз ошондой эле текст үчүн лазердик гравюраны колдонуп көрсөңүз болот.
Толук дизайн Inventables компаниясынын Easel тарабынан жасалган. Easel-бул вебге негизделген программалык камсыздоо платформасы, ал сизге бир, жөнөкөй программадан дизайн түзүүгө жана оюуга мүмкүндүк берет жана көпчүлүк мүмкүнчүлүктөр бекер. Сиз системага каттоо эсебин түзүү же Gmail аркылуу кирүүңүздү гана талап кылдыңыз.
Easel Pro-бул Inventables’тин бекер Easel программасына негизделген мүчөлүккө негизделген булут программасы. Easel жана Easel Pro татаал CAD жана CAM продуктуларын өндүрүүчү программалар менен байланышкан тоскоолдуктарды азайтып, колдонуучуларга физикалык продукцияларды чыгарууну жеңилдетет.
Easelди колдонуу менен сиз дизайн файлын G-код форматында экспорттой аласыз же CNCти Easel чөйрөсүнөн түз орнотуп, CNCге буйрук жөнөтө аласыз. Бул учурда, сиз Easel үчүн драйверди орнотушуңуз керек. Сиз ошондой эле Easel IDEге мурда түзүлгөн G-кодун импорттой аласыз жана өзгөртө аласыз. Мен бул жерге дизайн файлын киргиздим. Сиз Easelди колдонуу менен дизайнды оңой эле өзгөртө аласыз.
3 -кадам: Лакты сүртүү жана колдонуу
Лак жыгач долбоорлорун жана сүрөттөрдү кооз бүтүрө алат. Лакты жыгачка сүйкөөдөн мурун, кесимиңизди кум менен тазалаңыз жана жумуш аянтыңызды тазалаңыз. Тегиздөө жылмакай көрүнүш берет жана жыгачты лак үчүн даярдайт. Лакты бир нече жука катмарга сүйкөп, экинчисине өтүүдөн мурун ар бирин жакшылап кургатыңыз. Сүрөттү лак кылуу үчүн, аны толугу менен кургатып, анан лакты этияттап сүртүңүз. Көптөгөн сүрөттөр үчүн бир пальто жетиштүү, бирок сиз мурункусун жакшылап кургатып койгондо кошумча катмар кошо аласыз.
Лакты колдонуудан мурун лакты колдонуудан мурун бардык кемчиликтерди жана тактарды кетирүү керек. Бул үчүн бүтпөгөн бөлүктөр үчүн 100 чыйратылган кумду колдонуңуз жана жыгачтын даны менен иштеңиз. Кесим жылмакай болгонго чейин акырын кум менен сүртүңүз. Жыгачтын бөлүгүн тазалагандан кийин лакты жакшы желдетилүүчү жерге сүйкөп коюңуз.
Лак жыгачты экологиялык чаңдан жана нымдуулуктан сактайт, бирок жыгачтын түсүнө таасирин тийгизет.
4 -кадам: Районду жасоо
Сааттын негизги компоненти - Arduino Pro Mini микроконтроллер тактасы жана DS3231 RTC модулу. Arduino Pro Mini менен RTC модулунун байланышы абдан жөнөкөй. RTC модулунун SDA пинин Arduino SDA пинине жана RTC модулунун SCL пинине Arduino SCL пинине туташтыруу керек. SDA жана SCL казыктары чындыгында A4 жана A5 пиндери Arduino. Сиз ошондой эле Arduino жана RTC модулдарынын ортосунда жалпы байланышты түзүшүңүз керек. Мен туташтыруу үчүн секирүүчү зымдарды колдондум.
Arduino менен DS3231 RTC ортосундагы байланыш:
Arduino | DS3231 |
---|---|
SCL (A5) | SCL |
SDA (A4) | SDA |
5V | VCC |
GND | GND |
Саатты, мүнөттү жана секундду көрсөтүү үчүн экилик саат 20 LEDди талап кылат. Эгерде сиз датаны көрсөткүңүз келсе, ал дагы талап кылат. Arduino тактасында GPIO төөнөгүчтөрү бар. Ошентип, мен MAX7219CNG LED драйверинин ICин Arduino тактасынын үч казыгын колдонуп, көп тонна светодиоддорду колдонуу үчүн колдондум.
MAX7219 драйверинин ICи 64 жеке светодиодду айдай алат, ал эми Arduino менен байланыш үчүн 3 зымды гана колдонот, жана дагы бир нече драйверлерди жана матрицаларды чынжырлап, ошол эле 3 зымдарды колдоно алабыз.
64 светодиоддору ICдин 16 чыккычы менен шартталган. Эми бул кантип мүмкүн болот деген суроо туулат. Ооба, диоддордун максималдуу саны бир эле учурда күйөт, чынында сегиз. Светодиоддор 8 × 8 катар жана мамыча катары жайгаштырылган. Ошентип, MAX7219 ар бир мамычаны өтө кыска мөөнөткө активдештирет жана ошол эле учурда ар бир катарды айдайт. Ошентип, мамычаларды жана катарларды тез алмаштыруу менен адам көзү үзгүлтүксүз жарыкты гана байкайт.
MAX7219 VCC жана GND Arduino 5V жана GND казыктарына жана башка үч казыкка, DIN, CLK жана CS Arduino тактасынын каалаган санарип пинине өтүшөт. Эгерде биз бир нече модулду туташтыргыбыз келсе, биз мурунку үзүлүү тактасынын чыгуучу казыктарын жаңы модулдун кирүү казыктарына туташтырабыз. Чындыгында, бул казыктар баары бирдей, мурунку тактанын DOUT пини жаңы тактанын DIN пинине барат.
Arduino менен MAX7219CNG ортосундагы байланыш:
Arduino | MAX7219 |
---|---|
D12 | DIN |
D11 | CLK |
D10 | ЖҮК |
GND | GND |
5 -кадам: Программаны жүктөө
Бардык программа Arduino чөйрөсүндө жазылган. Эскиз үчүн эки тышкы китепкана колдонулган. Бири RTC модулу үчүн, экинчиси MAX7219 IC үчүн. Китепканаларды шилтемеден жүктөп алып, программаны түзүүдөн мурун Arduino IEDге кошуңуз.
Arduino Pro Miniге программа жүктөө бир аз татаал. Окутууну карап көрүңүз, эгер сиз буга чейин Arduino Pro Mini колдоно элек болсоңуз:
/*
GIT: https://github.com/jarzebski/Arduino-DS3231> GIT: https://github.com/jarzebski/Arduino-DS3231> */#include "Wire.h" #include "DS3231.h" #include "LedControl.h" /* Эми биз менен иштөө үчүн LedControl керек. ***** Бул пин номерлери сиздин аппараттык жабдууларыңыз менен иштебей калышы мүмкүн ***** пин 12 DataIn пинге туташкан CLK пин 10го туташкан LOAD Бизде бир гана MAX72XX бар. */ DS3231 сааты; RTCDateTime dt; LedControl lc = LedControl (12, 11, 10, 1); int секунд, мүнөт, саат; байт номери [10] = {B00000000, B01000000, B00100000, B01100000, B00010000, B01010000, B00110000, B01110000, B00001000, B01001000}; void setup () {//Serial.begin(9600); / * MAX72XX күйгүзүү учурунда энергияны үнөмдөө режиминде, биз ойготуу чалуу кылышыбыз керек */ lc.shutdown (0, false); / * Жарыкты орто мааниге коюңуз */ lc.setIntensity (0, 15); / * жана дисплейди тазалоо */ lc.clearDisplay (0); //lc.setLed(0, катар, col, true); // lc.setRow (0, 0, B11111111); // lc.setRow (0, 1, B11111111); // lc.setRow (0, 2, B11111111); // lc.setRow (0, 3, B11111111); // lc.setRow (0, 4, B11111111); // lc.setRow (0, 5, B11111111); // lc.setColumn (0, 2, B11111111); // lc.setColumn (0, 3, B11111111); // lc.setColumn (0, 4, B11111111); // lc.setColumn (0, 5, B11111111); // Initialize DS3231 clock.begin (); // Эскизди түзүү убактысын коюу //clock.setDateTime(_DATE_, _TIME_); pinMode (5, INPUT_PULLUP); pinMode (6, INPUT_PULLUP); pinMode (7, INPUT_PULLUP); } int меню = 0, өйдө, ылдый; int hours_one; int hours_ten; int minutes_one; int minutes_ten; int seconds_one; int seconds_ten; void loop () {if (digitalRead (5) == 0) {delay (300); меню ++; if (меню> 3) меню = 0; } if (меню == 0) {dt = clock.getDateTime (); саат = dt.hour; мүнөт = dt.minute; секунд = dt.second; эгер (саат> 12) саат = саат - 12; if (hours == 0) hours = 1; hours_one = саат%10; hours_ten = hours/10; minutes_one = мүнөт%10; minutes_ten = мүнөт/10; seconds_one = секунд%10; seconds_ten = seconds/10; lc.setRow (0, 0, саны [seconds_one]); lc.setRow (0, 1, саны [seconds_ten]); lc.setRow (0, 2, саны [minutes_one]); lc.setRow (0, 3, саны [minutes_ten]); lc.setRow (0, 4, саны [hours_one]); lc.setRow (0, 5, саны [hours_ten]); } if (menu == 1) {if (digitalRead (6) == 0) {delay (300); саат ++; if (hours> = 24) hours = 0; } if (digitalRead (7) == 0) {delay (300); саат-; эгер (саат = 60) мүнөт = 0; } if (digitalRead (7) == 0) {delay (300); мүнөт--; if (minutes <0) minutes = 0; } minutes_one = мүнөт%10; minutes_ten = мүнөт/10; lc.setRow (0, 4, B00000000); lc.setRow (0, 5, B00000000); lc.setRow (0, 1, B00000000); lc.setRow (0, 0, B00000000); lc.setRow (0, 2, саны [minutes_one]); lc.setRow (0, 3, саны [minutes_ten]); } if (меню == 3) {clock.setDateTime (2020, 4, 13, саат, мүнөт, 01); меню = 0; } //lc.setLed(0, катар, col, false); //lc.setLed(0, катар, col, true); //lc.setColumn (0, col, B10100000); //lc.setRow(0, 4, B11111111); //lc.setRow(0, катар, (байт) 0); //lc.setColumn(0, col, (байт) 0); // DS3231_dateformat мисалында нөлгө жетүү үчүн // Serial.print ("Чийки маалыматтар:"); // Serial.print (dt.year); Serial.print ("-"); // Serial.print (dt.month); Serial.print ("-"); // Serial.print (dt.day); Serial.print (""); // Serial.print (dt.hour); Serial.print (":"); // Serial.print (dt.minute); Serial.print (":"); // Serial.print (dt.second); Serial.println (""); // // кечиктирүү (1000); }
6 -кадам: LED диоддорун коюу
Бул этапта мен бардык светодиоддорду жыгач тактайдын тешиктерине коём. Светодиоддордун туташуулары схемада көрсөтүлгөн. Биз LED айдоо үчүн MAX7219 LED драйверин колдоно тургандыктан, бардык светодиоддор матрица түрүндө туташышы керек. Ошентип, мен ар бир мамычанын бардык LED диоддорунун анод казыктарын жана схемага ылайык ар бир катоддун бардык катод казыктарын бириктирдим. Эми, биздин мамыча казыктары чындыгында светодиоддордун аноддук казыктары жана сап казыктары чындыгында светодиоддордун катод казыктары.
Жарык диоддорун MAX7219 колдонуп айдаш үчүн, ICдин цифралуу пинине жана LEDдин аноддук пинине ICдин сегментинин пинине туташуу керек. Ошентип, биздин мамы казыктары сегменттин казыктарына туташтырылышы керек жана сап казыктары MAX7219 цифрдык пинине туташтырылышы керек.
Сиз ISET пини менен MAX7219 IC VCCнин ортосундагы резисторду туташтырышыңыз керек жана бул резистор сегменттин казыктарын башкарат. Мен ар бир сегменттин пининде 20mA сактоо үчүн 10K каршылыгын колдондум.
7 -кадам: LEDди туташтыруу
Бул этапта мен бардык светодиоддорду катар-тилке матрицасы форматында туташтырдым. Мен LEDдерди туташтыруу үчүн кошумча секирүүчү зымдарды колдонушум керек болчу, бирок эгерде LEDлердин учтары бири -бирине тийе турганчалык узун болсо, сиз кошумча зымдардын жардамысыз туташууну жасай аласыз.
Бул конфигурацияда эч кандай резистор талап кылынбайт, анткени MAX7219 токтун камын көрөт. Сиздин милдетиңиз ISET каршылыгынын туура баасын тандап алуу жана бул резистор менен ISET пинин көтөрүү. Жарык диоддорду жайгаштыруудан жана туташтыруудан мурун мен ар бир LEDди текшерүүнү сунуштайм. Анткени начар LED коюу көп убакытты өлтүрөт. Кийинки кадамда биз катар жана мамыча зымдарын MAX ic -ке туташтырабыз.
8 -кадам: Райондук тактаны LED менен туташтыруу
Биздин схема RTC, Arduino жана MAX7219, анын ичинде узак убакытка даяр жана биз дагы LED стрицасын мурунку этапта даярдадык. Эми биз бардык нерселерди схемага ылайык бириктиришибиз керек. Биринчиден, биз катар жана мамыча зымдарын MAX7219ICке туташтырышыбыз керек. Байланыш схемада айтылган. Түшүнүктүү болушу үчүн төмөндөгү таблицаны караңыз.
LED Matrix | MAX7219CNG |
---|---|
ROW0 | DIGIT0 |
ROW1 | DIGIT1 |
ROW2 | DIGIT2 |
ROW3 | DIGIT3 |
COLUMN0 | SEGA |
COLUMN1 | SEGB |
COLUMN2 | SEGC |
COLUMN3 | SEGD |
COLUMN4 | SEGE |
COLUMN5 | SEGF |
ROW0-> Эң жогорку катар
COLUMN0 -> Оң жактагы мамыча (SS COLUMN)
Байланышты түзгөндөн кийин, байланышты бузбоо үчүн, PCB тактасын жана Arduino -ны жыгач бөлүгү менен оңдоо керек. Мен ысык желимди колдонуп, бардык схемаларды ордуна койдум. Кыска туташууну болтурбоо үчүн, ПХБнын ылдый жагындагы ширетүүчү түйүндү жашыруу үчүн көп өлчөмдөгү желимди колдонуңуз.
Саатты колдонууга ыңгайлуу кылуу үчүн, керек болгондо убакытты тууралоо мүмкүнчүлүгүн сактоо керек. Убакытты тууралоо үчүн үч баскычты алмаштырдым. Бири вариантты өзгөртүү үчүн, экөө саат жана мүнөттү көбөйтүү жана азайтуу үчүн. Баскычтар оң жактагы оң бурчка жайгаштырылган, ошондуктан аларга оңой жетүүгө болот.
9 -кадам: мрамор коюу
Бул биздин долбоордун акыркы этабы. Бардык райондук туташуу аяктады. Эми мраморду жыгач сааттын үстү жагына коюш керек. Мрамор коюу үчүн мен ысык клей колдондум. Бул үчүн ачык түстөгү желим таякчаны колдонуңуз. Мен ар бир тешикке ысык клей сүйкөдүм жана светодиоддордун үстүнө мраморду акырындык менен ар бир тешикке койдум. Желимди бир калыпта кошуу, жарыктын жарыгын жогорулатат. Мен саатыма BLUE LED колдондум. Бул мага эң жакшы натыйжаны берди.
Саатка күч бер. Убакытты көрсөтсө, куттуктайм !!!
Сиз жетиштиңиз!
Ырахат алыңыз!
Муну жаркыратуу конкурсунда экинчи орунду ээледи
Сунушталууда:
Микро бинардык саат: 10 кадам (сүрөттөр менен)
Микро бинардык саат: мурда бинардык чектелген дисплей аянтын колдонот, инструктивдүү (бинардык DVM) түзүп, экилик саатты түзүү үчүн ондуктан экиликке которуунун негизги код модулун түзгөн кичинекей гана кадам
4-бит бинардык эсептегич: 11 кадам (сүрөттөр менен)
4-бит бинардык эсептегич: Мен компьютерлердин фундаменталдуу деңгээлде иштешине кызыгуумду арттырдым. Мен татаал милдеттерди аткаруу үчүн дискреттик компоненттерди жана схемаларды колдонууну түшүнгүм келди. CPUдагы маанилүү фундаменталдык компоненттердин бири - бул
"Жыгач" стол сааты *Заманбап көрүнүш *: 9 кадам (сүрөттөр менен)
"Жыгач" стол сааты *Заманбап көрүнүш *: Саламатсыздарбы, бул менин экинчи үйрөткүчүм! Бул жолу биз температура жана нымдуулук дисплейи бар жыгач саатын курганы жатабыз. Сүрөттө көрсөтүлгөндөй, биздин убактыбыз "жыгач" аркылуу көрсөтүлөт. Анткени жарык күчтүү эмес
Arduino бинардык сааты - 3D басылган: 5 кадам (сүрөттөр менен)
Arduino Binary Clock - 3D Басылган: Мен офистик столум үчүн бир нече убакыттан бери бинардык сааттарды карап келе жатам, бирок алар абдан кымбат жана / же көптөгөн функциялары жок. Ошондуктан мен анын ордуна бирөөнү жасоону чечтим. Саатты жасоодо бир нерсени эске алуу керек, Arduino / Atmega328
Неопикселдерди колдонуу менен бинардык саат: 6 кадам (сүрөттөр менен)
Неопикселдерди колдонгон бинардык саат: Саламатсыздарбы, мен LED менен байланышкан бардык нерселерди жакшы көрөм, ошондой эле аларды ар кандай кызыктуу жолдор менен колдонгонду жакшы көрөм Ооба, бинардык саат бул жерде бир нече жолу жасалганын билем жана алардын ар бири кантип Өз саатыңызды түзүңүз