Arduino बाइनरी क्लॉक

Arduino बाइनरी घड़ी: 10 कदम (चित्रों के साथ)

मैंने आखिरकार इसे बना लिया है, बाइनरी घड़ी ने मेरे आसपास के लोगों को इतने लंबे समय के बारे में बात करते सुना। मैं आखिरी क्रिसमस के दौरान इसे बनाने की कोशिश कर रहा था, लेकिन समय की कमी थी, मैंने पिछले 6 महीनों में 2 बार नौकरियां बदलीं ... इसलिए चीजें थोड़ी व्यस्त थीं, लेकिन अब सब कुछ ठीक है और मैंने यह किया :)

मैं यह दिखावा नहीं करना चाहता कि यह मेरा विचार है। मैंने इस महान प्रशिक्षकों से डिजाइन लिया: मेरा Arduino बाइनरी क्लॉक Cello62 द्वाराऔर मैंने इसे अपना स्पर्श दिया।

मैंने सटीक समय रखने के लिए एक वास्तविक समय घड़ी का उपयोग किया, मैंने एक पूर्ण Arduino के बजाय सिर्फ Atmega328 का उपयोग किया और यहां और वहां कुछ छोटे बदलाव किए, लेकिन घड़ी का डिज़ाइन सभी Cello62 है।

आपूर्ति:

चरण 1: द अर्डुइनो प्रोटोटाइप

पहले मैंने Arduino के साथ प्रोटोटाइप बनाया, फिर मैंने सर्किट को अंतिम उत्पाद में बदल दिया, पूर्ण Arduino के बजाय Atmega328 चिप का उपयोग करके यह सुनिश्चित करने के लिए कि सब कुछ सही ढंग से काम कर रहा था।

चरण 2: स्कैमेटिक्स

यहां आप देख सकते हैं कि पुश बटन, एलईडी और वास्तविक समय की घड़ी Arduino के साथ कैसे जुड़ी हुई हैं।

N.B. प्रतिरोध मान सही नहीं हैं।

चरण 3: कोड

पहले वास्तविक समय की घड़ी के साथ संवाद करने और समय रखने के लिए शुरुआत की स्थापना करते हैं

#शामिल

// DS3232 I2C पता #define RTC_ADDRESS 0x68

// DS3232 रजिस्टर पता #define RTC_SECONDS 0x00 #define RTC_MINUTES 0x01 #define RTC_HOURS 0x02

// टाइम्स चर रखने
बाइट सेकंड; // 00-59 बाइट मिनट; // 00-59 बाइट घंटे; // 00-23

तब हम अर्डुइनो की पिनों को पुश और पुश बटन के लिए परिभाषित करने के लिए स्थिरांक निर्धारित करते हैं

// बटन पिंस
const int मिनट बट्टन = 14; const int घंटेबटन = 15;

// एलईडी पिंस कॉन्स्ट इंट घंटेPin10 = 0; const int hoursPin20 = 1;

const int hoursPin1 = 2; const int hoursPin2 = 3; const int hoursPin4 = 4; const int hoursPin8 = 5;

const int मिनटपिन 10 = 6; const int मिनटपिन 20 = 7; const int मिनटपिन40 = 8;

const int मिनटपिन १ = ९; const int मिनटपिन 2 = 10; const int मिनटपिन 4 = 11; const int मिनटपिन 8 = 12;

फिर हमें सेटअप फ़ंक्शन में सब कुछ इनिशियलाइज़ करना होगा

व्यर्थ व्यवस्था() {
// सेट बटन पिन मोड पिनमोड (मिनटबटन, INPUT); पिनमोड (घंटेबटन, INPUT); // LED पिन मोड सेट करें PinMode (hoursPin10, OUTPUT); पिनमोड (घंटेपिन 20, आउट); पिनमोड (hoursPin1, OUTPUT); पिनमोड (hoursPin2, OUTPUT); पिनमोड (hoursPin4, OUTPUT); पिनमोड (hoursPin8, OUTPUT); पिनमोड (मिनटपिन 10, ऑउटपुत); पिनमोड (मिनटपिन 20, आउटपूट); पिनमोड (मिनटपिन 40, आउटपूट); पिनमोड (मिनटपिन 1, आउटपूट); पिनमोड (मिनटपिन 2, आउट); पिनमोड (मिनटपिन 4, ऑउटपुत); पिनमोड (मिनटपिन 8, आउट); // आरटीसी संचार तार शुरू करें ।begin (); // प्रारंभिक और सेट समय सेकंड = 00; मिनट = 00; घंटे = 00; }

और हमारे पास एक सरल लूप फ़ंक्शन होगा जो उस कार्य को करने के लिए विभिन्न कार्यों को बुलाएगा जो इसे करने की आवश्यकता है। हम 500 एमएस के लिए सोएंगे क्योंकि हमें जितनी तेजी से लूप करने की आवश्यकता नहीं है, यह उस समय को सेट करने में भी मदद करता है जब हम पुश बटन दबाते हैं ताकि यह बहुत तेजी से न बदले।

शून्य लूप () {
checkInputs (); समय निकालो(); displayLights (); देरी (500); }

यहां बताया गया है कि हम पुश बटन इनपुट की जांच कैसे करते हैं और उन पर प्रतिक्रिया करते हैं

// ----- इनपुट फंक्शन -----

void checkInputs () {if (digitalRead (minutesButton) == High) {मिनट ++; सेकंड = 00; अगर (मिनट == 60) {मिनट = 00; } निर्धारित समय(); } अगर (digitalRead (घंटेबटन) == उच्च) {घंटे ++; सेकंड = 00; अगर (घंटे == 24) {घंटे = 00; } निर्धारित समय(); }}

वास्तविक समय घड़ी तक पहुंचने के लिए, एक सेटटाइम और गेटटाइम फ़ंक्शन बनाएं

// ----- आरटीसी कार्य -----

शून्य सेटटाइम () {वायर.beginTransmission (RTC_ADDRESS); Wire.write (0); Wire.write (decToBcd (सेकंड)); Wire.write (decToBcd (मिनट)); Wire.write (decToBcd (घंटे)); Wire.endTransmission (); }

शून्य getTime () {वायर.beginTransmission (RTC_ADDRESS); Wire.write (0x00); Wire.endTransmission (); वायर.requestFrom (RTC_ADDRESS, 3); सेकंड = bcdToDec (Wire.read ()); मिनट = bcdToDec (Wire.read ()); घंटे = bcdToDec (Wire.read) (& 0b00111111); }

आपने शायद ऊपर दिए गए कोड में कुछ अजीब फ़ंक्शन कॉल को देखा ... चलो उन उपयोगिता फ़ंक्शन को बनाएं। वे वास्तविक समय घड़ी प्रोटोकॉल और इसके विपरीत दशमलव संख्या को बाइट में बदलने के लिए उपयोगी हैं

// ----- उपयोगिता कार्य ----

बाइट decToBcd (बाइट वैल) {वापसी ((वैल / 10 * 16) + (वैल 10%)); }

बाइट bcdToDec (बाइट वैल) {वापसी ((वैल / 16 * 10) + (वैल% 16)); }

अब चलो चालू करते हैं और यह कि यह किस समय पर है, इसके आधार पर उपयुक्त लीड को बंद करें

// ----- प्रदर्शन समारोह -----

शून्य प्रदर्शन () {यदि (घंटे> = 20) {digitalWrite (घंटेपिन 20, हाई); digitalWrite (घंटेपिन 10, कम); } और अगर (घंटे> = 10) {digitalWrite (घंटेपिन 20, कम); digitalWrite (घंटेप्रिन 10, हाई); } और {digitalWrite (hoursPin20, LOW); digitalWrite (घंटेपिन 10, कम); } int hours यूनीट = घंटे% 10; if (घंटे यूनीट> = 8) {digitalWrite (घंटेपिन 8, हाई); digitalWrite (hoursPin4, LOW); digitalWrite (hoursPin2, LOW); } और (ifUnit> = 6) {digitalWrite (hoursPin8, LOW); digitalWrite (hoursPin4, HIGH); digitalWrite (घंटेपिन 2, हाई); } और यदि (घंटे>>> 4) {digitalWrite (घंटेपिन 8, कम); digitalWrite (hoursPin4, HIGH); digitalWrite (hoursPin2, LOW); } और अगर (घंटे>> 2 =) {डिजिटलराइट (घंटेपिन 8, कम); digitalWrite (hoursPin4, LOW); digitalWrite (घंटेपिन 2, हाई); } और {digitalWrite (hoursPin8, LOW); digitalWrite (hoursPin4, LOW); digitalWrite (hoursPin2, LOW); } अगर (घंटों का% 2 == 1) {डिजिटलवाइट (घंटेपिन 1, उच्च); } और {digitalWrite (hoursPin1, LOW); } अगर (मिनट> = 40) {digitalWrite (मिनटपिन 40, हाई); digitalWrite (मिनटपिन 20, LOW); if (मिनट> = 50) {digitalWrite (मिनटपिन 10, हाई); } और {digitalWrite (मिनटपिन 10, LOW); }} और अगर (मिनट> = 20) {digitalWrite (मिनटपिन40, LOW); digitalWrite (मिनटपिन 20, हाई); अगर (मिनट> = 30) {digitalWrite (मिनटपिन 10, हाई); } और {digitalWrite (मिनटपिन 10, LOW); }} और अगर (मिनट> = 10) {digitalWrite (मिनटपिन 40, LOW); digitalWrite (मिनटपिन 20, LOW); digitalWrite (मिनटपिन 10, हाई); } और {digitalWrite (मिनटपिन 40, LOW); digitalWrite (मिनटपिन 20, LOW); digitalWrite (मिनटपिन 10, LOW); } int मिनट यूनीट = मिनट% 10; if (मिनट यूनीट> = 8) {digitalWrite (मिनटपिन 8, हाई); digitalWrite (मिनटपिन 4, कम); digitalWrite (मिनटपिन 2, LOW); } और (ifUnit> = 6) {digitalWrite (मिनटपिन, LOW); digitalWrite (मिनटपिन 4, हाई); digitalWrite (मिनटपिन 2, हाई); } और (ifUnit> = 4) {digitalWrite (मिनटपिन 8, LOW); digitalWrite (मिनटपिन 4, हाई); digitalWrite (मिनटपिन 2, LOW); } और अगर (मिनट यूनीट> = 2) {digitalWrite (मिनटपिन 8, LOW); digitalWrite (मिनटपिन 4, कम); digitalWrite (मिनटपिन 2, हाई); } और {digitalWrite (मिनटपिन 8, LOW); digitalWrite (मिनटपिन 4, कम); digitalWrite (मिनटपिन 2, LOW); } अगर (मिनटों का 2% == 1) {डिजिटलवेट (मिनटपिन 1, हाई); } और {digitalWrite (मिनटपिन 1, कम); }}

और घड़ी काम कर सकती है :)

चरण 4: एलईडी बोर्ड बनाना

उपकरण तैयार हो रहे हैं।

फिर आपको छेद ड्रिल करने के लिए कहां से टेम्पलेट प्राप्त करने के लिए यहां संलग्न फ़ाइल को प्रिंट करना चाहिए।
मैंने केवल 5 मिमी एलईडी का उपयोग किया।

मैंने तब गोंद बंदूक को थोड़ा "बॉक्स" बनाने के लिए बाहर निकाला ताकि प्रत्येक एलईडी से प्रकाश दूसरे छेद में न जाए।

चरण 5: एलईडी स्थापित करना

मैंने तब एल ई डी स्थापित किया और हर एनोड (-) पिन के लिए एक रोकनेवाला लगा दिया।

और मैंने उन सभी को एक साथ और एक फ्लैट रिबन तार के तार से जोड़ा।

फिर मैंने सभी कैथोड (+) को एक फ्लैट रिबन तार के एक तार वाले हिस्से से जोड़ा।

चरण 6: बॉक्स बनाना

मैंने तब सर्किट बोर्ड, बटन और 5 वी डी / सी इनपुट को घर में रखने के लिए एक बड़ा बॉक्स लिया।

मैंने बटन के लिए छेद ड्रिल किए और एक फ़ाइल के साथ आकार सही हो गया।

मैंने बटन लगाए और उन्हें गर्म गोंद के साथ तय किया और समय निर्धारित करने के लिए बटन की पहचान की। लाल एक बस सभी एल ई डी के लिए जमीन के प्रवाह में कटौती करने के लिए घड़ी बंद किए बिना रोशनी बंद करने के लिए है।

चरण 7: बोर्ड बनाना

फिर मैंने Atmega328 और सभी वायरिंग के साथ सर्किट को स्थापित करने के लिए सही आकार में एक बोर्ड काट दिया।

चरण 8: इसे एक साथ रखना - भाग अन

चलो बॉक्स में सब कुछ एक साथ हुक करते हैं और इसका परीक्षण करते हैं।

चरण 9: इसे एक साथ रखना - भाग Deux

फिर यह सब कुछ फ्रेम में रखने का समय है, मैंने एक आरआईबीबीए फ्रेम का पुन: उपयोग किया है जो मैंने आईकेईए से (13 सेमी x 18 सेमी) (6 "x 8") के आसपास पड़ा था ... http://www.ikea.com/ca/en / सूची / उत्पादों / 00132524 /

मैंने फ्रेम में शिकंजा के साथ बोर्डों को ठीक करने और गर्म गोंद के साथ फ्रेम के पीछे बॉक्स को पकड़ने का फैसला किया।

चरण 10: तैयार उत्पाद

अब अंतिम उत्पाद को देखने का समय है, यह सजावट का एक अच्छा टुकड़ा है।

समय पढ़ने के लिए आपको बस प्रत्येक रोशनी के मूल्यों को जोड़ने की जरूरत है ... दसियों और घंटों की इकाइयों और दसियों और मिनटों की इकाइयों के लिए।

पहली छवि को पढ़ेंगे (1, 2 + 4, 2, 1 + 2 + 4) ... तो 16h27

अंतिम चित्र (1, 1 + 2 + 4, 1 + 2, 1 + 2) पढ़ेगा तो 17h33

केवल एक चीज जिस पर मुझे पछतावा है, वह है शीर्ष पर घंटों और मिनटों के पीछे अधिक रोशनी नहीं होना, क्योंकि यह ठीक से प्रकाश नहीं करता है ... शायद एक दिन मैं इसे खोलूंगा और संशोधन करूंगा।

आप क्या सोचते हैं मुझे बताओ :)

2 लोगों ने बनाया ये प्रोजेक्ट!

  • क्वांट्ज ने बनाया!

  • marcospardal ने इसे बनाया!

क्या आपने यह प्रोजेक्ट बनाया है? इसे हमारे साथ साझा करें!

अनुशंसाएँ

  • Arduino कोड नमूने को मैश करें

  • ओपन्ससोर्स ऑर्निथॉप्टर प्रोटोटाइप। Arduino संचालित और रिमोट नियंत्रित।

  • इंटरनेट ऑफ थिंग्स क्लास

  • फैंडम प्रतियोगिता

  • इंद्रधनुष प्रतियोगिता के रंग

  • कक्षा विज्ञान प्रतियोगिता

18 चर्चा

0

ssj_vegeta

2 साल पहले

नमस्ते, घड़ी के साथ अच्छा काम। मैं rtc ds3231 का उपयोग कर रहा हूं, क्या उस वजह से कोड में कोई बदलाव हुआ है (यह होना है ...)? मैंने सब कुछ पसंद किया और कुछ भी नहीं हुआ: .. /

3 उत्तर 0

Quantzssj_vegeta

1 साल पहले उत्तर दें

मैंने अभी इस प्रोजेक्ट का प्रोटोटाइप बनाया है और मैंने DS3231 का इस्तेमाल किया है। इसने पूरी तरह से क्लैपोटी के कोड में कोई बदलाव नहीं किया।

0

ClapotiQuantz

1 साल पहले उत्तर दें

खुशी है कि यह सब अच्छा काम किया :)

0

Clapotissj_vegeta

2 साल पहले उत्तर दें

यह वही होना चाहिए जो मुझे लगता है ... लेकिन मुझे यकीन नहीं हो रहा है।
तो कई चीजें गलत हो सकती हैं, खराब वायरिंग, कोड में त्रुटि ... मैं ईमानदारी से नहीं जानता कि यह क्या हो सकता है।

0

'DrackuinM

2 साल पहले

QUE ARDUINO UTILIZO? FUNCIONARA PARA ARDUINO UNO? सोया न्यूवो एन एस्टो

1 उत्तर 0

Clapoti'DrackuinM

2 साल पहले उत्तर दें

हां, मैं एक Arduino Uno का उपयोग करता हूं ... अंतिम उत्पाद पर मैं केवल Atmega328 का उपयोग करता हूं जो Arduino Uno उपयोग करता है।

लेकिन अगर आप चाहें तो पूर्ण Arduino Uno का उपयोग कर सकते हैं ... लेकिन यह केवल चिप से अधिक महंगा है।

0

ve3joc

3 साल पहले

सुनिश्चित करने के लिए अच्छा काम! क्या आपका कोड Arduino मेगा पर काम करेगा? मेरे पास यूएनओ के बजाय मेगा 2560 होने के अलावा मेरे पास इसे बनाने के लिए आवश्यक सब कुछ है।

धन्यवाद

2 उत्तर 0

Clapotive3joc

उत्तर 3 साल पहले

वैसे मैंने कभी मेगा का उपयोग नहीं किया है, लेकिन इसे उसी तरह से काम करना चाहिए।

0

ve3jocClapoti

उत्तर 3 साल पहले

त्वरित उत्तर के लिए धन्यवाद। मैं इसे एक कोशिश करूँगा और देखूंगा कि यह कैसे जाता है।
साझा करने के लिए फिर से धन्यवाद।

0

seamster

3 साल पहले परिचय पर

बहुत अच्छी तरह से किया!

*चरण 4 । । । रहने वाले कमरे में बिजली के उपकरण देखने के बारे में कुछ है जो मुझे मुस्कुराता है! इसे प्यार करना! :)

4 उत्तर 0

Clapotiseamster

परिचय पर 3 साल पहले उत्तर दें

बहुत बहुत धन्यवाद :)
हाँ मैं अभी के लिए एक 2 बेडरूम अपार्टमेंट में रह रहा हूँ इसलिए मेरे पास बहुत जगह नहीं है :)

0

seamsterClapoti

परिचय पर 3 साल पहले उत्तर दें

मुझे आजकल थोड़ा अधिक स्थान मिला है, लेकिन मैं निश्चित रूप से वहां गया हूं! अच्छी चीज़।

मुझे आशा है कि हम आपकी कार्यशाला / लिविंग रूम से बहुत सारी शानदार परियोजनाएँ देखेंगे! :)

0

Clapotiseamster

परिचय पर 3 साल पहले उत्तर दें

धन्यवाद, मैंने पहले से ही कुछ परियोजनाएं कीं, लेकिन निश्चित रूप से जितनी मैंने चाहा उतनी नहीं ... लेकिन कामों में कुछ चीजें हैं, मुझे बस एक दिन में और घंटों की जरूरत है ... या लॉटरी जीतने के लिए इसलिए मैं अपना काम छोड़ सकता हूं दिन के समय नौकरी;)

0

MurtadaHClapoti

उत्तर 3 साल पहले

कृपया मुझे मेरे मेल पर पीडीएफ चाहिए

धन्यवाद

0

smandal13

3 साल पहले परिचय पर

अच्छा काम

1 उत्तर 0

Clapotismandal13

परिचय पर 3 साल पहले उत्तर दें

धन्यवाद :)

0

Cello62

3 साल पहले

अच्छा काम! इसे शेयर करने के लिए धन्यवाद

1 उत्तर 0

ClapotiCello62

परिचय पर 3 साल पहले उत्तर दें

धन्यवाद और मुझे ऐसा करने के लिए प्रेरित करने के लिए अपनी परियोजना के लिए धन्यवाद :)