विषयसूची:

Arduino आधारित सीरियल सर्वो नियंत्रक: 6 चरण
Arduino आधारित सीरियल सर्वो नियंत्रक: 6 चरण

वीडियो: Arduino आधारित सीरियल सर्वो नियंत्रक: 6 चरण

वीडियो: Arduino आधारित सीरियल सर्वो नियंत्रक: 6 चरण
वीडियो: Arduino tutorial 7- How to control Servo motor with Arduino (code explained) | using servo library 2024, नवंबर
Anonim
Arduino आधारित सीरियल सर्वो नियंत्रक
Arduino आधारित सीरियल सर्वो नियंत्रक
Arduino आधारित सीरियल सर्वो नियंत्रक
Arduino आधारित सीरियल सर्वो नियंत्रक

यह Arduino पर आधारित कई सर्वो के लिए एक साधारण सीरियल कंट्रोलर है। (मेरी पहली शिक्षाप्रद भी:))

इसमें अधिकांश काम आर्डिनो के साथ बात करने के लिए सॉफ्टवेयर प्राप्त करने और डेटा को पारित करने के लिए एक प्रोटोकॉल बनाने से आया था। हार्डवेयर पहलू के लिए जो मैंने उपयोग किया वह दो सर्वो (यहाँ लंबन मानक सर्वो।) एक स्पार्कफुन अरुडिनो प्रोटोशील्ड और एक अरुडिनो ड्यूमिलानोव के साथ ATMEGA328 था, लेकिन इनमें से अधिकांश भागों को समान वस्तुओं के साथ प्रतिस्थापित किया जा सकता है। मैंने इस परियोजना को RC सिस्टम के हिस्से के रूप में सोचा था, लेकिन संचार स्थापित करने में बहुत समय लगा। अगर किसी के पास कोई सुधार, विचार या बग है तो कृपया बेझिझक टिप्पणी करें। संपादित करें: मैंने इसे कुछ समय पहले लिखा था, अभी हाल ही में इसे प्रकाशित करना है।

चरण 1: चीजें जिनकी आपको आवश्यकता हो सकती है …

जिन चीजों की आपको आवश्यकता हो सकती है…
जिन चीजों की आपको आवश्यकता हो सकती है…
जिन चीजों की आपको आवश्यकता हो सकती है…
जिन चीजों की आपको आवश्यकता हो सकती है…

इसे बनाने के लिए आपको कुछ चीजों की जरूरत पड़ेगी। 1. Arduino बोर्ड (आप चुनते हैं) 2. दो (या एक) सर्वो 3. जम्पर तार 4. विजुअल स्टूडियो 2008 एक्सप्रेस - लिंक (वैकल्पिक) 5. Arduino IDE - लिंक क्षमा करें Linux और Apple प्रशंसक, मेरा प्रोग्राम केवल चालू रहता है विंडोज़ अभी के लिए, लेकिन आप अभी भी कोड को बदले बिना मैन्युअल रूप से arduino को सीरियल कमांड भेज सकते हैं।

चरण 2: हार्डवेयर कनेक्ट करें।

हार्डवेयर कनेक्ट करें।
हार्डवेयर कनेक्ट करें।

इस चरण के लिए कुछ भी जटिल नहीं है। बस एक सर्वो को पिन 9 से और दूसरे को 10 पिन करने के लिए कनेक्ट करें।

चरण 3: Arduino को प्रोग्राम करें

Arduino प्रोग्राम करें
Arduino प्रोग्राम करें

अब आप स्केच को arduino पर अपलोड कर सकते हैं।

यहां कोड का एक सरल विश्लेषण दिया गया है: #include Servo myservo; // सर्वो सर्वो myservo1 को नियंत्रित करने के लिए सर्वो ऑब्जेक्ट बनाएं; इंट इनकमिंगबाइट = 0, डेटाकाउंट = 0, काउंटर = 0, रेडी = 0; // आने वाले सीरियल डेटा चार डेटा [10] के लिए; कास्ट चार सत्यापित करें [8] = "ma11hew"; चार कमांड [3]; शून्य सेटअप () { myservo.attach(9); myservo1.attach(10); सीरियल.बेगिन (38400); // सीरियल पोर्ट खोलता है, डेटा दर सेट करता है Serial.println ("हाय Arduino यहाँ!"); // सीरियल पोर्ट की पहचान करने में मदद के लिए जोड़ा गया यह सिर्फ सीरियल पोर्ट और सर्वो को सेट करता है। इंट आई; for(i = 0; i<180;i++) { myservo.write(i); देरी(15); } myservo.write(5); for(i = 0; i<180;i++) { myservo1.write(i); देरी(15); } myservo1.लिखें(५); } सर्वो के कार्य को सही ढंग से सत्यापित करने के लिए सरल व्यापक आंदोलन। शून्य लूप () {तैयार = 0; काउंटर = 0; जबकि (1 == 1) { अगर (सीरियल.रीड ()! = सत्यापित करें [काउंटर]) {ब्रेक; } अगर (काउंटर == 6) {देरी (20); कमांड [0] = सीरियल.रीड (); कमांड [1] = सीरियल.रीड (); // अगर (सीरियल.रीड () == ((कमांड [1] * 12)% 8)) // {रेडी = 1; //} Serial.println ("सेव्ड कमांड"); } काउंटर ++; देरी(2); } यह सही प्राधिकरण स्ट्रिंग के लिए सीरियल बफर की जांच करता है और फिर कमांड के लिए दो बाइट पकड़ लेता है। टिप्पणी की गई अगर कथन एक अस्थायी चेकसम की अनुमति देता है लेकिन मैन्युअल इंटरफेसिंग को कठिन बना देगा। तैयार को 0 पर सेट किया जा सकता है, इसलिए कमांड को पार्स नहीं किया जाएगा जैसे कि दूषित डेटा के मामले में। // कमांड के माध्यम से खोजें अगर (तैयार == 1) {अगर (कमांड [0] == 'टी') {कमांड [0] = 0; Serial.print ("पिन 9 से थ्रॉटल कंट्रोल:"); Serial.println (मानचित्र (कमांड [1], ३२, १२६, २, १८०), डीईसी); myservo.write (मानचित्र (कमांड [1], ३२, १२६, २, १८०)); } अगर (कमांड [0] == 'एस') {कमांड [0] = 0; Serial.print ("पिन 10 से थ्रॉटल कंट्रोल:"); Serial.println (मानचित्र (कमांड [1], ३२, १२६, २, १८०), डीईसी); myservo1.write (मानचित्र (कमांड [1], ३२, १२६, २, १८०)); } } } शेष कोड को वैध कमांड (टी या एस) के लिए कमांड खोजना है यदि दोनों में से कोई भी मेल खाता है तो यह अगली बाइट लेता है और इसे सर्वो को भेजता है। मानचित्र पर और अधिक (कमांड [1], ३२, १२६, २, १८०) बाद में… यहां कोड जो कुछ भी आपको चाहिए (जैसे रोशनी, मोटर्स, आईआर, आदि) के लिए विस्तार योग्य है, इस कोड को ठीक काम करना चाहिए। संशोधन

चरण 4: सॉफ़्टवेयर स्थापित करें

सॉफ्टवेर अधिस्थापित करो
सॉफ्टवेर अधिस्थापित करो

मेरे पास इसे स्थापित करने के दो तरीके हैं… एनएसआईएस इंस्टॉलर: नीचे स्वयं निकालने वाला इंस्टॉलर डाउनलोड करें और इसे चलाएं। आपके पास इंस्टालेशन के दौरान सोर्स इंस्टाल करने का विकल्प होगा। इंस्टॉलर बाइनरी पैकेज कोर सी ++ डीएलएस स्थापित करता है ताकि इसे कंप्यूटर पर बिना विजुअल सी ++ के पहले से स्थापित किया जा सके। एक बार इंस्टॉलर समाप्त हो जाने पर आप इसे डेस्कटॉप या स्टार्ट मेनू से चला सकते हैं। ज़िप तरीका (असत्यापित): डाउनलोड करें और चलाएं, इसे काम करना चाहिए। शायद। (ज़िप संग्रह में स्रोत के बिना, इंस्टॉलर द्वारा बनाई गई एक ही फ़ोल्डर संरचना है। मेरे पास दृश्य स्टूडियो के बिना इसे जांचने के लिए मशीन नहीं है, इसलिए यह काम नहीं कर सकता है।)

चरण 5: इंटरफ़ेस प्रोग्राम का उपयोग करें

इंटरफ़ेस प्रोग्राम का उपयोग करें
इंटरफ़ेस प्रोग्राम का उपयोग करें
इंटरफ़ेस प्रोग्राम का उपयोग करें
इंटरफ़ेस प्रोग्राम का उपयोग करें

प्रोग्राम का उपयोग करने के लिए पहले arduino स्केच में परिभाषित बॉड दर का चयन करें। अनमॉडिफाइड स्केच डिफ़ॉल्ट रूप से 38400 बॉड है, लेकिन धीमी रेडियो लिंक जैसी चीजों के लिए आपकी आवश्यकताओं के अनुरूप इसे बदला जा सकता है। नोट: 38400 से अधिक बॉड दरें बहुत स्थिर नहीं रही हैं, मुझे लगता है कि ऐसा इसलिए है क्योंकि डेटा संसाधित होने से पहले यूआर्ट भर जाता है। अगला, उपयोग करने के लिए COM पोर्ट का चयन करें। प्रोग्राम COM4 में डिफॉल्ट करता है, इसे बदलना सुनिश्चित करें या प्रोग्राम क्रैश हो जाएगा। अंत में ओपन पर क्लिक करें। यदि सब कुछ ठीक रहा तो प्रोग्राम चयनित सीरियल पोर्ट को चयनित बॉड दर पर खोलेगा। यदि नहीं तो प्रोग्राम शायद एक हैंडल न किया गया अपवाद के साथ क्रैश हो जाएगा। सुनिश्चित करें कि पोर्ट सही है और पुनः प्रयास करें। Arduino को सीधे कमांड सबमिट करने के लिए टेक्स्टबॉक्स का उपयोग करें। "मैप (कमांड [1], ३२, १२६, २, १८०)" सभी ९४ संभावित कमांडों को मापता है, *स्पेस* ~ के माध्यम से, एएससीआईआई में आर्डिनो द्वारा पठनीय सर्वो के लिए २ से १८० तक। ASCII 32 (स्पेस) से कम या 126 (~) से ऊपर का कोई भी बाइट 63 (?) पर डिफॉल्ट करता है। ट्रैक बार सीधे कमांड के लिए एक आसान इंटरफ़ेस प्रदान करते हैं। प्रत्येक चरण arduino को क्रमिक रूप से एक सीरियल कमांड भेजता है।

चरण 6: रचनात्मक बनें

रचनात्मक हो!
रचनात्मक हो!
रचनात्मक हो!
रचनात्मक हो!

इसके साथ बनाने के लिए ठंडी चीजों के बारे में सोचें। कुछ विचार: 1. कार के लिए रिमोट थ्रॉटल। 2. ३डी कैमरा माउंट ३. अंडरवाटर रोवर का आनंद लें !!

सिफारिश की: