विषयसूची:

एक पिन 4×4 कीपैड: 10 कदम
एक पिन 4×4 कीपैड: 10 कदम

वीडियो: एक पिन 4×4 कीपैड: 10 कदम

वीडियो: एक पिन 4×4 कीपैड: 10 कदम
वीडियो: Easy Piano Tutorial: The Alphabet Song 2024, नवंबर
Anonim
एक पिन 4×4 कीपैड
एक पिन 4×4 कीपैड

हर बार जब मैं एक कीपैड देखता हूं, तो यह बहुत सारे पिन के साथ आता है, यह आपके Arduino पिन का एक बड़ा अपशिष्ट है, तो क्या हम एक और केवल एक पिन के साथ कीपैड चला सकते हैं? उत्तर यहाँ है।

चरण 1: सामग्री का बिल

सामग्री के बिल
सामग्री के बिल

हार्डवेयर:

01 अरुडिनो यूएनओ

02 ब्रेडबोर्ड

I2C. के साथ 01 एलसीडी

16 पुश बटन

04 प्रतिरोधक 1.5 kΩ

04 प्रतिरोधक 620

04 प्रतिरोधक 220

०८ प्रतिरोधक १००

01 रोकनेवाला 1 kΩ

07 जम्पर तार

सॉफ्टवेयर:

Arduino IDE आपके पीसी पर स्थापित है

चरण 2: योजनाबद्ध और सर्किट

योजनाबद्ध और Cicruit
योजनाबद्ध और Cicruit
योजनाबद्ध और Cicruit
योजनाबद्ध और Cicruit

सभी का विचार यह है कि हमारे पास 4*4 मैट्रिक्स पुश बटन हैं जो जमीन से दायीं ओर से जुड़े हुए हैं और क्षैतिज रूप से अन्य लीड (बटन लीड) और 1.5 kΩ, 620Ω, 220Ω और 100Ω के प्रतिरोधों के सिरों से जुड़े हैं। 4 पंक्तियों को चार 100Ω प्रतिरोधों द्वारा जोड़ा गया है जैसा कि योजनाबद्ध दिखाया गया है।

हर बार जब आप एक बटन दबाते हैं तो आप सर्किट को बंद कर देते हैं और करंट एक अलग पथ और प्रतिरोधों की विभिन्न श्रृंखला से होकर जाता है, इसलिए पिन A0 प्रत्येक पुश बटन के लिए एक अलग एनालॉग रीड प्राप्त करता है। अब आपको केवल कोडिंग की आवश्यकता है।

चरण 3: कोड

#शामिल

#शामिल

लिक्विड क्रिस्टल_आई2सी एलसीडी (0x3f, 20, 4);

इंट बटन = A0;

इंट रीडवैल्यू;

व्यर्थ व्यवस्था()

{

सीरियल.बेगिन (९६००);

LCD.begin ();

पिनमोड (बटन, इनपुट);

एलसीडी प्रकाश();

LCD.print ("हैलो वर्ल्ड");

देरी (2000);

एलसीडी.क्लियर ();

LCD.print ("एक पिन 4*4 कीपैड");

देरी (2000); }

शून्य लूप ()

