विषयसूची:

रोबो-बेलहॉप कैसे बनाएं: 3 कदम
रोबो-बेलहॉप कैसे बनाएं: 3 कदम

वीडियो: रोबो-बेलहॉप कैसे बनाएं: 3 कदम

वीडियो: रोबो-बेलहॉप कैसे बनाएं: 3 कदम
वीडियो: रॉक स्किप रोबोट- परफेक्ट रॉक स्किपिंग का विज्ञान 2024, नवंबर
Anonim

लेखक द्वारा अधिक का पालन करें:

iRobot क्रिएट स्कॉलरशिप मिनी-प्रतियोगिता में कैसे प्रवेश करें
iRobot क्रिएट स्कॉलरशिप मिनी-प्रतियोगिता में कैसे प्रवेश करें
iRobot क्रिएट स्कॉलरशिप मिनी-प्रतियोगिता में कैसे प्रवेश करें
iRobot क्रिएट स्कॉलरशिप मिनी-प्रतियोगिता में कैसे प्रवेश करें
मज़ेदार कैप्शन के साथ LOLCats, Meme Cats, Cat मैक्रोज़ या बिल्ली की तस्वीरें कैसे बनाएं
मज़ेदार कैप्शन के साथ LOLCats, Meme Cats, Cat मैक्रोज़ या बिल्ली की तस्वीरें कैसे बनाएं
मज़ेदार कैप्शन के साथ LOLCats, Meme Cats, Cat मैक्रोज़ या बिल्ली की तस्वीरें कैसे बनाएं
मज़ेदार कैप्शन के साथ LOLCats, Meme Cats, Cat मैक्रोज़ या बिल्ली की तस्वीरें कैसे बनाएं
ईटीसी और इंस्ट्रक्शंस में कैसे प्रवेश करें उपयोगी प्रतियोगिता सीना
ईटीसी और इंस्ट्रक्शंस में कैसे प्रवेश करें उपयोगी प्रतियोगिता सीना
ईटीसी और इंस्ट्रक्शंस में कैसे प्रवेश करें उपयोगी प्रतियोगिता सीना
ईटीसी और इंस्ट्रक्शंस में कैसे प्रवेश करें उपयोगी प्रतियोगिता सीना

के बारे में: मुझे चीजों को अलग करना और यह पता लगाना पसंद है कि वे कैसे काम करते हैं। मैं आमतौर पर उसके बाद रुचि खो देता हूं। जेफरीफ के बारे में अधिक »

यह निर्देशयोग्य दिखाता है कि चलती घंटी बनाने के लिए iRobot Create का उपयोग कैसे करें। इसे कैरल डांसर के निर्देशों की अनुमति से पूरी तरह से हटा लिया गया था, और मैंने इसे हमारी प्रतियोगिता के लिए एक नमूना प्रविष्टि के रूप में रखा था। रोबो-बेलहॉप आपके बैग, किराने का सामान, कपड़े धोने, आदि ले जाने के लिए आपका निजी सहायक हो सकता है, इसलिए आपके पास नहीं है प्रति। बेसिक क्रिएट में शीर्ष से जुड़ा एक बिन है और इसके मालिक के आईआर ट्रांसमीटर का पालन करने के लिए दो ऑन-बोर्ड आईआर डिटेक्टरों का उपयोग करता है। बहुत ही बुनियादी सी सॉफ्टवेयर कोड के साथ, उपयोगकर्ता भारी किराने का सामान, कपड़े धोने का एक बड़ा भार, या रोबो-बेलहॉप पर आपके रात भर के बैग को सुरक्षित कर सकता है और रोबोट को सड़क के नीचे, मॉल के माध्यम से, हॉल के नीचे या हवाई अड्डे के माध्यम से आपका पीछा कर सकता है - - जहां भी उपयोगकर्ता को जाने की आवश्यकता हो। मूल ऑपरेशन 1) कमांड मॉड्यूल चालू करने के लिए रीसेट बटन दबाएं और जांच सेंसर आकर्षक हैं 1 ए) प्ले एलईडी चालू होनी चाहिए जब यह आईआर ट्रांसमीटर को आपका अनुसरण करने के लिए देखता है 1 बी) एडवांस एलईडी चालू होनी चाहिए जब रोबोट बहुत करीब सीमा पर है 2) रोबो-बेलहॉप रूटीन चलाने के लिए ब्लैक सॉफ्ट बटन दबाएं 3) टखने में आईआर ट्रांसमीटर संलग्न करें और सुनिश्चित करें कि यह चालू है। फिर टोकरी को लोड करो और जाओ! 4) रोबो-बेलहॉप का तर्क इस प्रकार है: 4 ए) जैसे ही आप घूमते हैं, यदि आईआर सिग्नल का पता लगाया जा रहा है, तो रोबोट अधिकतम गति से ड्राइव करेगा 4 बी) यदि आईआर सिग्नल बाहर चला जाता है रेंज (बहुत दूर या बहुत तेज कोण होने से), रोबोट धीमी गति से थोड़ी दूरी तय करेगा यदि सिग्नल फिर से उठाया जाता है4c) यदि IR सिग्नल का पता नहीं लगाया जा रहा है, तो रोबोट बाएं और दाएं मुड़ जाएगा सिग्नल को फिर से खोजने का प्रयास4d) यदि IR सिग्नल का पता लगाया जा रहा है, लेकिन रोबोट एक बाधा से टकराता है, तो रोबोट बाधा के चारों ओर ड्राइव करने का प्रयास करेगा। मालिक की टखनोंहार्डवेयर1 iRobot वर्चुअल वॉल यूनिट - RadioShack से $301 IR डिटेक्टर - रेडियो झोंपड़ी से $31 DB-9 पुरुष कनेक्टर - होम डिपो से $44 6-32 स्क्रू - $2.502 3V बैटरी, मैंने लक्ष्य से D1 कपड़े धोने की टोकरी का उपयोग किया - $51 अतिरिक्त पहिया पर रोबोट बनाने के पीछेइलेक्ट्रिकल टेप, तार और सोल्डर

चरण 1: आईआर सेंसर को कवर करना

क्रिएट रोबोट के मोर्चे पर आईआर सेंसर के एक छोटे से स्लिट को छोड़कर सभी को कवर करने के लिए विद्युत टेप संलग्न करें। आभासी दीवार इकाई को विघटित करें और इकाई के सामने छोटे सर्किट बोर्ड को निकालें। यह थोड़ा मुश्किल है क्योंकि इसमें बहुत सारे छिपे हुए स्क्रू और प्लास्टिक माउंट हैं। IR ट्रांसमीटर सर्किट बोर्ड पर होता है। IR परावर्तन से बचने के लिए IR ट्रांसमीटर को टिशू पेपर के एक टुकड़े से ढक दें। सर्किट बोर्ड को एक पट्टा या लोचदार बैंड से संलग्न करें जो आपके टखने के चारों ओर लपेट सकता है। बैटरियों को सर्किट बोर्ड में तार दें ताकि आपके पास बैटरियों को एक आरामदायक जगह पर रख सकें (मैंने इसे इसलिए बनाया ताकि मैं बैटरी को अपनी जेब में रख सकूं)।

दूसरे IR डिटेक्टर को DB-9 कनेक्टर से कनेक्ट करें और Cargo Bay ePort पिन 3 (सिग्नल) और पिन 5 (ग्राउंड) में डालें। दूसरे आईआर डिटेक्टर को मौजूदा आईआर सेंसर के शीर्ष पर संलग्न करें और इसे टिशू पेपर की दो परतों के साथ कवर करें जब तक कि दूसरा आईआर डिटेक्टर एमिटर को उस दूरी पर नहीं देखता है जिसे आप रोबोट बनाना बंद करना चाहते हैं। तुम्हें मारने से। रीसेट बटन को हिट करने के बाद आप इसका परीक्षण कर सकते हैं और स्टॉप डिस्टेंस पर जाने के लिए एडवांस एलईडी देख सकते हैं।

चरण 2: टोकरी संलग्न करें

6-32 स्क्रू का उपयोग करके टोकरी संलग्न करें। मैंने अभी टोकरी को क्रिएट रोबोट के शीर्ष पर रखा है। पीछे के पहिये में भी स्लाइड करें ताकि आप क्रिएट रोबोट के पीछे वजन रखें।

नोट: - रोबोट काफ़ी भार वहन कर सकता है, कम से कम ३० पाउंड। - छोटा आकार किसी भी सामान को ले जाने के बारे में सबसे कठिन हिस्सा लग रहा था - आईआर बहुत मनमौजी है। शायद इमेजिंग का उपयोग करना बेहतर है लेकिन यह बहुत अधिक महंगा है

चरण 3: स्रोत कोड डाउनलोड करें।

सोर्स कोड डाउनलोड करें।
सोर्स कोड डाउनलोड करें।

स्रोत कोड इस प्रकार है, और एक पाठ फ़ाइल में संलग्न है:

/********************************* ******************** follow.c ** -------- ** कमांड मॉड्यूल बनाएं पर चलता है ** मोर्चे पर छोटे उद्घाटन को छोड़कर सभी को कवर करें IR सेंसर का ** Create एक आभासी दीवार का अनुसरण करेगा (या कोई भी IR जो ** बल-क्षेत्र संकेत भेज रहा है) और उम्मीद है कि प्रक्रिया में बाधाओं से बचें **** *************************************************** **/#इंटरप्ट शामिल करें। SearchLeftAngle 125# SearchRightAngle (SearchLeftAngle - 1000) को परिभाषित करें #डिफाइन सर्चिंग लेफ्ट ३#डिफाइन सर्चिंगराइट ४#डिफाइन ट्रेसिंगलेफ्ट ५#डिफाइन ट्रेसिंगराइट ६#डिफाइन बैकिंगट्रेसलेफ्ट ७#डिफाइन बैकिंगट्रेसराइट ८// ग्लोबल वेरिएबल्सv अस्थिर uint16_t टाइमर_cnt = 0; वाष्पशील uint8_t टाइमर_ऑन = 0; वाष्पशील uint8_t सेंसर_फ्लैग = 0; वाष्पशील uint8_t सेंसर_इंडेक्स = 0; अस्थिर uint8_t सेंसर_इन [Sen6Size]; अस्थिर uint6_t दूरी सेंसर; अस्थिर uint8_t रेंज = 0;// फ़ंक्शंस शून्य बाइटटेक्स (uint8_t मान); शून्य देरी एमएस (uint16_t time_ms); शून्य देरी और चेकआईआर (uint16_t time_ms); शून्य देरी और अपडेट सेंसर (अहस्ताक्षरित int time_ms); शून्य प्रारंभ (शून्य (शून्य); शून्य शक्तिऑनरो बॉड (uint8_t baud_code); शून्य ड्राइव (int16_t वेग, int16_t त्रिज्या); uint16_t यादृच्छिककोण (शून्य); शून्य परिभाषित गाने (शून्य); int मुख्य (शून्य) {// राज्य परिवर्तनीयuint8_t राज्य = तैयार; int मिला = 0; int Wait_counter = 0;// सेट अप बनाएं और मॉड्यूल इनिशियलाइज़ करें (); LEDBothOff; powerOnRobot (); बाइटटेक्स (CmdStart); बॉड (बॉड 28800); बाइटटेक्स (CmdControl); बाइटटेक्स (CmdFull); // दूसरे IR सेंसर के लिए i/o सेट करेंDDRB &= ~ 0x01; // कार्गो बे ईपोर्ट पिन 3 को इनपुटपोर्टबी के रूप में सेट करें |= 0x01; सेट करें) | (इनरेंज? एलईडी एडवांस: 0x00)); बाइटटेक्स (सेंसर [सेनचार्ज 1]); बाइटटेक्स (64); IRडिटेक्टेड? LED2On: LED2Off; इनरेंज? LED1On: LED1Off; // उपयोगकर्ता बटन की तलाश में, अक्सर देरी और अपडेट सेंसर की जांच करें (10); देरी और जांचकर्ता (१०); अगर (उपयोगकर्ता बटन दबाया गया) {delayAndUpdateSensors (1000);// सक्रिय लूपटाइम (!(UserButtonPressed)&&(!sensors[SenCliffL])&&(!sensors[SenCliffFL])&&(!sensors[SenCliffFR])&&(! सेंसर [SenCliffR])) {byteTx (CmdLeds); byteTx (((सेंसर [SenVWall])? LEDPlay: 0x00) | (इनरेंज? LEDAdvance: 0x00)); बाइटटेक्स (सेंसर [SenCharge1]); बाइटटेक्स (255); IR डिटेक्टेड ?LED2On:LED2Off;inRange?LED1On:LED1Off;स्विच (स्टेट) {केस रेडी: अगर (सेंसर [SenVWall]) {// लीडरिफ से निकटता की जांच करें (इनरेंज) {ड्राइव (0, रेडस्ट्रेट);} और {// ड्राइव स्ट्रेटड्राइव (स्लोस्पीड, रेडस्ट्रेट);स्टेट = फॉलो;}} और {// बीमंगल के लिए खोजें = 0; दूरी = 0; प्रतीक्षा_काउंटर = 0; पाया = FALSE; ड्राइव (सर्चस्पीड, रेडसीसीडब्ल्यू); स्टेट = सर्चिंग लेफ्ट;} ब्रेक; केस फॉलोइंग: अगर (सेंसर [सेनबम्पड्रॉप] और बंपराइट) {दूरी = 0; कोण = 0; ड्राइव (-स्लोस्पीड, रेडस्ट्रेट); राज्य = बैकिंगट्रेस लेफ्ट;} और अगर (सेंसर [सेनबम्पड्रॉप] और बम्पलेफ्ट) {दूरी = 0; कोण = 0; ड्राइव (-स्लोस्पीड, रेडस्ट्रेट); राज्य = बैकिंगट्रेस राइट;} और अगर (सेंसर [सेनवीवॉल]) {// के लिए जांचें लीडरिफ़ से निकटता (इनरेंज) {ड्राइव (0, रेडस्ट्रेट); स्टेट = रेडी;} और {// ड्राइव स्ट्रेटड्राइव (फुलस्पीड, रेडस्ट्रेट); स्टेट = फॉलो;}} और {// बस सिग्नल खो गया, धीरे-धीरे चलते रहें साइकलडिस्टेंस = 0; ड्राइव (स्लोस्पीड, रेडस्ट्रेट); स्टेट = वाज़फॉलोइंग;} ब्रेक; केस वाज़फॉलोइंग: अगर (सेंसर [सेनबम्पड्रॉप] और बम्पराइट) {दूरी = 0; कोण = 0; ड्राइव (-स्लोस्पीड, रेड स्ट्रेट); स्टेट = बैकिंगट्रेस लेफ्ट;} और अगर (सेंसर [सेनबम्पड्रॉप] और बम्पलेफ्ट) {दूरी = 0; कोण = 0; ड्राइव (-स्लोस्पीड, रेडस्ट्रेट); राज्य = बैकिंगट्रेसराइट;} और अगर (सेंसर [सेनवीवॉल]) {// लीडरिफ से निकटता की जांच करें (इनरेंज) {ड्राइव (0, रेडस्ट्रेट); राज्य = आर ईडी;} और {// ड्राइव स्ट्रेटड्राइव (फुलस्पीड, रेडस्ट्रेट); स्टेट = फॉलो;}} और अगर (दूरी> = कोस्टडिस्टेंस) {ड्राइव (0, रेडस्ट्रेट); स्टेट = रेडी;} और {ड्राइव (स्लोस्पीड, रेडस्ट्रेट);} ब्रेक; केस सर्चिंग लेफ्ट: अगर (मिला) {अगर (एंगल> = एक्स्ट्राएंगल) {ड्राइव (स्लोस्पीड, रेडस्ट्रेट); स्टेट = फॉलो;} और {ड्राइव (सर्चस्पीड, रेडसीसीडब्ल्यू);}} और अगर (सेंसर [सेनवीवॉल]) {मिला = TRUE; कोण = 0; अगर (इनरेंज) {ड्राइव (0, रेडस्ट्रेट); राज्य = तैयार;} और {ड्राइव (सर्चस्पीड, रेडसीसीडब्ल्यू);}} और अगर (एंगल> = सर्चलेफ्टएंगल) {ड्राइव (सर्चस्पीड), RadCW); Wait_counter = 0; State = SearchingRight;} और {ड्राइव (SearchSpeed, RadCCW);} ब्रेक; केस सर्चिंग राइट: अगर (मिला) {if (-angle>= ExtraAngle) {ड्राइव (SlowSpeed, RadStraight); State = निम्नलिखित;} और {ड्राइव (सर्चस्पीड, रेडसीडब्ल्यू);}} और अगर (सेंसर [सेनवीवॉल]) {मिला = ट्रू; कोण = 0; अगर (इनरेंज) {ड्राइव (0, रेडस्ट्रेट); राज्य = तैयार;} और {ड्राइव (सर्चस्पीड, रेडसीसीडब्ल्यू);}} और अगर (प्रतीक्षा_काउंटर> 0) {प्रतीक्षा_काउंटर - = 20; ड्राइव (0, रेडस्ट्रेट);} और अगर (कोण = खोज राइटएंगल) {ड्राइव (0, रेडस्ट्रेट); प्रतीक्षा_काउंटर = 5000; कोण = 0;} और {ड्राइव (सर्च स्पीड, रेडसीडब्ल्यू);} ब्रेक; केस ट्रेसिंग लेफ्ट: अगर (सेंसर [सेनबम्पड्रॉप] और बंपराइट) {दूरी = 0; कोण = 0; ड्राइव (-स्लोस्पीड, रेडस्ट्रेट); स्टेट = बैकिंगट्रेस लेफ्ट;} और अगर (सेंसर [सेनबम्पड्रॉप] और बम्पलेफ्ट) {ड्राइव (0, रेडस्ट्रेट); स्टेट = रेडी;} और अगर (सेंसर [सेनवीवॉल]) {// चेक लीडरिफ़ से निकटता के लिए (इनरेंज) {ड्राइव (0, रेडस्ट्रेट); स्टेट = रेडी;} और {// ड्राइव स्ट्रेटड्राइव (स्लोस्पीड, रेडस्ट्रेट); स्टेट = फॉलो;}} और अगर (! (दूरी> = ट्रेसडिस्टेंस)) { ड्राइव (स्लोस्पीड, रेडस्ट्रेट);} और अगर (!(-कोण> = ट्रेसएंगल)) {ड्राइव (सर्चस्पीड, रेडसीडब्ल्यू);} और {दूरी = 0; कोण = 0; ड्राइव (धीमी गति, रेडस्ट्रेट); राज्य = तैयार; }ब्रेक;केस ट्रेसिंगराइट:अगर(सेंसर[सेनबम्पड्रॉप] और बंपराइट) {ड्राइव(0, रैडस्ट्रेट);स्टेट=रेडी;} और अगर(सेंसर[सेनबंपड्रॉप] और बम्पलेफ्ट) {दूरी = 0;कोण = 0;ड्राइव(- स्लोस्पीड, रेडस्ट्रेट); स्टेट = बैकिंगट्रेसराइट;} और अगर (सेंसर [सेनवीवॉल]) {// लीडरिफ से निकटता की जांच करें (इनरंग में) ई) {ड्राइव (0, रेडस्ट्रेट); राज्य = तैयार;} और {// ड्राइव स्ट्रेटड्राइव (स्लोस्पीड, रेडस्ट्रेट); स्टेट = फॉलो;}} और अगर (!(दूरी> = ट्रेसडिस्टेंस)) {ड्राइव (स्लोस्पीड, रेडस्ट्रेट);} और अगर (!(कोण> = ट्रेसएंगल)) {ड्राइव (सर्चस्पीड, रेडसीसीडब्ल्यू);} और {दूरी = 0; कोण = 0; ड्राइव (धीमी गति, रेडस्ट्रेट); राज्य = तैयार;} ब्रेक; केस बैकिंगट्रेस लेफ्ट: अगर (सेंसर [सेनवीवॉल] && इनरेंज) {ड्राइव (0, रेडस्ट्रेट); राज्य = तैयार;} और अगर (कोण> = ट्रेसएंगल) {दूरी = 0; कोण = 0; ड्राइव (धीमी गति, रेडस्ट्रेट); राज्य = ट्रेसिंग लेफ्ट; } और अगर (-डिस्टेंस> = बैकडिस्टेंस) {ड्राइव (सर्च स्पीड, रेडसीसीडब्ल्यू);} और {ड्राइव (-स्लोस्पीड, रेडस्ट्रेट);} ब्रेक; केस बैकिंगट्रेस राइट: अगर (सेंसर [सेनवीवॉल] && रेंज में) {ड्राइव (0, रेडस्ट्रेट); राज्य = तैयार;} और अगर (-कोण> = ट्रेसएंगल) {दूरी = 0; कोण = 0; ड्राइव (धीमी गति, रेडस्ट्रेट); राज्य = ट्रेसिंग राइट;} और अगर (-दूरी> = बैकडिस्टेंस) {ड्राइव (सर्च स्पीड), रेडसीडब्ल्यू);} और {ड्राइव (-स्लोस्पीड, रेडस्ट्रेट);} ब्रेक; डिफ़ॉल्ट: // स्टॉपड्राइव (0, रेडस्ट्रेट); राज्य = पुन ady;break;}delayAndCheckIR(10);delayAndUpdateSensors(10);}//क्लिफ या उपयोगकर्ता बटन का पता चला, स्थिति को स्थिर करने की अनुमति दें (उदाहरण के लिए, बटन जारी किया जाना) ड्राइव (0, रेडस्ट्रेट); देरी और अपडेट सेंसर (2000);}}} // सीरियल सेंसर वैल्यू स्टोर करने के लिए इंटरप्ट प्राप्त करता हैSIGNAL(SIG_USART_RECV){uint8_t temp;temp = UDR0;if(sensors_flag){sensors_in[sensors_index++] = temp;if(sensors_index >= Sen6Size)sensors_flag = 0;}}// टाइमर 1 इंटरप्ट msSIGNAL(SIG_OUTPUT_COMPARE1A){if(timer_cnt)timer_cnt--;elsetimer_on = 0;}// में समय की देरी के लिए सीरियल पोर्टवॉइड बाइटटेक्स (uint8_t मान) पर एक बाइट संचारित करें {जबकि (! (UCSR0A और _BV (UDRE0))); UDR0 = मान;}// बिना सेंसर मानों को अपडेट किए एमएस में निर्दिष्ट समय के लिए देरीविलंब देरीMs(uint16_t time_ms){timer_on = 1;timer_cnt = time_ms;जबकि (timer_on);}// एमएस में निर्दिष्ट समय के लिए देरी और दूसरी जांच करें आईआर डिटेक्टरविहीन देरीऔरचेकआईआर(uint16_t time_ms){uint8_t timer_val = 0;inRange = 0;timer_on = 1;timer_cnt = time_ms;जबकि (timer_on) {if(!(timer_val == timer_cnt)) {इनरेंज + = IRdetected;timer_val = timer_cnt;}}inRange = (inRange>=(time_ms>>1));}// एमएस में निर्दिष्ट समय के लिए देरी और सेंसर मानों को अपडेट करें देरी से रहित और अपडेट सेंसर (uint16_t time_ms) {uint8_t अस्थायी; टाइमर_ऑन = 1; timer_cnt = time_ms; जबकि(timer_on){if(!sensors_flag){for(temp = 0; अस्थायी Sen6Size; अस्थायी ++) सेंसर [अस्थायी] = सेंसर_इन [अस्थायी];// दूरी और कोण के चलने के योग को अपडेट करें + = (int) ((सेंसर [सेनडिस्ट 1] 8) | सेंसर [सेनडिस्ट 0]); कोण + = (इंट) ((सेंसर) [SenAng1] 8) | सेंसर [SenAng0]);byteTx(CmdSensors);byteTx(6);sensors_index = 0;sensors_flag = 1;}}}// माइंड कंट्रोल को इनिशियलाइज़ करें और ATmega168 माइक्रोकंट्रोलर को इनिशियलाइज़ करें (शून्य) {cli (); // I/O पिन सेट करेंDDRB = 0x10; PORTB = 0xCF; DDRC = 0x00; PORTC = 0xFF; DDRD = 0xE6; PORTD = 0x7D; // प्रत्येक 1 msTCCR1A = 0x00 में एक व्यवधान उत्पन्न करने के लिए टाइमर 1 सेट करें; TCCR1B = (_BV (WGM12) | _BV(CS12));OCR1A = 71;TIMSK1 = _BV(OCIE1A);// rx इंटरप्टUBRR0 = 19 के साथ सीरियल पोर्ट सेट करें; UCSR0B = (_BV(RXCIE0) | _BV(TXEN0) | _BV(RXEN0));UCSR0C = (_BV(UCSZ00) | _BV(UCSZ01));//इंटरप्टसेई (यूसीएसजेड01) चालू करें;}void powerOnRobot(void){// अगर पावर बनाना और लगाना बंद है, तो इसे चालू करें (!RobotIsOn){जबकि(!RobotIsOn){RobotPwrToggleLow;delayMs(500); // इस स्थिति में देरीRobotPwrToggleHigh; // powerdelayMs (100) को टॉगल करने के लिए निम्न से उच्च संक्रमण; // इस स्थिति में देरीRobotPwrToggleLow;}delayMs(3500); // स्टार्टअप के लिए विलंब}}// बॉड दर को बनाएँ और मॉड्यूल रहित बॉड (uint8_t baud_code) {if (baud_code = 11) {byteTx (CmdBaud); UCSR0A | = _BV (TXC0);byteTx (baud_code) दोनों पर स्विच करें;/ / संचार पूरा होने तक प्रतीक्षा करें(!(UCSR0A & _BV(TXC0)));cli();// बॉड दर रजिस्टरिफ़ स्विच करें(baud_code == Baud115200)UBRR0 = Ubrr115200;else if(baud_code == Baud57600)UBRR0 = Ubrr57600; और अगर (baud_code == Baud38400) UBRR0 = Ubrr38400; और अगर (baud_code == Baud28800) UBRR0 = Ubrr28800; और अगर (baud_code == Baud19200) UBRR0 = Ubrr19200; और अगर (baud_code == Baud14400) UBRR0 = Ubrr14400;else अगर (baud_code == Baud9600) UBRR0 = Ubrr9600; और अगर (baud_code == Baud4800) UBRR0 = Ubrr4800; और अगर (baud_code == Baud2400) UBRR0 = Ubrr2400; और अगर (baud_code == Baud1200) UBRR0 = Ubrr1200; और अगर (baud_code == Baud600)UBRR0 = Ubrr600;else if(baud_code == Baud300)UBRR0 = Ubrr300;sei();delayMs(100);}}// भेजें वेग और त्रिज्या रहित ड्राइव के संदर्भ में ड्राइव कमांड बनाएं (int16_t वेग, int16_t त्रिज्या) {बाइट टीएक्स (सीएमडीड्राइव); बाइटटेक्स ((यूइंट) 8_t) ((वेग >> 8) और 0x00FF)); बाइटटेक्स ((uint8_t) (वेग और 0x00FF)); बाइटटेक्स ((uint8_t) ((त्रिज्या >> 8) और 0x00FF)); बाइटटेक्स ((uint8_t) (त्रिज्या) और 0x00FF));}

सिफारिश की: