खिड़कियों में रेखाचित्र लिखने की भाषा। Arduino प्रोग्रामिंग भाषा। Arduino कैसे प्रोग्राम किया जाता है?

तो, आपके पास एक प्रोसेसर है। आप शायद समझते हैं कि प्रोसेसर को किसी भी तरह से प्रोग्राम किया जा सकता है जो आप चाहते हैं। उपयोगी कार्य करने के लिए यह आवश्यक है कि (ए) एक उपयोगी प्रोग्राम लिखें और (बी) इसे निष्पादन के लिए प्रोसेसर को दें।

सामान्य तौर पर, इससे कोई फर्क नहीं पड़ता कि आपके पास किस प्रकार का प्रोसेसर है: आपके लैपटॉप में नवीनतम इंटेल पेंटियम या माइक्रोकंट्रोलर अरुडिनो बोर्ड. कार्यक्रम लेखन सिद्धांत, अर्थात्। प्रोग्रामिंगदोनों मामलों में समान हैं। अंतर केवल गति और अन्य उपकरणों के साथ काम करने के अवसरों का दायरा है।

लेकिन प्रोग्रामर, एक नियम के रूप में, "आलसी", इस अभिव्यक्ति को कम कर सकते हैं। और अगर हम विपरीत प्रभाव करना चाहते हैं, तो हम इस तरह लिखते हैं। अब जब आप आवर्धन के बारे में जानने के लिए आवश्यक सब कुछ जानते हैं, तो चलिए चक्र की ओर बढ़ते हैं। अपनी इच्छानुसार लूप छोड़ने के लिए हमारे वेरिएबल को बढ़ाएँ। हमारे चर घोषित किया। . ये तीनों चरण अलग-अलग थे। इस तथ्य के साथ कि सब कुछ एक पंक्ति में चलता है!

आपको शायद इस पर संदेह है, लेकिन हर बार लूप के घूमने पर वेतन वृद्धि लागू की जाएगी। इन शासन संरचनाओं का परीक्षण करने के लिए आपके पास सभी बुनियादी उपकरण हैं। यह बहुत संभव है कि आप इस सब के मूल्य को पूरी तरह से नहीं समझते हैं, और यह पूरी तरह से सामान्य है। यह सब दिल से नहीं सीखना चाहिए।

प्रोग्राम क्या है और इसे कहाँ लिखना है

प्रोसेसर, उत्पादन की जटिलता के बावजूद, संक्षेप में, काफी सरल और सीधी चीज है। वह नहीं जानता कि कैसे सोचना है। वह केवल आँख बंद करके, बाइट से बाइट कर सकता है, उन निर्देशों को निष्पादित कर सकता है जो उसे फिसल गए थे। निर्देशों के अनुक्रम का एक मोटा उदाहरण यहां दिया गया है:

निर्देश बाइटप्रोसेसर के लिए इसका क्या मतलब है
00001001 मतलब: अगली बाइट लें और उसे सेल नंबर 1 में स्टोर करें
00000110 ... यह सिर्फ अगली बाइट है जिसे हम सेल नंबर 1 में याद करते हैं: नंबर 5
00011001 इसका मतलब है: सेल 1 में मान से एक घटाएं और अपडेट किए गए परिणाम को वहीं छोड़ दें
00101001 अर्थ: सेल नंबर 1 में मान की तुलना शून्य से करें और यदि यह शून्य है - अगले बाइट में बताए अनुसार कई बाइट्स पर कूदें
00000100 ...यदि परिणाम शून्य था, तो हम 4 बाइट्स को अंतिम निर्देश पर कूदना चाहते हैं
10000011
01000001 ... अक्षर "ए" सिर्फ इस कोड से मेल खाता है
00101000 इसका मतलब है कि हम अगले बाइट के रूप में कई बाइट्स वापस कूदना चाहते हैं
00000110 ...हम निर्देश संख्या 3 . पर 6 बाइट पीछे कूदेंगे
10000011 इसका मतलब है कि हम उस कैरेक्टर को प्रदर्शित करना चाहते हैं जिसका कोड अगले बाइट में लिखा गया है
00100001 ... संकेत "!" बस इस कोड से मेल खाता है

निर्देशों के इस तरह के अनुक्रम के निष्पादन के परिणामस्वरूप, स्क्रीन पर पैनिक वाक्यांश "एएएए!" प्रदर्शित किया जाएगा।

प्रोग्रामर "आलसी" हैं, यह ज्ञात है। लेकिन अंत में, एक समारोह क्या काम करता है? यह बहुत अधिक है और यह पढ़ने योग्य नहीं है। हम जो करने जा रहे हैं वह एक फंक्शन बना रहा है जहाँ हम इन 300 निर्देशों को दर्ज करते हैं और अपने प्रोग्राम में हम इस फंक्शन को 10 बार कॉल करेंगे।

आप समझेंगे कि फ़ंक्शन का सिद्धांत कोड की अनगिनत पंक्तियाँ लिखना और आपके प्रोग्राम को अधिक पठनीय बनाना नहीं है। ये फ़ंक्शन आपके द्वारा अपने मुख्य प्रोग्राम में उपयोग किए जाने वाले "सबरूटीन" की तरह हैं। सादगी के लिए, यह कहा जाएगा कि दो प्रकार के कार्य हैं, मूक कार्य और शोर कार्य।

इतने आसान लक्ष्य के लिए बहुत सारे कोड! यह स्पष्ट है कि यदि सभी कार्यक्रम इस तरह लिखे गए, तो सीधे जटिल उत्पादों के विकास में सदियाँ लग जाएँगी।

प्रोग्रामिंग भाषाओं की आवश्यकता क्यों है

कार्य को एक लाख बार सरल बनाने के लिए, प्रोग्रामिंग भाषाओं का आविष्कार किया गया था। उनमें से बहुत सारे हैं, और उनमें से भी जो लगातार सुनने पर हैं, आप जल्दी से एक दर्जन या दो को याद कर सकते हैं: असेंबलर, सी, सी ++, सी #, जावा, पायथन, रूबी, पीएचपी, स्काला, जावास्क्रिप्ट।

साइलेंट फंक्शन वे होते हैं, जिन्हें कॉल करने पर, बिना कुछ प्रदर्शित किए उनके कोड को निष्पादित करते हैं, फिर वे कहते हैं कि वे कुछ भी वापस नहीं करते हैं। एक मूक समारोह का एक उदाहरण। हम दो कोष्ठकों में रखते हैं, आप उनकी उपयोगिता को थोड़ी देर में देखेंगे। हम घुंघराले ब्रेसिज़ खोलते हैं जिसमें हम उन बयानों को जोड़ते हैं जो फ़ंक्शन बनाते हैं।

आप अधिक जटिल मूक कार्य भी बना सकते हैं। फ़ंक्शन की सामग्री वास्तव में वही हो सकती है जो आप चाहते हैं। अब तक जो देखा गया है उसके विपरीत शोर कार्य, एक दिए गए को वापस कर देते हैं। हम एक ऐसा फंक्शन बनाना चाहते हैं जिसमें दो अंक हों।

इन भाषाओं के कार्यक्रम मानव प्राकृतिक भाषा के बहुत करीब हैं। और इसलिए वे लिखने में आसान, तेज और अधिक सुखद हैं, और सबसे महत्वपूर्ण बात यह है कि वे बहुत आसान हैं पढ़ना: लिखने के तुरंत बाद आपको, एक साल में आपको या आपके सहयोगी को।

समस्या यह है कि ऐसी भाषाएँ प्रोसेसर के लिए समझ में नहीं आती हैं, और इस कार्यक्रम को देने से पहले, यह होना चाहिए संकलन: प्राकृतिक भाषा से शून्य और एक के रूप में उन्हीं निर्देशों में अनुवाद करें। यह नामक कार्यक्रमों द्वारा किया जाता है संकलनकर्ता. प्रत्येक भाषा, जब तक कि वह फंतासी स्तर पर न रही हो, उसका अपना संकलनकर्ता होता है। लोकप्रिय भाषाओं के लिए, आमतौर पर चुनने के लिए कई विकल्प होते हैं, इनमें से विभिन्न निर्माताऔर विभिन्न प्लेटफार्मों के लिए। उनमें से ज्यादातर इंटरनेट पर स्वतंत्र रूप से उपलब्ध हैं।

फिर हम फ़ंक्शन को कॉल करते हैं। क्या आपको उपरोक्त उदाहरणों के साथ खाली कोष्ठक याद हैं? तथाकथित तर्कों को कोष्ठकों के बीच रखा जाता है, जो फ़ंक्शन की उपयोगिता को और अधिक रोचक बनाता है। दरअसल, तर्कों के लिए धन्यवाद, हमारा कार्य उपयोगकर्ता द्वारा निर्धारित चर के अनुसार काम करेगा। हम जितने चाहें और किसी भी प्रकार के तर्क दे सकते हैं।

यहां हमने दो तर्क दिए हैं। फ़ंक्शन के अंदर, हम एक पूर्णांक घोषित करते हैं, जिसे परिणाम कहा जाता है, जिसमें वास्तव में जोड़ का परिणाम होगा। फ़ंक्शन का व्यवहार उपयोगकर्ता द्वारा परिभाषित मानों से भिन्न होगा। फिर हमारे पास रिफंड है। वापसी वह मान है जो फ़ंक्शन वापस आ जाएगा। लेकिन इसका क्या मतलब है?

तो, ऐसी भाषा में प्रोग्राम होते हैं जो किसी व्यक्ति के लिए काफी समझ में आते हैं: उन्हें "सोर्स कोड" भी कहा जाता है, बस "कोड" या "सोर्स कोड"। वे सादे पाठ फ़ाइलों का उपयोग करके लिखे गए हैं कोईटेक्स्ट एडिटर, नोटपैड के साथ भी। फिर उन्हें शून्य के सेट में बदल दिया जाता है और संकलक की मदद से प्रोसेसर के लिए समझ में आता है: संकलक इनपुट के रूप में प्राप्त करता है स्रोत, और आउटपुट पर बनाता है बाइनरी निष्पादन योग्य, जिसे प्रोसेसर द्वारा समझा जाता है।

काफी सरलता से, फ़ंक्शन का मान वापस आने पर होगा। यदि पूर्णांक परिणाम 4 है, तो ऐड फ़ंक्शन मान्य है। इसलिए फ़ंक्शन प्रकार विनिर्देश। एक शोर समारोह को अक्सर एक चर के रूप में जाना जाता है, उदाहरण के लिए। अंत में, यह उल्लेख करना महत्वपूर्ण है कि एक प्रोग्राम जो ऊपर से नीचे तक पढ़ता है, उनके उपयोग से पहले कार्यों को घोषित किया जाना चाहिए।

फ़ंक्शन का उपयोग करके उदाहरण कोड। यानी क्या कहा जाएगा, क्या अपरिहार्य और जरूरी है। और जब आप सुबह उठते हैं, तो आपके दाहिने पैर पर होना बेहतर होता है! हम कार्यक्रम की बुनियादी संरचना को देखकर शुरू करेंगे और साथ ही प्रोग्रामिंग इंटरफेस के साथ काम करने का एक दौरा करेंगे।

बाइनरी फ़ाइलें पठनीय नहीं हैं और सामान्य रूप से, केवल प्रोसेसर द्वारा निष्पादन के लिए अभिप्रेत हैं। वे हो सकते हैं विभिन्न प्रकारइस पर निर्भर करता है कि उन्हें किसके लिए प्राप्त हुआ था: .exe - ये विंडोज़ के लिए प्रोग्राम हैं, .hex - एक माइक्रोकंट्रोलर द्वारा निष्पादन के लिए प्रोग्राम जैसे Arduino, आदि।

इतनी सारी प्रोग्रामिंग लैंग्वेज क्यों हैं और क्या अंतर है?

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

तो आपने शायद गौर किया होगा कि टाइप करने पर शब्द रंगीन होते हैं। सिंटैक्स हाइलाइटिंग के लिए यह थोड़ा अधिक व्यावहारिक कॉल है, इसका उपयोग कंप्यूटर विज्ञान में किया जाता है, यह हमें इस्तेमाल की जा रही भाषा के कीवर्ड और अन्य के बीच अंतर करने की अनुमति देता है। शैली के छात्र के संवेदनशील कलाकारों के लिए।

    क्यों? क्योंकि पृथ्वी पर बहुत से लोग और कंपनियां हैं, और बहुतों का मानना ​​था कि वे इसे किसी और से बेहतर कर सकते हैं: अधिक सुविधाजनक, स्पष्ट, तेज, पतला।

    क्या अंतर है: विभिन्न भाषाएं लेखन गति, पठनीयता और निष्पादन गति का एक अलग संतुलन हैं।

आइए उसी प्रोग्राम को देखें जो स्क्रीन पर बीयर की 99 बोतलों के बारे में एक गीत प्रदर्शित करता है। विभिन्न भाषाएंप्रोग्रामिंग।

"देखो, मुझे यह पसंद नहीं है कि नारंगी है, शब्दों पर मुस्कुराओ, ज़ी प्लूटौन नीला-फ़िरोज़ा देखेगा।" मुझे उन्हें यह बताते हुए खेद है कि हमारे पास रंग पसंद नहीं है, लेकिन यह बहुत व्यावहारिक है! एक कंप्यूटर प्रोग्राम एक मशीन को दिए गए निर्देशों का एक क्रम है। ये निर्देश उस भाषा में लिखे गए हैं जो विशिष्ट शब्दों का उपयोग करता है। प्रोग्राम करने का तरीका जानने के बाद, वह पहले से ही सही शब्द जानता है।

आइए कार्यक्रम को फिर से देखें, हम कोष्ठक और घुंघराले ब्रेसिज़ देखते हैं। इस अध्याय में, आप जल्द ही कोष्ठक और घुंघराले ब्रेसिज़ की उपयोगिता देखेंगे, जो अक्सर प्रोग्राम की विफलता का कारण होता है, और हम बाद में देखेंगे कि उन्हें एक दूसरे के भीतर नेस्ट किया जा सकता है। ब्रेस, इसे ठीक बाद में बंद करें, और अपना कोड जोड़ने के लिए बीच में वापस आएं।

उदाहरण के लिए, पर्ल भाषा। जल्दी लिखा; यह समझना असंभव है कि प्रोग्रामर का क्या मतलब है; धीरे-धीरे निष्पादित:

उप बी ($ n = 99 - @_ - $ _ || नहीं; "$ n बोतल"। "एस" एक्स !!-- $ एन। "बीयर का"); $w = "दीवार पर"; डाई मैप (बी. "$w, \एन". बी। ", \n एक नीचे ले जाओ, इसे पास करो,\n ". बी (0)। "$ डब्ल्यू। \n\n"} 0 .. 98

जावा भाषा। यह अपेक्षाकृत लंबा लिखा गया है; पढ़ने में अासान; बहुत जल्दी निष्पादित होता है, लेकिन बहुत सारी मेमोरी लेता है:

अब सॉफ्टवेयर द्वारा पेश किए गए मेनू पर चलते हैं।

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

यह बटन आपको अपने प्रोग्राम का परीक्षण करने की अनुमति देता है।


इसका मतलब है कि कार्यक्रम सही है। संकलन क्या है? वास्तव में, आप जो प्रोग्राम लिखते हैं वह वह नहीं है जो Arduino प्राप्त करता है। यह एक ऐसा प्रोग्राम है जिसे डिज़ाइन किया गया है ताकि लोग इसे बिना अधिक कठिनाई के पढ़ और समझ सकें। मशीन केवल मशीनी भाषा, 1s और 0s के क्रम को समझती है, जिसे वह व्याख्या और क्रियान्वित करेगी।

कक्षा की बोतलें (सार्वजनिक स्थैतिक शून्य मुख्य ( डोरीतर्क) ( डोरीएस = "एस"; के लिए (इंट बियर = 99; बियर> - 1;) ( व्यवस्था.out .print (बीयर + "बोतल" + s + "दीवार पर बियर की, " ); व्यवस्था.out .println (बीयर + "बोतल" + s + "बीयर का," ); अगर (बीयर == 0) ( व्यवस्था.आउट। प्रिंट ( "दुकान पर जाओ, कुछ और खरीदो,") ; व्यवस्था.आउट .प्रिंट्लन( "दीवार पर बीयर की 99 बोतलें.\n ") ; व्यवस्था.बाहर निकलें(0) ; ) वरना व्यवस्था.आउट। प्रिंट ( "एक नीचे ले जाओ, इसे पास करो,") ; एस = (-- बियर == 1 ) ? "" : "एस" ; व्यवस्था.out .println(बीयर + "बोतल" + s + "दीवार पर बियर की.\n ") ; } } }

सभा की भाषा। यह लंबे समय से लिखा गया है; पढ़ने में मुश्किल; बहुत तेज दौड़ता है:

कोड खंड सीएस मान लें: कोड, डीएस: कोड संगठन 100h प्रारंभ:; मुख्य लूप mov cx , 99 ; लूपस्टार्ट से शुरू करने के लिए बोतलें: Printcx पर कॉल करें; नंबर प्रिंट करें mov dx , ऑफ़सेट लाइन1 ; शेष पहली पंक्ति प्रिंट करेंमूव आह , 9 ; MS-DOS प्रिंट स्ट्रिंग रूटीन int 21h कॉल printcx; नंबर प्रिंट करें mov dx , ऑफ़सेट लाइन2_3 ; शेष दूसरी और तीसरी पंक्तिमूव आह , 9 इंट 21 एच डीसी सीएक्स ; एक डाउन कॉल लें Printcx ; नंबर प्रिंट करें mov dx , ऑफ़सेट लाइन4 ; शेष चौथी पंक्ति को प्रिंट करेंमूव आह, 9 इंट 21एच सीएमपी सीएक्स, 0; बियर से बाहर? जेएनई लूपस्टार्ट; यदि नहीं, तो जारी रखें int 20h ; MS-DOS से बाहर निकलें ; दशमलव में सीएक्स रजिस्टर प्रिंट करने के लिए सबरूटीन Printcx: mov di , ऑफ़सेट numbufferend ; अंत से बफर भरेंमूव कुल्हाड़ी, सीएक्स ; संख्या को AX में रखें ताकि हम इसे विभाजित कर सकें Printcxloop: mov dx , 0 ; अंश का उच्च-क्रम शब्द - हमेशा 0मूव बीएक्स, 10 डिव बीएक्स ; DX:AX को 10 से भाग दें। AX=भागफल, DX=शेषडीएल जोड़ें, "0" ; शेष को ASCII वर्ण में बदलेंमूव [डीएस: डी], डीएल; इसे प्रिंट बफ़र में डालें cmp ax , 0 ; गणना करने के लिए कोई और अंक? जेई प्रिंटएक्सएंड; यदि नहीं, तो दिसंबर को समाप्त करें ; अगले अंक को वर्तमान अंक से पहले रखेंजेएमपी प्रिंटसीएक्सलूप; लूप प्रिंटcxend: mov dx , di ; प्रिंट, से शुरू अंतिमअंक गणनामूव आह , 9 इंट 21एच रिट ; डेटा लाइन1 डीबी "दीवार पर बियर की बोतलें,", 13 , 10 , "$" लाइन2_3 डीबी "बीयर की बोतलें," , 13 , 10 , "एक नीचे ले जाओ, इसे पास करो,", 13 , 10 , "$" लाइन4 डीबी "दीवार पर बियर की बोतलें।", 13 , 10 , 13 , 10 , "$" numbuffer db 0 , 0 , 0 , 0 , 0 numbufferend db 0 , "$" कोड समाप्त होता है अंत प्रारंभ

Arduino कैसे प्रोग्राम किया जाता है?

Atmel के Arduino या माइक्रोकंट्रोलर्स की बात करें तो उनके लिए किस भाषा में प्रोग्राम लिखे जा सकते हैं? सैद्धांतिक उत्तर: किसी पर। लेकिन व्यवहार में, चुनाव असेंबलर, सी और सी ++ तक ही सीमित है। यह इस तथ्य के कारण है कि, डेस्कटॉप कंप्यूटर की तुलना में, उनके पास बहुत सीमित संसाधन होते हैं। मेमोरी के किलोबाइट, गीगाबाइट नहीं। प्रोसेसर पर मेगाहर्ट्ज़, गीगाहर्ट्ज़ नहीं। यह सस्तेपन और ऊर्जा दक्षता के लिए एक कीमत है।

संकलन एक मानव द्वारा उपयोग की जाने वाली प्रोग्रामिंग भाषा का मशीन द्वारा उपयोग की जाने वाली मशीन भाषा में परिवर्तन है। अब आप अपने प्रोग्राम पर क्लिक करके पहले कोष्ठक को हटाकर उसे संशोधित करने का प्रयास कर सकते हैं और आपको एक संदेश मिलेगा जैसे।


हमें तुरंत लगता है कि कुछ स्पष्ट नहीं है, और हम सही हैं!

यह समझने के लिए कि क्या हो रहा है, त्रुटि संदेश पढ़ें। लेकिन यह हमेशा सही कारण नहीं होता है। . सामान्य गलतियाँ यह हैं कि आप कुछ लिखना भूल गए हैं, या कि आपने अपेक्षित प्रारूप का सम्मान नहीं किया है। शुरुआत में, आप ज्यादातर अर्धविराम और घुंघराले ब्रेसिज़ या ब्रेसिज़ भूल जाएंगे। बाद में समस्याएँ और भी बदतर हो जाएँगी क्योंकि सॉफ़्टवेयर को कोई त्रुटि दिखाई नहीं देगी, लेकिन आपका प्रोग्राम वह नहीं करेगा जो आप चाहते हैं, लेकिन हम वहाँ नहीं हैं।

इसलिए आपको एक ऐसी भाषा की आवश्यकता है जो संकलन और कुशलता से चल सके। यही है, कीमती निर्देशों और खाली मेमोरी को खर्च किए बिना, उन शून्य और निर्देशों में से यथासंभव बेहतर अनुवाद करना। ये भाषाएँ उतनी ही प्रभावी हैं। उनका उपयोग करके, माइक्रोकंट्रोलर संसाधनों की संकीर्ण सीमाओं के भीतर भी, आप तेजी से चलने वाले सुविधा संपन्न प्रोग्राम लिख सकते हैं।

सब कुछ क्रम में होना चाहिए। वे आपको बेहतर ढंग से समझने की अनुमति देंगे कि डीबगर कैसे काम करता है और बाद में आपको भ्रमित कर देगा। और यह सभी के लिए नहीं जीता है। ज्यादा विकल्प नहीं, आपको यह करना होगा। उनमें से कुछ मुसीबत में चलेंगे। आपके पास सॉफ़्टवेयर मेनू में "टूल्स" मेनू है, इस मेनू में आपको "सीरियल पोर्ट" सबमेनू मिलेगा जो उपयोग करने के लिए कई पोर्ट प्रदान करता है। चयनित पोर्ट को बदलें और जब तक आपको सही पोर्ट न मिल जाए तब तक पुन: प्रयास करें। आपको इसे किसी भिन्न समय पर फिर से दोहराने की आवश्यकता हो सकती है।

लेकिन यह कार्यक्रम जो हमने अभी लिखा है, वास्तव में क्या करता है? यह आसान नहीं है, कठिन प्रयास करें, हम हमेशा कुछ न कुछ करते रहते हैं। अब जबकि आप प्रोग्राम के मूल रूप को जानते हैं, तो चलिए एक प्रोग्राम बनाते हैं जो कुछ करता है।


यह मानचित्र के महत्वपूर्ण भागों पर कब्जा करता है।

असेंबलर, जैसा कि आपने देखा है, सबसे सरल और सुरुचिपूर्ण नहीं है, और परिणामस्वरूप, Arduino के लिए C/C++ प्रमुख भाषा है।

कई स्रोतों का कहना है कि Arduino को प्रोग्राम किया गया है अरुडिनो भाषा, प्रसंस्करण, तारों। यह पूरी तरह से सही कथन नहीं है। Arduino को C / C ++ में प्रोग्राम किया गया है, और जिसे इन शब्दों से कहा जाता है वह सिर्फ एक सुविधाजनक "बॉडी किट" है जो आपको हर बार पहिया को फिर से स्थापित किए बिना कई विशिष्ट कार्यों को हल करने की अनुमति देता है।

हम इस छवि के शीर्ष पर एक नज़र डालेंगे। बाद में हम देखेंगे कि यह क्या है, अभी यह समझने के लिए पर्याप्त है कि यह आग पकड़ सकता है। डायोड सही दिशा में, सही धारा के माध्यम से बहने पर रोशनी करता है। आप देखेंगे कि यह बहुत व्यावहारिक है और इसका उपयोग कुछ मामलों में डीबग करने में हमारी सहायता के लिए किया जा सकता है।

कार्यक्रम के चरण काफी सरल हैं।

  • Arduino को बताया गया था कि हम करंट भेजने के लिए कनेक्शन 13 चाहते हैं।
  • Arduino को कनेक्शन में करंट भेजने के लिए कहा गया था।
और आप अकेले इसका अनुमान नहीं लगा सकते।


अर्धविराम सर्वोपरि है! यदि आप भूल जाते हैं कि प्रोग्राम संकलित नहीं होगा। वे एक जैसे रंग नहीं हैं, हम बाद में देखेंगे कि क्यों। आपने देखा कि पल की संरचना नहीं बदली है, हमने घुंघराले ब्रेसिज़ के बीच सिर्फ दो निर्देश जोड़े हैं।

एक ही वाक्य में C और C++ का उल्लेख क्यों किया गया है? C++, C का ऐड-ऑन है। प्रत्येक C प्रोग्राम एक मान्य C++ प्रोग्राम है, लेकिन इसके विपरीत नहीं। आप दोनों का उपयोग कर सकते हैं। अक्सर, आप वर्तमान समस्या को हल करते समय यह भी नहीं सोचेंगे कि आप क्या उपयोग कर रहे हैं।

बिंदु पर पहुंचें: पहला कार्यक्रम

आइए पहले Arduino प्रोग्राम को लिखें और बोर्ड को इसे चलाने के लिए कहें। आपको स्रोत कोड के साथ एक टेक्स्ट फ़ाइल बनाने, उसे संकलित करने और परिणामी बाइनरी फ़ाइल को माइक्रोकंट्रोलर पर बोर्ड पर रखने की आवश्यकता है।

संख्या 13 महत्वहीन नहीं है, यह वास्तव में संयोजन 13 है जो दांव पर है। यह वही करता है जो पूछा गया था। इसे बंद करने के लिए, एक नया प्रोग्राम भेजा जाना चाहिए जो इसे डायोड को बंद कर देगा। नीले रंग में मुख्य शब्द सॉफ़्टवेयरविशेष हैं। ये वे मान हैं जिन्हें Arduino जानता है और उपयोग करता है।

अपने दम पर समाधान खोजने की कोशिश करना महत्वपूर्ण है, डिबग करें और अंत में इसे खोजें। अपने बारे में सोचे बिना किसी सुधार को देखना बहुत कम रचनात्मक है। क्या आपने इसे अब तक थोड़ा सा पाया है? जब आप वास्तव में शुरू कर रहे हैं तो ये अवधारणाएं अमूर्त और भ्रमित करने वाली लग सकती हैं, अनुभव आपको जो कुछ भी खाया है उसके बीच बेहतर संबंध बनाने में मदद करेगा।

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

ठीक है, यदि आप तैयार हैं, तो हम अपने पहले अधिक जटिल कार्यक्रम पर आक्रमण करेंगे। क्या हमने डायोड चालू किया, इसे बंद किया और इसे चलाया? जब भी आप कोई कार्यक्रम बनाने का निर्णय लेते हैं, तो जहां तक ​​संभव हो, पहले से यह जानना जरूरी है कि आप क्या हासिल करना चाहते हैं। इसमें सीधे जाना और जैसे ही आप जाते हैं इसे बदलना हमेशा लुभावना होता है। आपका कार्यक्रम जितना जटिल होगा, नई सुविधाओं को एकीकृत करने के लिए इसे बदलना उतना ही कठिन होगा, यह कठिन होगा।

हम कनेक्शन में करंट भेजने के लिए निर्दिष्ट करेंगे। 13 हम कनेक्शन में करंट भेजना बंद करने का संकेत देते हैं। 13 फिर हम अनंत बॉक्स में बिंदु संख्या 2 पर फिर से शुरू करना चाहते हैं। अंक 1, 2 और 3 को अब बिना किसी समस्या के प्रोग्राम किया जा सकता है। जहां यह मुश्किल है वह बिंदु है।

पर्यावरण स्थापित करें और इसे चलाएं। दिखाई देने वाली विंडो में आप देखेंगे: के सबसेटेक्स्ट एडिटर को दिए गए स्थान। यह वह जगह है जहाँ कोड लिखा जाता है। Arduino दुनिया में कोड को भी कहा जाता है स्केच.

तो चलिए एक स्केच लिखते हैं जो कुछ भी नहीं करता है। यही है, सबसे छोटा संभव सही सी ++ प्रोग्राम जो बस समय को जला देता है।

शून्य सेटअप () ( ) शून्य लूप ( ) ( )

हम अभी तक लिखित कोड के अर्थ पर ध्यान केंद्रित नहीं करेंगे। आइए इसे संकलित करें। ऐसा करने के लिए, Arduino IDE में, टूलबार पर "सत्यापित करें" बटन होता है। इसे क्लिक करें और कुछ ही सेकंड में बाइनरी फाइल तैयार हो जाएगी। इसकी घोषणा टेक्स्ट एडिटर के तहत शिलालेख "संकलन किया गया" द्वारा की जाएगी।

हम कहेंगे कि वे सेटिंग में हैं। ये निर्देश केवल एक बार पढ़े और सक्रिय किए जाते हैं। यह चित्रमय प्रतिनिधित्व में देता है। उदाहरण के लिए, निम्नलिखित छद्म कार्यक्रम को लें। यहाँ कार्यक्रम का मार्ग है। और यह अनंत या लगभग, या जब तक इसमें करंट न हो।

यह तस्वीर बहुत लंबी लगती है। यह एक एकल निष्पादन को लूप निष्पादन से अलग करना संभव बनाता है, इसके अलावा, यह एक अनुस्मारक है कि घुंघराले ब्रेसिज़ प्रोग्राम कमांड के ब्लॉक की सीमा को इंगित करते हैं। इसे जारी रखने के लिए बिल्कुल याद रखना चाहिए। तो अचानक यह थोड़ा बदल जाता है कि आपको क्या लिखना है यदि आप चाहते हैं कि यह अनिश्चित काल तक झपके।

नतीजतन, हमारे पास .hex एक्सटेंशन के साथ एक बाइनरी फ़ाइल है, जिसे माइक्रोकंट्रोलर द्वारा निष्पादित किया जा सकता है।

अब आपको इसे Arduino में खिसकाने की जरूरत है। इस प्रक्रिया को बूटिंग, फ्लैशिंग या फ्लैशिंग कहा जाता है। Arduino IDE में अपलोड करने के लिए, टूलबार पर एक "अपलोड" बटन होता है। USB केबल के माध्यम से Arduino को कंप्यूटर से कनेक्ट करें, "अपलोड करें" पर क्लिक करें और कुछ ही क्षणों में प्रोग्राम Arduino पर अपलोड हो जाएगा। इस मामले में, जो कार्यक्रम पहले था वह मिटा दिया जाएगा।

सफल फर्मवेयर की घोषणा "डन अपलोडिंग" शिलालेख द्वारा की जाएगी।

यदि आपको डाउनलोड करने का प्रयास करते समय कोई त्रुटि आती है, तो सुनिश्चित करें कि:

    टूल्स → बोर्ड मेनू में, जिस पोर्ट से Arduino वास्तव में जुड़ा हुआ है, उसे चुना गया है। आप यूएसबी केबल को प्लग और अनप्लग कर सकते हैं यह देखने के लिए कि कौन सा पोर्ट दिखाई देता है और गायब हो जाता है: यह Arduino है।

    आपने Arduino के लिए आवश्यक ड्राइवर स्थापित कर लिए हैं। यह विंडोज़ के लिए आवश्यक है, लिनक्स के लिए आवश्यक नहीं है, और केवल MacOS पर Arduino Duemilanove से पहले पुराने बोर्डों के लिए आवश्यक है।

बधाई हो! आप एक साफ स्लेट से काम कर रहे Arduino प्रोग्राम तक सभी तरह से चले गए हैं। उसे कुछ न करने दें, लेकिन यह पहले से ही एक सफलता है।

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

खरोंचना
परियोजना पृष्ठ - s4a.cat/
2003 में, एमआईटी मीडिया लैब में मिशेल रेसनिक के नेतृत्व में शोधकर्ताओं के एक समूह ने प्रोग्रामिंग भाषा को सार्वजनिक डोमेन बनाने का फैसला किया। नतीजतन, 4 साल बाद, स्क्रैच दिखाई दिया - "स्कूली बच्चों को प्रोग्रामिंग सिखाने का माहौल।"
इस वातावरण में, आप विभिन्न वस्तुओं को बना सकते हैं और उनके साथ खेल सकते हैं, उनकी उपस्थिति को संशोधित कर सकते हैं, उन्हें स्क्रीन के चारों ओर ले जा सकते हैं, और उनके बीच बातचीत के रूपों को स्थापित कर सकते हैं। यह लेगो कंस्ट्रक्टर के सिद्धांत पर आधारित एक ऑब्जेक्ट-ओरिएंटेड वातावरण है, जिसमें प्रोग्राम्स को मल्टी-कलर्ड कमांड ब्रिक्स से उसी तरह असेंबल किया जाता है जैसे लेगो कंस्ट्रक्टर्स को मल्टी-कलर्ड ब्रिक्स से असेंबल किया जाता है।
पर्यावरण Russified है, रूसी में इसके लिए कई निर्देश और नियमावली हैं। स्क्रैच में बनाए गए प्रोजेक्ट्स प्रोजेक्ट वेबसाइट स्क्रैच.मिट.एडू/ पर पोस्ट किए जाते हैं, जो सभी डाउनलोड और उपयोग के लिए उपलब्ध हैं। कम उम्र से ही बच्चे के काम के लिए वातावरण सुलभ है, जो पढ़ने और माउस का उपयोग करने में थोड़ा सक्षम है।
पर्यावरण का आधार कई समूहों में विभाजित कमांड ब्लॉक हैं: आंदोलन, उपस्थिति, ध्वनि, कलम, नियंत्रण, सेंसर, ऑपरेटर, चर। अंतर्निहित "दराज" आपको वांछित वस्तु खींचने की अनुमति देता है, और कमांड ब्लॉक (आपको उन्हें माउस से खींचने की आवश्यकता होती है) - सशर्त बयानों और लूपों का उपयोग करने सहित कार्यों का कार्यक्रम सेट करें। बेशक, स्क्रैच में वास्तविक प्रोग्रामिंग भाषा की बहुत सारी विशेषताओं का अभाव है, लेकिन इसमें काफी जटिल प्रोग्राम और गेम बनाने के लिए पर्याप्त है। कार्यक्रम में स्वयं तैयार किए गए जानवरों, घरों, वस्तुओं आदि का एक काफी बड़ा डेटाबेस है, और इसके अलावा, वयस्कों और बच्चों द्वारा बनाए गए इंटरनेट पर प्रकाशित हजारों उदाहरण कार्यक्रमों में से कोई भी एक नमूने के रूप में उपयोग किया जा सकता है।
2008 में, Arduino के लिए स्क्रैच प्रोजेक्ट दिखाई दिया (मूल में: स्क्रैच के लिए Arduino या S4A के रूप में संक्षिप्त) - यह स्क्रैच का एक संशोधन है जो Arduino नियंत्रक को आसानी से नेत्रहीन प्रोग्राम करने की क्षमता प्रदान करता है, और इसमें सेंसर को नियंत्रित करने के लिए नए ब्लॉक भी शामिल हैं और Arduino से जुड़े एक्चुएटर्स।
S4A एक फर्मवेयर स्केच s4a.cat/downloads/S4AFirmware15.ino है, जो Arduino में लोड किया गया है, इसे एक कार्यकारी उपकरण बनाता है, प्रोग्राम कंप्यूटर पर चलता है, Arduino इसे भौतिक रूप से निष्पादित करता है, बोर्ड आउटपुट को सिग्नल प्रेषित करता है। इस मामले में, Arduino सीरियल कनेक्शन के माध्यम से स्क्रैच से कमांड प्राप्त करता है जो पोर्ट को किस स्तर पर सेट करता है और इनपुट से पीसी में मापा स्तरों को स्थानांतरित करता है।
अधिक विवरण या तो परियोजना पृष्ठ पर या एम्परका से वीडियो देखकर पाया जा सकता है - www.youtube.com/playlist?…OzZQGDFdoRfldtqbmNU6a-PIp

अर्दुब्लॉक
प्रोजेक्ट पेज -blog.ardublock.com/
मुझे डेवलपर्स और उनके स्थानीयकरण के नाम नहीं मिले, लेकिन इस परियोजना को स्पार्कफुन बोर्ड डेवलपर द्वारा सक्रिय रूप से बढ़ावा दिया गया है, इसलिए आईएमएचओ यह उनकी परियोजना है।
Ardublock गैर-प्रोग्रामर और उपयोग में आसान के लिए डिज़ाइन की गई Arduino के लिए एक ग्राफिकल प्रोग्रामिंग भाषा है। स्क्रैच के विपरीत, ArduBlock में बनाया गया है Arduino पर्यावरणआईडीई और एक प्रोग्राम स्केच उत्पन्न करता है जिसे एमके में लोड किया जाता है। इसके अलावा, प्लेटफॉर्म पर अपलोड करने के बाद, कोड को स्वायत्त रूप से निष्पादित किया जाएगा, अर्थात। वायर्ड या वायरलेस संचार के माध्यम से कंप्यूटर से सीधे नियंत्रण की आवश्यकता नहीं है।
रूसी भाषी समुदाय के बीच, परियोजना को लाबिंस्क अलेक्जेंडर सर्गेइविच एलिकिन के एक उत्साही शिक्षक के लिए धन्यवाद के लिए जाना जाता है - geektimes.ru/post/258834/

एफएलप्रोग
प्रोजेक्ट पेज - flprog.ru/
परियोजना एक व्यक्ति द्वारा विकसित की जा रही है - सर्गेई ग्लुशेंको। मुख्य विचार औद्योगिक नियंत्रक प्रोग्रामिंग के क्षेत्र में उपयोग की जाने वाली FBD और LAD भाषाओं को Arduino के अनुकूल बनाना है।

FBD (फ़ंक्शन ब्लॉक आरेख)- आईईसी 61131-3 मानक की ग्राफिकल प्रोग्रामिंग भाषा। कार्यक्रम ऊपर से नीचे तक क्रमिक रूप से निष्पादित सर्किट की सूची से बनता है। प्रोग्रामिंग करते समय, लाइब्रेरी ब्लॉक के सेट का उपयोग किया जाता है। एक ब्लॉक (तत्व) एक सबरूटीन, फ़ंक्शन है, या कार्यात्मक ब्लॉक(और, या, नहीं, ट्रिगर, टाइमर, काउंटर, प्रोसेसिंग ब्लॉक एनालॉग संकेत, गणितीय संचालन, आदि)। प्रत्येक व्यक्तिगत सर्किट एक अभिव्यक्ति है जो रेखांकन से बना है व्यक्तिगत तत्व. अगला ब्लॉक एक चेन बनाकर ब्लॉक के आउटपुट से जुड़ा है। श्रृंखला के अंदर, ब्लॉक को उनके कनेक्शन के क्रम में सख्ती से निष्पादित किया जाता है। सर्किट गणना का परिणाम एक आंतरिक चर को लिखा जाता है या नियंत्रक आउटपुट को खिलाया जाता है।

सीढ़ी आरेख (एलडी, एलएडी, आरकेएस)- रिले (सीढ़ी) तर्क की भाषा। रिले तकनीक पर बने लॉजिक सर्किट को बदलने के लिए भाषा का सिंटैक्स सुविधाजनक है। काम करने वाले ऑटोमेशन इंजीनियरों के उद्देश्य से औद्योगिक उद्यम. नियंत्रक के तर्क के लिए एक स्पष्ट इंटरफ़ेस प्रदान करता है, जो न केवल वास्तविक प्रोग्रामिंग और कमीशनिंग के कार्यों को सुविधाजनक बनाता है, बल्कि नियंत्रक से जुड़े उपकरणों में त्वरित समस्या निवारण भी करता है। सीढ़ी तर्क कार्यक्रम में विद्युत इंजीनियरों के लिए एक दृश्य और सहज ज्ञान युक्त ग्राफिकल इंटरफ़ेस है, जो तार्किक संचालन प्रस्तुत करता है, जैसे कि विद्युत सर्किटबंद और खुले संपर्कों के साथ। इस परिपथ में धारा का प्रवाह या अनुपस्थिति परिणाम से मेल खाती है तार्किक संचालन(यदि धारा प्रवाहित हो रही है तो सत्य है; यदि कोई धारा नहीं बह रही है तो असत्य)। मुख्य तत्वभाषाएँ ऐसे संपर्क होते हैं जिनकी लाक्षणिक रूप से रिले या बटन संपर्कों की एक जोड़ी से तुलना की जा सकती है। संपर्कों की एक जोड़ी को तार्किक चर के साथ पहचाना जाता है, और इस जोड़ी की स्थिति को चर के मूल्य से पहचाना जाता है। सामान्य रूप से बंद और सामान्य रूप से खुले संपर्क तत्वों के बीच एक अंतर किया जाता है, जिसकी तुलना विद्युत सर्किट में सामान्य रूप से बंद और सामान्य रूप से खुले पुशबटन से की जा सकती है।
FLProg के कार्य का परिणाम अंतिम कोड है, जिसे MK में लोड किया जा सकता है।

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