{

रीडवैल्यू = एनालॉगरेड (बटन);

Serial.println (रीडवैल्यू);

अगर (readvalue==852){lcd.clear();lcd.print("A");}

और {अगर (रीडवैल्यू == 763) {एलसीडी. क्लियर (); एलसीडी.प्रिंट ("बी");}

और {अगर (रीडवैल्यू == 685) {एलसीडी. क्लियर (); एलसीडी.प्रिंट ("सी");}

और {अगर (रीडवैल्यू == 965) {एलसीडी. क्लियर (); एलसीडी.प्रिंट ("डी");}

और { अगर (रीडवैल्यू == 565) {एलसीडी. क्लियर (); एलसीडी.प्रिंट ("9");}

और {अगर (रीडवैल्यू == 614) {एलसीडी. क्लियर (); एलसीडी.प्रिंट ("6");}

और {अगर (रीडवैल्यू == 360) {एलसीडी. क्लियर (); एलसीडी.प्रिंट ("3");}

और {अगर (रीडवैल्यू==335){एलसीडी.क्लियर ();एलसीडी.प्रिंट("#");}

और {अगर (रीडवैल्यू==396){lcd.clear();lcd.print("8");}

और {अगर (रीडवैल्यू==349){एलसीडी.क्लियर ();एलसीडी.प्रिंट("5");}

और { अगर (रीडवैल्यू == २३५) {एलसीडी. क्लियर (); एलसीडी.प्रिंट ("२");}

और {अगर (रीडवैल्यू == 279) {एलसीडी. क्लियर (); एलसीडी.प्रिंट ("0");}

और {अगर (रीडवैल्यू == 452) {एलसीडी. क्लियर (); एलसीडी.प्रिंट ("7");}

और {अगर (रीडवैल्यू == 271) {एलसीडी. क्लियर (); एलसीडी.प्रिंट ("4");}

और {अगर (रीडवैल्यू == 170) {एलसीडी. क्लियर (); एलसीडी.प्रिंट ("1");}

और {अगर (रीडवैल्यू == 92) {एलसीडी. क्लियर (); एलसीडी.प्रिंट ("*");} और {}}}}}}}}}}}}}}}}

चरण 4: मूल्यों का सुधार

मूल्यों का सुधार
मूल्यों का सुधार

जब आप सीरियल मॉनिटर खोलते हैं तो यह 1023 का मान दिखाएगा, यदि आप एक बटन दबाते हैं तो यह आपको एक और रीडिंग देगा, आपको उन मानों को लेना होगा और कोड में कुछ बदलाव करना होगा

चरण 5: आलोचना और समीक्षा के बाद परियोजना

आलोचना और समीक्षा के बाद परियोजना
आलोचना और समीक्षा के बाद परियोजना

इसमें कोई संदेह नहीं है कि हम सभी यहां अपने ज्ञान को सीखने और साझा करने के लिए हैं, समुदाय के कुछ लोगों द्वारा छोड़ी गई कुछ टिप्पणियों के लिए धन्यवाद जो बहुत मददगार थे, मैंने अपनी परियोजना में कुछ समायोजन और सुधार करने का फैसला किया:

हार्डवेयर:

मैंने ब्रेडबोर्ड में खराब कनेक्शन की समस्या से बचने के लिए पीसीबी में सभी घटकों को मिलाप करने का फैसला किया।

कोड:

एक मित्र ने मुझे एक सॉफ्टवेयर डिबगिंग का उपयोग करने की सलाह दी और यह सिर्फ एक लूप है (उदाहरण के लिए "लूप" के लिए) कार्यक्रम को पढ़ने के लिए कुछ समय लेने के लिए इसका मतलब है कि यह बहुत पढ़ता है (मेरी परीक्षा में 500) लेकिन लेता है केवल आखिरी वाला।

के लिए (i=1; i<= 500; i++) {// केवल ५००वां एनालॉग लें

मूल्य = एनालॉग रीड (बटन);} // यह कुछ समय लेने में मदद करता है ताकि खराब रीडिंग से बचा जा सके

उनके लिए धन्यवाद एक अन्य मित्र ने मुझे "रीडवैल्यू" की तुलना मूल्यों की एक सीमा के साथ करने की सलाह दी, क्योंकि "रीडवैल्यू" एक ही पुश बटन के लिए बहुत सारे मान लेता है। उदाहरण के लिए "ए" का एक पठन देता है: 849, 850, ८५१ ८५२, ८५३, ८५४, ८५५ तो यह ७ मानों की एक सीमा है: एक सीमा (८५२) और ३ मान बाएँ और दाएँ। हमें यहां क्या करना है "रीडवैल्यू" और "852" से "3" के बीच अंतर के पूर्ण मूल्य की तुलना करना है।

if(abs(readvalue-852)<=8){lcd.clear();lcd.print("A");}

चरण 6: कुछ सोल्डरिंग कार्य के बाद

कुछ सोल्डरिंग कार्य के बाद
कुछ सोल्डरिंग कार्य के बाद
कुछ सोल्डरिंग कार्य के बाद
कुछ सोल्डरिंग कार्य के बाद
कुछ सोल्डरिंग कार्य के बाद
कुछ सोल्डरिंग कार्य के बाद

चरण 7: सत्य का क्षण

जैसा कि आप देख सकते हैं कि प्रोग्राम कभी-कभी बटन को भ्रमित करता है लेकिन यह अभी भी काम करता है, सिद्धांत रूप में सर्किट में कुछ भी गलत नहीं है लेकिन कोड को अधिक अंशांकन की आवश्यकता है।

चरण 8: अंत

मुझे आशा है कि आपको यह परियोजना पसंद आएगी और आप इसे करने की कोशिश करेंगे, हो सकता है कि आप मुझसे बेहतर करेंगे।

मुझसे पूछें कि क्या आपके कोई प्रश्न हैं, टिप्पणी छोड़ें और, अगर आपको यह पसंद है तो मुझे वोट देना न भूलें।

सिफारिश की: