Мазмуну:
- 1 -кадам: буюмдарыңызды алыңыз
- 2 -кадам: алдыңкы жана арткы панелди кесип
- 3 -кадам: Арткы панелди бүтүрүңүз
- 4 -кадам: LED панелин жасаңыз
- 5 -кадам: Жарык жол көрсөткүчтү түзүңүз
- 6 -кадам: Баскычтын алкагын жасаңыз
- 7 -кадам: Негизги ПХБны ширетүү
- 8 -кадам: Саатты чогултуу
- 9 -кадам: Кодду жүктөө жана Жарык сенсорун калибрлөө
- 10 -кадам: бинардык системага тез киришүү
- 11 -кадам: бинардык ойготкучту колдонуу
- 12 -кадам: Кодексти түшүнүү (милдеттүү эмес)
- 13 -кадам: Акыркы сөздөр
Video: Arduino негизделген бинардык ойготкуч саат: 13 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
By Basement EngineeringForlow More by the Author:
Жөнүндө: Саламатсызбы, менин атым Ян, мен жасоочумун, мен нерселерди курууну жана жаратууну жакшы көрөм, ошондой эле буюмдарды оңдоодо абдан жакшымын. Мен ар дайым жаңы нерселерди жаратууну жакшы көрөм деп ойлогондуктан, мен ушул убакка чейин жасай берем … Подвалдык инженерия жөнүндө »Кененирээк»
Эй, Бүгүн мен сизге эң акыркы долбоорлорумдун бирин, экилик ойготкуч саатымды кантип курууну көрсөткүм келет.
Интернетте бир нече ар кандай бинардык сааттар бар, бирок бул чындыгында убакыт жана түс сыяктуу нерселерди орнотуу үчүн сигнализация жана сенсордук баскычтары бар түстүү даректүү LED диодунан жасалган биринчи саат болушу мүмкүн.
Сураныч, анын татаал көрүнүшү сизди коркутпасын. Бир аз түшүндүрүү менен, бинардык окуу чындыгында көрүнгөндөй кыйын эмес. Эгерде сиз жаңы нерсени үйрөнгүңүз келсе, мен сизге кийинчерээк жардам бергим келет.
Мен сизге бул долбоордун артындагы окуя тууралуу бир аз айтып берейин:
Мен башында "кадимки" саатты курууну пландадым, ал LEDди колу менен колдонот, бирок менин колумда LED жок болчу.
Ууууууу, мүмкүн болушунча аз светодиоддор менен убакытты көрсөтүүнү кааласаңыз эмне кыласыз?
Сиз экиликке өтөсүз, мен дал ушул жерде кылдым.
Бул саат анын үчүнчү версиясы. Долбоордун идеясы мага тийгенден кийин дароо эле абдан жөнөкөй прототипти куруп, адамдардын бул тууралуу кандай ойдо экенин көрүү үчүн Ганновердеги Maker Faireге алып бардым. Мен ошол жерде жүргөндө, мен көптөгөн оң жана кызыктуу пикирлерди, ошондой эле жакшыртуу идеяларын алдым.
Бардык ойлордун жана сааттардын натыйжасы, ой жүгүртүүнүн, чайкоочулуктун жана программалоонун натыйжасы, бул 1.0 версиясына караганда көптөгөн өзгөчөлүктөргө ээ болгон абдан кызыктуу көрүнгөн кичинекей ойготкуч саат жана бүгүн биз курулуш процессинин ар бир кадамын басып өтөбүз, андыктан сиз өзүңүз оңой куруңуз.
Youtube -да өтө деталдуу видео бар, эгер сиз баарын окууну каалабасаңыз.
1 -кадам: буюмдарыңызды алыңыз
Бул жерде бардык компоненттердин жана инструменттердин кичинекей тизмеси, сиз өзүңүздүн бинардык саатты курушуңуз керек.
Электроника:
- 18 adressable Ws2811 LED (мисалы, Neopixels) 60 LED менен м (ebay)
- Arduino Nano (ATMega328 процессору менен) (ebay)
- 1307 RTC модулу (ebay)
- 4X Capacitive сенсордук баскычтар (ebay)
- bs18b20 санарип температура сенсору (ebay)
- LDR (ebay)
- ноутбук/смартфондун динамиги же пьезо сигнал
- 2222A NPN транзистору (же окшош нерсе)
- эркек башчылары
- бурчтуу аял башы (ebay)
- 1kOhm резистор
- 4, 7kOhm каршылыгы
- 10kOhm каршылыгы
- Зымдар
- 7x5cm прототиптелген PCB 24x18 тешиктери (ebay)
- күмүш зым (зергердик зым) (ebay)
- 90 ° мини USB адаптер (ebay)
Башка материалдар
- Винил пленка
- 4X 45мм м4 фланец баш бурамалары (ebay)
- 32X м4 металл жуугучтар
- 4X m4 кулпу гайкасы
- 28X м4 жаңгак
- 4X 10мм м3 жез PCB каршылыгы (ebay)
- 8X 8mm м3 бурама (ebay)
- алюминийден жасалган барак
- Сүт акрилинин 2 мм баракчасы
- 2мм тунук акрил баракчасы
- 3 мм MDF барагы
- эки тараптуу скотч
Куралдар
- мини USB кабели
- компьютер Arduino IDE менен иштейт
- 3, 5 мм бургу
- 4, 5 мм бургу
- электр бургу
- бычак кесүү
- жеңүүчү араа
- ширетүүчү ион
- металл кесүүчү кайчы
- файл
- кум кагаз
Калыптар (азыр өлчөмдөрү менен)
- Libre Office Draw
Code
- Эскиздер
- Баскыч китепканасы
- Таймер китепканасы
- Jukebox китепканасы
- Өзгөртүлгөн RTClib
- Adafruit Neopixel китепканасы
- Arduino-Температураны башкаруу-китепканасы
2 -кадам: алдыңкы жана арткы панелди кесип
Биз жасай турган биринчи бөлүк акрил алдыңкы панели. Биз кыскартууну каалаган жерге белгилейбиз, ошону менен бирге, тегиздөө үчүн бир аз толеранттуулукту каалайбыз. Андан кийин биз акрилди бычак менен кырып салабыз. Биз муну 10-20 жолу кылгандан кийин оюк пайда болот. Андан кийин биз ошол бакты столдун четине коюп, акрил сынганга чейин ийип алабыз.
Алдыңкы панель өлчөмү боюнча кесилгенден кийин, арткы панелди MDFден кесебиз. Бул үчүн биз өзүбүздүн араа колдоно алабыз, бирок кесүүчү бычак да иштейт. Биз жөн гана MDFти жыгачтын сыныгына кысып, бычак өтмөйүнчө жана бизде эки бөлүк болгонго чейин бычак менен кырып салышыбыз керек.
Эми биз эки панелди сэндвичке салып, эки жагын кумга тегиздөө үчүн кемчиликсиз тегиздейбиз.
Бул бүткөндөн кийин, биз биринчи шаблонду кесип алып, бир нече лента аркылуу эки панелге коюп, белгиленген тешиктерди бургулоону баштайбыз.
Алгач 4 бурчтун ар бирине 4, 5 мм тешик жасайбыз. Акрил абдан морт болгондуктан, биз анын сынышын каалабайбыз, биз кичинекей бургулоо учу менен баштайбыз жана керектүү тешиктин диаметри жеткенге чейин өйдө карай иштейбиз. Андан кийин шаблонду колдонуп, бурчтарды керектүү формага сүртөбүз.
3 -кадам: Арткы панелди бүтүрүңүз
Азырынча, биз алдыңкы панелди четке коюп, экинчи шаблонду арткы панелге жабыштыра алабыз, мында биз 4 pcb тирешүүбүз үчүн тешиктерди буруш үчүн 3, 5мм бургулоочу учту, ошондой эле четтерин белгилеген 4 тешикти колдонушубуз керек. кичинекей арткы терезе үчүн.
Андан кийин биз өзүбүздүн араа менен терезени кесип, четин тегиздейбиз. Сиз ошондой эле мини USB кабелинин тешигин бурууну унуткуңуз келбейт (мен мындай нерселерди жасоого умтулган эмес, мындай багытталган жаратуучу жөнүндө уккам: D).
Биз азыр арткы панелди кесип бүткөндөн кийин, аны винил пленкага ороого кирише алабыз. Биз жөн гана эки бөлүктү керектүү өлчөмгө кесип, биринчисин бир жакка сүйкөйбүз. Анан алкактарды кесип, терезени бошотобуз. Чач кургаткыч тешиктердин бардыгын кайра көрүнүп турууга жардам берет, ошондуктан биз аларды кесип алабыз. Ошол эле нерсени экинчи тарап үчүн кылгандан кийин, биз кийинки шаблонду колдонуп, арткы панелибиз үчүн кичинекей акрил терезени жасоо үчүн кырып -сындыруу техникасын колдонобуз.
4 -кадам: LED панелин жасаңыз
Эми биз бул долбоордун эң негизги маанисине келдик, эң түз мааниде. LED панели.
Биз металл кесүүчү кайчыбызды колдонуп, 12, 2см жана 8см темирден кесебиз. Муну жасоодо этият болуңуз, анткени кайчы өтө курч четтерди түзөт. Биз аларды файлыбыз жана бир аз зым кагазы менен тегиздейбиз. Андан кийин биз бурамалар менен зымдарды тешүү үчүн кийинки шаблонубузду кошобуз.
Чыныгы LEDди даярдоо убактысы.
Биринчиден, биз аларды 6 LEDдин үч тилкесине бөлдүк. LED тилкелеринин кээ бирлери өтө жука жабышкак катмар менен келет же такыр жабышпайт, ошондуктан биз тилкелерибизди эки тараптуу лентага жабыштырып, бычак менен өлчөмүнө чейин кесебиз. Бул аны металл табакка жабыштырат жана бул профессионалдык чечим болбосо да, астындагы металл бетинен жез төшөмөлөрдү жылуулайт.
Тактайларды тактайга жабыштыруудан мурун аны спирт менен тазалайбыз. Светодиоддорду тиркеп жатып, биз аларды туура жерге, ошондой эле туура багытка койгонубузга ынануубуз керек. LED тилкесиндеги кичинекей жебелер маалымат тилкеси аркылуу өтүүчү багытты көрсөтөт.
Бешинчи сүрөттө көрүнүп тургандай, биздин маалымат линиябыз панелдин жогорку сол бурчунан келет, биринчи тилке аркылуу оң жагына өтөт, сол жактагы кийинки тилкенин башына кайтып келет.. Ошентип, биздин бардык жебелерибиз оң жагын көрсөтүшү керек.
Келгиле, ширетүүчү ионду ысытабыз жана жез төшөмөлөргө, ошондой эле зымыбызга калай салалы. Маалымат линиялары мен сүрөттөгөндөй туташып турат, ал эми биз тилкенин плюс жана минус төшөмөлөрүн параллелдүү түрдө илип коёбуз.
Тилкелер туташтырылгандан кийин, биз бычагыбызды колдонуп, ар бир тилкенин учтарын кылдаттык менен көтөрүп турабыз, андыктан алар дагы эле өйдө көрсөтүп турат. Анан астына ысык клей салып, ширетүүчү жерлерибизди жылуулайбыз.
Бул бүткөндөн кийин, биз ПХБга баруучу зымдарга бир нече баштыктарды кошобуз. Бул зымдардын узундугу болжол менен 16 см болушу керек. Темир панель эч нерсе кыскарбай турганына толук ишенүү үчүн, биз бардык казыктардын ортосундагы каршылыкты өлчөө үчүн мультиметрди колдонобуз. Эгерде ал 1kOhmдан жогору нерсени көрсөтсө, анда баары жакшы.
Эми биз аны Arduinoго туташтырып, стандтестти өткөрүп, түстөрдөн ырахат ала алабыз.
5 -кадам: Жарык жол көрсөткүчтү түзүңүз
Эгерде биз өзүбүздүн панелибизди сүттүү акрилдин артына койсок, анда жеке LED диоддорун айырмалоо өтө кыйын болуп калышы мүмкүн. Бул биздин саатты окууну мурдагыдан да кыйын кылат.
Бул маселени чечүү үчүн, биз өзүбүздү кичине жарык көрсөтмө кылганы жатабыз. Бул үчүн биз жөн гана MDFдин алдыңкы панели менен бирдей болгон башка бөлүгүн кесип салдык. Андан кийин биз ага дагы бир шаблон кошуп, он сегиз 3, 5мм диоддор үчүн, ошондой эле бурамалар үчүн 4, 5мм тешиктерди бурабыз. Андан кийин биз аны алдыңкы панельге кысып, экөөнү тегиздөө үчүн кээ бир зымыранды колдоно алабыз.
Акыркы сүрөттө көрүнүп тургандай, жарык азыр көбүрөөк багытталган көрүнөт.
6 -кадам: Баскычтын алкагын жасаңыз
Биз жасай турган акыркы корпустун компоненти - бул баскычтын алкагы.
Биз, дагы бирөө, керектүү өлчөмдөгү MDF кесимин кесип, ага шаблон кошобуз, андан кийин биз бардык керектүү тешиктерди бургулап, ортоңку бөлүгүн кесип алуу үчүн өзүбүздүн араны колдонобуз.
Биздин кадр 4 сенсордук баскычты, жарык сенсорун жана кичинекей динамигибизди кармап турушу керек. Аларды рамкага тиркөөдөн мурун, MDFден бир нече кичинекей капкакты кесип алабыз. Андан кийин биз компоненттерибизди ошол капкактарга ысык желимдеп, зымдарды кошобуз.
Сенсордук баскычтын электр аянтчалары параллелдүү түрдө туташтырылган, ал эми ар бир чыгуу линиясы жеке зымды алат. Бул алардын баары иштеп жаткандыгын текшерүү үчүн жакшы учур. Жарык сенсоруна бир тарапта 5 Вольт керек болгондуктан, биз аны жөн эле сигнализация баскычтарына VCC блокнотуна илип, зымды экинчи бутуна ширете алабыз.
Панелдер даярдалгандан кийин, раманын капталдарын кесип, аларга жана зымдарына орун беребиз.
Андан кийин жыгач чаңын чаң соргуч менен тазалап, винил пленкага жаап коёбуз.
Винилдин бөлүктөрүн алып салуу үчүн так бычакты колдонобуз, тийүү модулдарыбыздын сезгич жерлеринин үстүндө. Кээ бир эки жактуу скотч менен биз өзүбүздүн баскычтарды MDFге беките алабыз. Мен баскычтарымды резина көбүктөн жасадым, бул аларга жагымдуу, жумшак текстураны берет, бирок сиз каалаган металл эмес материалды колдоно аласыз.
Кадрда биз бычакты колдонуп, дагы бир аз MDF боштондукка чыгарабыз, бул бизге ысык клей үчүн катуу жерди берет. Андан кийин биз акыры компоненттерибизди алкагыбыздын капталдарына чаптай алабыз.
7 -кадам: Негизги ПХБны ширетүү
Келгиле, кадрды азыркыдай калтырып, ПХБга өтөлү. Сиз биринчи сүрөттө PCB макетин көрө аласыз.
Эң төмөн профилдеги компоненттерди схемага коюу менен баштайбыз. Эң кичинекей компоненттери зым көпүрөлөр, мен аларды бир аз кеч эстедим, ошондуктан мен резисторлордон баштадым. Биз компоненттерибизди ордуна коюп, кийинки жогорку компоненттерге өтөбүз.
Кийинкиде бизде аялзатынын баш төөнөгүчтөрү бар. Бир аз мейкиндикти үнөмдөө жана биздин электрониканы капталынан туташтыруу үчүн, биз аларды 90 градус бурчта орнотобуз.
Транзисторлор биздин ПХБнын 2, 54мм тешик аралыгына туура келбейт, андыктан биз кычкачтарыбызды колдонуп, буттарын экинчи сүрөттө көрсөтүлгөн формага чейин ийип ийебиз. Биз адегенде алардын бир бутун жерге ширетип, ПХБны айландырабыз. Андан кийин биз ширетүүчү түйүндү кайра жылытабыз жана компонентти туура жайгаштыруу үчүн манжабызды же кычкачты колдонобуз. Эми биз калган эки бутубузду өз ордунда ширете алабыз.
Бардык кичинекей компоненттерден кийин биз Arduino менен реалдуу убакыт саатынын модулун өз ордубузга салабыз. RTC модулу тешик аралыкка анча туура келбейт, андыктан биз башын төөнөгүчтөрү бар 7 ширетүүчү аянтчасы бар капталын жабдуу үчүн гана бара жатабыз. Кыска туташууларды болтурбоо үчүн анын астына лента да коёбуз.
Бардык компоненттерибиз өз ордунда ширетилгендиктен, тактанын башка жагында байланыштарды түзүүнүн учуру келди. Бул үчүн биз изоляцияланбаган зымыбызды алып чыгабыз. Кычкачты колдонсо болот, аны түздөө үчүн. Андан кийин зымды майда бөлүктөргө бөлүп, ПХБга кошобуз.
Байланыш үчүн биз ширетүүчү түйүндү ысытып, зымды салабыз. Андан кийин биз керектүү температурага жеткенге чейин жана ширетүүчү ионду кармап турабыз жана биз аны сүрөттө окшош бириктирип алабыз. Эгерде биз зымды жылытпасак, анда башка мисалга окшош жана өтө жакшы өткөрүлбөгөн муздак муун менен аякташыбыз мүмкүн. Биз зым кескичибизди колдонуп, зымды ширетүү учурунда ылдый түшүрүп, анын ПХБга тегиз салынып жатканына ынануубуз мүмкүн. Узунураак туташуу жолдорунда, биз аны бурчка же кийинки компонентке жеткенге чейин, ар бир 5-6 тешикке бирдиктүү аянтка салабыз.
Бир бурчта биз ширетүүчү аянтчанын биринчи жарымынан жогору зымды кесип, аягына чейин ширетебиз. Андан кийин биз жаңы зым алып, ошол жерден туура бурч менен кете беребиз.
Бул бош зым туташууларын жасоо өтө татаал жана бир аз чеберчиликти талап кылат, андыктан эгер сиз муну биринчи жолу жасап жатсаңыз, анда аны чыныгы ПКБда жасоого аракет кылардан мурун, аны сынык ПКБда колдонуу жаман эмес.
Биз ширетүүнү бүтүргөндөн кийин, байланыштарды дагы бир жолу текшерип, кыска туташууларды жаратпаганыбызды текшеребиз. Андан кийин биз ПХБны баскычтын алкагынын ичине салып, керектүү кадр зымынын узундугу үчүн шилтеме катары колдоно алабыз. Андан кийин биз ошол зымдарды керектүү узундукка кесип, аларга эркек баштык төөнөгүчтөрдү кошобуз.
Сенсордук баскычтардын бардык 5V жана жер байланыштары 2pin туташтыргычка биригет, 4 чыгаруу зымдары 4pin коннекторун жана жарык сенсор линиясын алат, ошондой эле эки спикер зымы үч пин коннекторго бириктирилет. Ар бир розетканын жана туташтыргычтын бир жагын учтуу же кандайдыр бир тасма менен белгилөөнү унутпаңыз, андыктан кокусунан аларды туура эмес жолго сайып албаңыз.
8 -кадам: Саатты чогултуу
Андан кийин мен алдыңкы панелге кайтып келип, акыркы тийүү катары тунук лазердик принтердин фольгасынан жасалган стикерди кылдаттык менен чаптадым.
Мен аны өтө этияттык менен колдонгонум менен, мен көбүксүз натыйжа ала алган жокмун, бул тилекке каршы жакшылап текшерүүдөн кийин ачык көрүнүп турат. Фольга да бурчтарга жакшы жабышпайт, андыктан бул чечимди сунуштай албайм.
Бул, балким, жакшыраак стикер менен жасалышы мүмкүн, же, эгерде сиз сүрөт тартууга чебер болсоңуз, сандарды курч менен кошо аласыз.
Азыр бизде бардык компоненттер бар жана саатыбызды чогулта алабыз.
Биз жарык жол менен алдыңкы панелди коюу менен баштайбыз. Бардык 4 болт киргенден кийин, биз эки панелди тегиздеп, анан бекемдейбиз. Бир нече жаңгак кийинчерээк жарык панелине келет, биз багытты карап көрүшүбүз керек. Кабель үстү жагында болушу керек.
Үчүнчү бөлүк - бул баскычтын алкагы. Эске алыңыз, алдыңкы тараптан карасаңыз, анын динамиги сааттын оң жагында болушу керек. Жетектөөчү панелиңиздин кабелин рамкага оңдоп кетүүдөн мурун, кадрдын ортосунан жулуп алыңыз.
Эми биз алдыңкы жамааттын ассистентин коюп, арткы панелге өтөбүз. Сүрөттө сиз менин 90 градустук мини USB адаптеримди көрө аласыз. Мен сизге туура адаптер менен байланыштырдым, андыктан мындай башаламандык менен күрөшүүнүн кажети жок. Сиз жөн гана адаптериңизди сайып, кабелди арткы панелдеги тешик аркылуу өткөрө аласыз.
Биз кичинекей терезени оңдоо үчүн M3 бурамаларыбызды жана ПХБ аралыгыбызды алабыз. Акрилибизди бузгубуз келбегендиктен, бурамаларды кылдат тартыш керек. Андан кийин биз ПХБбызды алып, адаптерибизди сайып, боштуктарга сайабыз. Ардуинонун USB порту сааттын түбүнө карайт, ал эми компонент тарабы терезеге каралышы керек.
Андан кийин биз туташтыргычтардын бардыгын алдыңкы жамаатка туташтырып, полярдыкты эске алып, зымдардын бардыгын кылдаттык менен саатка кысабыз. Андан кийин биз аны арткы панель менен жаап, калган 4 кулпу гайкасын бекемдей алабыз.
Акыр -аягы, сиз ар бир панелдин ар жагында кир жуугучка ээ болгуңуз келет, ал эми жарык көрсөтмөсү түздөн -түз алдыңкы панелдин артында жайгашкан. Бизде жарык берүүчү менен жетектөөчү панелдин ортосунда дагы бир жаңгак бар жана аны дагы экөө баскычтын алкагынан бөлүп турат. Муну акыркы сүрөттөн да көрө аласыз.
Мен 40мм узундуктагы кыска болтторду колдонгондуктан, менде 3 гана жаңгак бар, алар арткы панелди жана кадрды бөлүп турат. Туура 45 мм болттор менен бул жерге дагы бир жаңгакты, ошондой эле бир же эки кошумча жуугучту кошмоксуз. Жыйындын аягында биздин гайка бар, ошондо баары ордунда калат.
9 -кадам: Кодду жүктөө жана Жарык сенсорун калибрлөө
Биздин кодду жүктөө убактысы келди.
Адегенде биз бардык керектүү файлдарды жүктөп алып, аларды ачабыз. Андан кийин биз Arduino китепканаларыбыздын папкасын ачып, ага бардык жаңы китепканаларды түшүрөбүз.
Эми биз жарык сенсорунун калибрлөө эскизин ачабыз, ал бизге сааттын автоматтык күңүрт функциясынын жарык жана караңгы маанилерин алат. Биз аны жүктөп, сериялык мониторду ачып, экрандын көрсөтмөлөрүн аткарабыз.
Бул бүткөндөн кийин, биз экилик сааттардын чыныгы кодун ачып, эки баалуулукту биз ченегендер менен алмаштырабыз.
Биз башка бардык терезелерди жабабыз, кодду саатына жүктөп беребиз жана бүтүрөбүз.
Жаңы гаджетибиз менен ойной турган убак.
10 -кадам: бинардык системага тез киришүү
Улантуудан мурун, балким, сиздин оюңуздан өткөн бир суроого жооп бергим келет.
"Дүйнөдө бул саатты кантип окуйсуң?"
Ооба, бул үчүн мен сизге бинардык системага кыскача тааныштыргым келет.
Биз баарыбыз ондук системаны жакшы билебиз, анда ар бир цифрада 0дон 9га чейин 10 ар кандай абал болушу мүмкүн. Бинардык ар бир цифрада эки гана абал болушу мүмкүн, же 1 же 0, ошондуктан сиз жөнөкөй нерсени колдоно аласыз. экилик санды көрсөтүү.
9дан чоң сандарды ондук сандарда көрсөтүү үчүн биз дагы цифраларды кошобуз. Ар бир сан белгилүү бир мультипликатор менен келет. Оң жактагы биринчи цифра 1 мультипликатору менен келет, экинчиси 10го, кийинки 100гө. Ар бир жаңы цифрада мультипликатор мурунку цифрадан он эсе чоң. Ошентип, биз билебиз, эки саны солго бир цифраны коюп, 20 санын билдирет, солго эки цифра болсо, ал 200дү билдирет.
Бинардык системада ар бир цифра дагы мультипликатор менен келет. Бирок, ар бир цифрада эки гана абал болушу мүмкүн болгондуктан, ар бир жаңы мультипликатор мурункусунан эки эсе чоң. Баса, экилик цифралар бит деп аталат. Келгиле, биринчи мисалыбызды карап көрөлү, эгерде биз 1ди эң төмөнкү абалга койсок, бул жөнөкөй 1, бирок биз аны көбөйтүүчүбүз 2 болгон кийинки жогорку позицияга койсок, ал экиликте 2 санын билдирет.
Сүрөттүн астындагы бир аз татаал мисал жөнүндө эмне айтууга болот. Үчүнчү жана биринчи биттер иштеп жатат. Бул жерде көрсөтүлгөн ондук санды алуу үчүн, биз эки биттин маанилерин кошобуз. Ошентип, 4 * 1 + 1 * 1 же 4 + 1 бизге 5 санын берет.
8 бит байт деп аталат, андыктан бүт байтты бирөө менен толтурсак, кандай санга ээ болоорубузду карап көрөлү.1+2+4+8+16+32+64+128, бул 255, бул бир байттын эң жогорку мааниси.
Айтмакчы, ондук системада эң көп мультипликатору бар сан дайыма биринчи орунда турат, сизде санды экиликке жазуунун эки жолу бар. Бул эки ыкма эң аз байт биринчи (LSB) жана эң маанилүү байт биринчи (MSB) деп аталат. Эгерде сиз экилик санды окууну кааласаңыз, анда эки форматтын кайсынысы колдонулганын билишиңиз керек. Ондук системага жакыныраак болгондуктан, биздин экилик саат MSB вариантын колдонот.
Келгиле, чыныгы дүйнө мисалына кайтып келели. Алтынчы сүрөттө белгиленгендей, биздин саатта саатты көрсөтүү үчүн 4 бит бар. Бизде мүнөтүнө 6 бит, экинчисине 6 бит бар. Дагы бизде бир гана эртең мененки/кечки бит бар.
Макул, акыркы сүрөткө өтпөй, 6 -сүрөттө саат канча экенин айт.. ….
саат бөлүмүндө бизде 2+1 бар, ал 3 жана кечки бит, ошондуктан кеч. Кийинки мүнөттө 32+8, башкача айтканда 40. Секунддарда бизде 8+4+2 бар, бул 14. Ошентип, саат 3:40:14 же 15:40:14.
Куттуктайм, сиз экилик саатты окуганды жаңы эле үйрөндүңүз. Албетте, көнүү үчүн бир аз убакыт талап кылынат жана башында сандарды кошуу керек болот, ар бир убакта саат канча экенин билгиң келет, бирок аналогдук саатка окшош эмес, сен LEDдин үлгүлөрүнө көнүп каласың. убакыт.
Жана бул долбоордун бир бөлүгү, экилик системага окшош абстрактуу нерсени реалдуу дүйнөгө алып келип, аны жакшыраак таануу.
11 -кадам: бинардык ойготкучту колдонуу
Эми биз акыры саат менен ойногубуз келет, андыктан көзөмөлдү тез карап көрөлү.
Программа бир баскычты, эки жолу басууну жана узун таптоону айырмалай алат. Ошентип, ар бир баскыч бир нече аракеттер үчүн колдонулушу мүмкүн.
Өйдө же ылдый баскычын эки жолу басуу LEDдин түс режимин өзгөртөт. Сиз ар кандай статикалык жана өчүүчү түс режимдерин, ошондой эле температура режимин тандай аласыз. Эгерде сиз статикалык түс режимдеринин биринде болсоңуз, өйдө же ылдый баскычын басып турсаңыз, түс өзгөрөт. Өчүрүү режиминде, бир таптоо анимациялардын ылдамдыгын өзгөртөт.
Диммер режимин орнотуу үчүн, OK баскычын эки жолу басыңыз. Жетектөөчү панель коюлган режимди бир нече жолу ирмөө менен көрсөтөт.
- Бир жолу эч нерсе өчпөйт дегенди билдирет.
- Эки жолу жарыктык сенсор тарабынан көзөмөлдөнөт дегенди билдирет.
- Үч жолу жана 10 секунд аракетсиздиктен кийин LED автоматтык түрдө өчөт.
- Төрт жолу жана эки диммер режими айкалышкан.
Ок баскычын көп басуу убакытты коюу режимине алып келет, анда сиз сандарды өзгөртүү үчүн өйдө жана ылдый жебелерди колдоно аласыз. Ок баскычына бир жолу тийүү сизге сааттан мүнөткө чейин жетет, дагы бир таптоо менен сиз секунддарды орното аласыз. Андан кийин, акыркы жолу басуу менен жаңы убакыт сакталат. Эгерде сиз accedentialy убакытты коюу режимине кирсеңиз, жөн гана 10 секунд күтө аласыз жана саат автоматтык түрдө андан чыгып кетет.
Ок баскычында болгондой эле, ойготкуч баскычын көпкө басып туруу сигнализацияны коюуга мүмкүндүк берет. Ойготкуч баскычын эки жолу басуу сигналды иштетет же өчүрөт.
Эгерде саат шыңгырап жатса, сиз ойготкучту өчүрүү үчүн, ойготкуч баскычын бир эле жолу басып, 5 мүнөт уктап же кармап туруңуз.
Бул сааттын буга чейин аткарган бардык функциялары болчу. Келечекте мен дагы кошо алам, эгер сиз акыркы программалык камсыздоону жүктөсөңүз.
12 -кадам: Кодексти түшүнүү (милдеттүү эмес)
Мен билем, көп адамдар программалоону анча жакшы көрүшпөйт. Бактыга жараша, бул адамдар үчүн, бул экилик саатты куруу жана колдонуу үчүн эч кандай программалоо билими талап кылынбайт. Ошентип, эгер сиз программалоо жагына көңүл бурбасаңыз, анда бул кадамды өткөрүп жибере аласыз.
Бирок, эгер сизди коддоо бөлүгү кызыктырса, мен сизге программанын жалпы көрүнүшүн бергим келет.
Сааттардын кодунун ар бир майда -чүйдөсүн түшүндүрүп берүү инструктивдүү болот, ошондуктан мен программаны объектке багытталган түрдө түшүндүрүп берем.
Эгер бул эмнени билдирерин билбесеңиз, объектке багытталган программалоо (OOP) - C ++ сыяктуу заманбап программалоо тилдеринин түшүнүгү. Бул ар кандай функцияларды жана өзгөрмөлөрдү класстарга уюштурууга мүмкүндүк берет. Класс - бул бир же бир нече объекттерди түзө турган шаблон. Бул объекттердин ар бирине Аты жана анын өзүнүн өзгөрмөлөрү кирет.
Мисалы, сааттын кодунда alarmButton сыяктуу бир нече MultiTouchButton объекттери колдонулат. Бул менин Button китепканамдын бөлүгү болгон MultiTouchButton классындагы объекттер. Бул объектилердин эң сонун жери, алар менен реалдуу дүйнө объектилерине окшош интерфейс жасай аласыз. Мисалы, сигнализация баскычы alarmButton.wasDoubleTapped () деп эки жолу басылганын текшере алабыз. Мындан тышкары, бул функциянын аткарылышы башка файлда жакшы жашырылган жана биз кодубуздагы башка нерсени өзгөртүү менен аны бузуу жөнүндө тынчсызданбайбыз. Объектке багытталган программалоо дүйнөсүнө тез кирүүнү Adafruit веб -сайтынан тапса болот.
Жогорудагы графиктен көрүнүп тургандай, сааттар программасында ар кандай объекттер бар.
Биз жөн гана баскычтын объекттери жөнүндө сүйлөштүк, алар кирүү сигналдарын таптоо, эки жолу басуу же узун басуу катары чечмелей алат.
Jukebox, аты айтып тургандай, ызы -чуу чыгара алат. Бул кичинекей спикер аркылуу ойнотула турган бир нече обондор бар.
BinaryClock объектиси убакытты жана ойготкучту, ошондой эле ойготкучту көзөмөлдөөнү башкарат. Бул rtc модулунан убакытты алат жана аны ledPanel үчүн экилик маалымат буферине айландырат.
ColorController түс эффектинин бардык функцияларын камтыйт жана ledPanel үчүн colorBuffer менен камсыз кылат. Ал ошондой эле Arduinos EEPromдогу абалын сактайт.
Диммер сааттардын жарыктыгына кам көрөт. Колдонуучу айланып өтө турган ар кандай режимдери бар. Учурдагы режим EEPromдо да сакталат.
LEDPanel ар бир светодиоддун түсү, жарыктыгы жана бинардык абалы үчүн ар кандай буферлерди башкарат. PushToStrip () функциясы чакырылганда, ал аларды каптап, аларды лед тилкесине жөнөтөт.
Бардык объекттер негизги аркылуу "туташкан" (орнотуу жана цикл функциялары бар файл), ал 3 негизги тапшырманы аткаруу үчүн бир нече функцияларды камтыйт.
- Колдонуучунун киргизүүсүн чечмелөө - Бул 4 баскычтуу объекттердин киришине ээ болот жана аларды логикага салып коёт. Бул логика сааттын учурдагы абалын текшерет, эгерде саат кадимкидей, убакытты коюу же шыңгыроо режиминде болсо, ошого жараша башка объектилерден ар кандай функцияларды чакырат.
- Объекттер ортосундагы байланышты башкаруу - Ал дайыма жаңы binaryClock объектисин сурайт, эгерде ал жаңы маалыматка ээ болсо же ойготкуч чалып жатса (). Эгерде ал жаңы маалыматка ээ болсо, анда binaryClockтен informationBuffer алат жана аны ledPanel объектине жөнөтөт. Эгерде саат шыңгырап турса, анда ал джукбокс баштайт.
- Объекттерди жаңыртуу - Программанын объекттеринин ар биринде кирүүлөрдү текшерүү же LEDдин түсүн өзгөртүү сыяктуу нерселер үчүн колдонулган жаңыртуу процедурасы бар. Сааттын туура иштеши үчүн, аларды цикл функциясында кайра -кайра чакыруу керек.
Бул сизге коддун айрым бөлүктөрү кантип чогуу иштээри жөнүндө жалпы түшүнүк бериши керек. Эгерде сизде дагы конкреттүү суроолор болсо, мага жөн эле сурасаңыз болот.
Менин кодексим кемчиликсизден алыс болгондуктан, мен аны келечекте дагы жакшыртам, андыктан бир нече функциялар өзгөрүшү мүмкүн. OOPтун эң сонун жери, ал дагы деле ушуга окшош түрдө иштей берет жана аны түшүнүү үчүн графикти колдоно берсеңиз болот.
13 -кадам: Акыркы сөздөр
Ушул убакка чейин окуп жатканыңызга кубанычтамын. Бул менин долбоорум өтө кызыксыз болгонун билдирет:).
Мен бул кичинекей саатка бир топ эмгек жумшадым, андан да көп документтерди жана видеолорду иштеттим, сизге оңой кылуу үчүн, өзүңүздүн бинардык ойготкуч саатыңызды куруңуз. Менин аракетимдин акыбети кайтты деп үмүттөнөм жана кийинки дем алыш күндөрү боло турган долбооруңузга эң сонун идеяны кошо алам же сизге дем берет.
Төмөндөгү комментарийлерде саат жөнүндө кандай ойдо экениңизди уккум келет:).
Мен майда -чүйдөсүнө чейин камтууга аракет кылсам да, мен бир же эки нерсени сагынып калышым мүмкүн. Андыктан суроолоруңуз бар болсо, сураңыз.
Адаттагыдай эле, окуу жана бактылуу кылуу үчүн чоң рахмат.
LED сынагында 2017 -ж
Сунушталууда:
Микро бинардык саат: 10 кадам (сүрөттөр менен)
Микро бинардык саат: мурда бинардык чектелген дисплей аянтын колдонот, инструктивдүү (бинардык DVM) түзүп, экилик саатты түзүү үчүн ондуктан экиликке которуунун негизги код модулун түзгөн кичинекей гана кадам
Акылдуу ойготкуч саат: Raspberry Pi менен жасалган акылдуу ойготкуч саат: 10 кадам (сүрөттөр менен)
Smart Alarm Clock: Raspberry Pi менен жасалган акылдуу ойготкуч: Сиз качандыр бир убакта акылдуу саатты кааладыңыз беле? Андай болсо, бул сиз үчүн чечим! Мен Smart Alarm Clock жасадым, бул веб -сайтка ылайык ойготкуч убактысын өзгөртө турган саат. Ойготкуч өчкөндө, үн чыгат (зумбул) жана 2 жарык күйөт
DIY Arduino бинардык ойготкуч саат: 14 кадам (сүрөттөр менен)
DIY Arduino бинардык ойготкуч саат: Бул дагы классикалык бинардык саат! Бирок бул жолу дагы кошумча функция менен! Бул көрсөтмөдө мен сизге Arduino менен экилик ойготкучту кантип курууну көрсөтөм, ал сизге убакытты гана көрсөтпөйт, бирок датаны, айды, таймер жана ойготкучтун көңүл ачуусу менен да
Ойготкуч саат менен DIY Smart Scale (Wi-Fi, ESP8266, Arduino IDE жана Adafruit.io менен): 10 кадам (Сүрөттөр менен)
Ойготкуч саат менен DIY Smart Scale (Wi-Fi, ESP8266, Arduino IDE жана Adafruit.io менен): Мурунку долбоорумда мен Wi-Fi менен акылдуу ванна таразасын иштеп чыккам. Ал колдонуучунун салмагын өлчөй алат, жергиликтүү түрдө көрсөтөт жана булутка жөнөтөт. Бул тууралуу кененирээк маалыматты төмөнкү шилтемеден ала аласыз: https: //www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Неопикселдерди колдонуу менен бинардык саат: 6 кадам (сүрөттөр менен)
Неопикселдерди колдонгон бинардык саат: Саламатсыздарбы, мен LED менен байланышкан бардык нерселерди жакшы көрөм, ошондой эле аларды ар кандай кызыктуу жолдор менен колдонгонду жакшы көрөм Ооба, бинардык саат бул жерде бир нече жолу жасалганын билем жана алардын ар бири кантип Өз саатыңызды түзүңүз