विषयसूची:

एक सरल, व्यावहारिक Arduino स्टॉपवॉच: 4 कदम
एक सरल, व्यावहारिक Arduino स्टॉपवॉच: 4 कदम

वीडियो: एक सरल, व्यावहारिक Arduino स्टॉपवॉच: 4 कदम

वीडियो: एक सरल, व्यावहारिक Arduino स्टॉपवॉच: 4 कदम
वीडियो: DIY Stopwatch made in 30 seconds using #arduino 2024, नवंबर
Anonim
एक सरल, व्यावहारिक Arduino स्टॉपवॉच
एक सरल, व्यावहारिक Arduino स्टॉपवॉच

Arduino स्टॉपवॉच के लिए वेब पर खोजें। यदि आप यहाँ हैं तो शायद आपने अभी-अभी किया है। व्यक्तिगत अनुभव से, मैं आपको बता सकता हूं कि इंटरनेट पर कोई भी स्टॉपवॉच या तो बहुत जटिल है (कोड में, शुरुआती के लिए), या रास्ता बहुत सरल है, और व्यावहारिक नहीं है, जैसे कि रीसेट किए बिना सेकंड गिनते रहते हैं।

आप भी ऐसा सोचते हैं, है ना? अच्छा अंदाजा लगाए। मैंने यह किया, और क्या अधिक है, मैं सीधे मिलिस () फ़ंक्शन से अपना इनपुट लेता हूं- संख्याओं की एक अंतहीन रेखा (49 दिनों तक, या जो भी हो)। श्रेष्ठ भाग? यह केवल एक पंक्ति है।

रीसेट करना, स्टॉपवॉच का वास्तविक कठिन हिस्सा है। इंटरमीडिएट के लिए, प्रोग्रामर, यदि आपने पहले से नहीं किया है, तो आगे बढ़ें और इसे स्वयं करने का प्रयास करें, सेकंड, मिनट और घंटों के साथ। आपको वही मिलेगा जिसकी मैं बात कर रहा हूं।

शुरुआती लोगों के लिए, मेरे दिमाग की प्रतिभा को पढ़ें और आनंद लें।

बस मजाक कर रहा हूं, लेकिन मैं जिस समाधान के साथ आया हूं वह बहुत साफ है। यहाँ यह क्या है:

चरण 1: समाधान

समाधान
समाधान

तो समस्या रीसेट हो रही है। हम जो चाहते हैं, वह संख्याओं का एक निरंतर, दोहराव वाला चक्र है, जो अनुक्रमिक संख्याओं (मिलिस ()) के एक अंतहीन आउटपुट से है - यह मूल रूप से मिलीसेकंड, या वास्तव में 1.024 मिलीसेकंड, लेकिन जो भी हो) की गणना करता है।

पहली बात जो दिमाग में आती है वह अंतर का उपयोग कर रही है, जैसे समय 1-समय 2 और देरी। उसे भूल जाओ। बूट करने के लिए कोड की कम से कम छह पंक्तियाँ, और एक if स्टेटमेंट की आवश्यकता होती है।

तो यहाँ यह कैसे करना है। हमारे पास एक सीमा (59) है। हम चाहते हैं कि 0 से 59 तक सब कुछ बार-बार दोहराया जाए। कैसे?

क्या हुआ अगर… हमने मिलि फलन के शेष… को 59 से भाग दिया…. बिंगो!

तो, यह ऐसा होना चाहिए:

(६० [प्रारंभिक मान के रूप में क्योंकि सीमा ५९ है] + मिली () / १००० [१००० मिलीसेकंड एक सेकंड है])% ६०

ठीक है, लेम्मे समझाओ। (%) या मापांक, मूल रूप से (+) जैसा एक ऑपरेटर है जो शेष पाता है। जैसे ९% २ = १.

इसलिए:

  • शेष (६० + ०)% ६० = ०
  • शेष (६० + १)% ६० =1
  • शेष (६० + ५८)% ६० = ५८
  • शेष (६० + ५९)% ६० = ५९
  • शेष (६० + ६०)% ६० = ६०
  • शेष (६० + ६१)% ६० = १

देखो!

अब, भागों के लिए।

चरण 2: भागों

भागों
भागों

ज्यादा नहीं, बिलकुल नहीं।

  1. कोई भी arduino
  2. कोई भी डिस्प्ले (मैंने 0.96 OLED का उपयोग किया है, लेकिन आपके पास जो कुछ भी है, आप उसका उपयोग कर सकते हैं, बस अपने डिस्प्ले के डिस्प्ले फ़ंक्शंस में सही वेरिएबल डालना सुनिश्चित करें।)

बस, इतना ही।

चरण 3: कोड

ये रहा। यह बहुत स्पष्ट रूप से टिप्पणी की गई है, इसलिए कोई समस्या नहीं होनी चाहिए। 0.96 OLED के लिए पुस्तकालय और init कोड में है। यदि यह भिन्न है तो इसे अपने स्वयं के डिस्प्ले से बदलें।

// 0.96 OLED लाइब्रेरी

#शामिल

#शामिल

#शामिल

#शामिल

// 0.96 OLED इनिट

#परिभाषित OLED_RESET 4

Adafruit_SSD1306 डिस्प्ले (OLED_RESET);

इंट सेकंड;

इंट मिनट;

अंतर घंटे;

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

// कुछ और 0.96 OLED Init

डिस्प्ले.बेगिन (SSD1306_SWITCHCAPVCC, 0x3C);

डिस्प्ले। क्लियरडिस्प्ले (); display.setTextSize(2); display.setTextColor (सफेद); }

शून्य लूप () {

सेकंड = (६० + मिली () / १०००)% ६०;

मिनट = (६० + मिली () / ६००००)% ६०; घंटे = (२५ + मिली () / ३६०००००)% २५;

डिस्प्ले। क्लियरडिस्प्ले ();

डिस्प्ले.सेट कर्सर (0, 22); // रीसेट डिस्प्ले के बाद से घंटों की संख्या प्रिंट करें। प्रिंट (घंटे); डिस्प्ले.प्रिंट ("एच:");

// रीसेट के बाद से मील की संख्या प्रिंट करें

डिस्प्ले।प्रिंट (मिनट);

डिस्प्ले.प्रिंट ("एम:");

// रीसेट डिस्प्ले के बाद से सेकंड की संख्या प्रिंट करें। प्रिंट (सेकंड); डिस्प्ले.प्रिंट ("एस");

डिस्प्ले.सेट कर्सर (0, 0);

डिस्प्ले.प्रिंट ("स्टॉपवॉच"); डिस्प्ले.ड्रालाइन (0, 18, 128, 18, सफेद); डिस्प्ले.डिस्प्ले ();

}

चरण 4: एन फाइनल…

एन फाइनल…
एन फाइनल…

तो यह बात है! अब इसके साथ जो करना चाहते हो जाओ। समय कुछ अंडे, या अपने पड़ोस पर कब्जा।

चीयर्स, आरुशु

सिफारिश की: