अरुडिनो सिंटैक्स। प्रोग्रामिंग की भाषाएँ

परिचय

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

अंतर यह है कि आपको एक साधारण विकास वातावरण मिलता है, और बुनियादी पुस्तकालयों का एक सेट जो माइक्रोकंट्रोलर "बोर्ड पर" बाह्य उपकरणों तक पहुंच बनाना आसान बनाता है।

सहमत हूं, सीरियल पोर्ट के साथ 9600 बिट्स प्रति सेकंड की गति से काम करना शुरू करना बहुत सुविधाजनक है, एक लाइन में कॉल करना:

सीरियल.बेगिन (9600);

और "नंगे" C / C ++ का उपयोग करते समय, आपको माइक्रोकंट्रोलर के लिए प्रलेखन से निपटना होगा, और कुछ इस तरह से कॉल करना होगा:

UBRR0H = ((F_CPU / 16 + 9600/2) / 9600 - 1) >> 8;
UBRR0L = ((F_CPU / 16 + 9600/2) / 9600 - 1);
एसबीआई (यूसीएसआर0बी, आरएक्सईएन0);
एसबीआई (यूसीएसआर0बी, TXEN0);
एसबीआई (यूसीएसआर0बी, आरएक्ससीआईई0);

यहां मुख्य कार्यों और विशेषताओं का संक्षिप्त विवरण दिया गया है Arduino प्रोग्रामिंग. यदि आप C/C++ भाषाओं के वाक्य-विन्यास से परिचित नहीं हैं, तो हम आपको इस मुद्दे पर किसी साहित्य या इंटरनेट स्रोतों को देखने की सलाह देते हैं।

दूसरी ओर, प्रस्तुत किए गए सभी उदाहरण बहुत सरल हैं, और सबसे अधिक संभावना है कि आपको अतिरिक्त साहित्य पढ़े बिना भी स्रोत ग्रंथों को समझने और अपने स्वयं के कार्यक्रम लिखने में कोई कठिनाई नहीं होगी।

अधिक संपूर्ण दस्तावेज़ीकरण अंग्रेजी भाषा) परियोजना की आधिकारिक वेबसाइट - http://www.arduino.cc पर प्रस्तुत किया गया है। एक मंच भी है, अतिरिक्त पुस्तकालयों के लिंक और उनका विवरण।

Arduino प्रोजेक्ट की आधिकारिक वेबसाइट पर विवरण के अनुरूप, "पोर्ट" माइक्रोकंट्रोलर के संपर्क को संदर्भित करता है, संबंधित संख्या के तहत कनेक्टर को आउटपुट। इसके अलावा, एक सीरियल डेटा पोर्ट (COM पोर्ट) है।

कार्यक्रम संरचना

अपने कार्यक्रम में, आपको दो घोषित करना होगा मुख्य कार्य: सेटअप () और लूप ()।

फ्रीडुइनो बोर्ड के प्रत्येक पावर अप या रीसेट के बाद, सेटअप () फ़ंक्शन को एक बार कॉल किया जाता है। वैरिएबल को इनिशियलाइज़ करने, डिजिटल पोर्ट मोड सेट करने आदि के लिए इसका इस्तेमाल करें।

लूप () फ़ंक्शन क्रमिक रूप से अपने शरीर में वर्णित आदेशों को बार-बार निष्पादित करता है। वे। समारोह समाप्त होने के बाद, इसे फिर से बुलाया जाएगा।

आइए एक साधारण उदाहरण लें:

शून्य सेटअप () // प्रारंभिक सेटिंग्स
{
प्रारंभ सीरियल (9600); // सीरियल पोर्ट स्पीड को 9600 बीपीएस पर सेट करें
पिनमोड (3, इनपुट); // डेटा इनपुट के लिए तीसरा पोर्ट सेट करें
}

// प्रोग्राम उस पर सिग्नल के लिए तीसरे पोर्ट की जांच करता है और एक प्रतिक्रिया भेजता है
// कंप्यूटर के सीरियल पोर्ट पर एक टेक्स्ट संदेश के रूप में
शून्य लूप () // प्रोग्राम बॉडी
{
if (digitalRead(3) == High) // पोलिंग पोर्ट 3 के लिए कंडीशन
सीरियलवाइट ("एच"); // COM पोर्ट को "H" अक्षर के रूप में एक संदेश भेजें
वरना
सीरियलवाइट ("एल"); // COM पोर्ट को "L" अक्षर के रूप में एक संदेश भेजें
देरी (1000); // देरी 1 सेकंड।
}

पिनमोड (पोर्ट, मोड);

विवरण:

सिग्नल को इनपुट या आउटपुट करने के लिए निर्दिष्ट पोर्ट को कॉन्फ़िगर करता है।

विकल्प:

पोर्ट - उस पोर्ट की संख्या जिसका मोड आप सेट करना चाहते हैं (0 से 13 तक पूर्णांक मान)।

मोड - या तो इनपुट (इनपुट) या आउटपुट (आउटपुट)।

पिनमोड (13, आउटपुट); // 13 वां पिन आउटपुट होगा
पिनमोड (12, इनपुट); // और 12 वां इनपुट है

टिप्पणी:

संख्या 14 (एनालॉग इनपुट 0) से 19 (एनालॉग इनपुट 5) द्वारा एक्सेस किए जाने पर एनालॉग इनपुट का उपयोग डिजिटल इनपुट / आउटपुट के रूप में किया जा सकता है

digitalWrite (पोर्ट, मान);

विवरण:

निर्दिष्ट पोर्ट पर वोल्टेज स्तर को उच्च (उच्च) या निम्न (लो) पर सेट करता है।

विकल्प:

पोर्ट: पोर्ट नंबर

मान: उच्च या निम्न

डिजिटलवाइट (13, हाई); // पिन 13 को "उच्च" स्थिति पर सेट करें

मूल्य = डिजिटल रीड (पोर्ट);

विवरण:

निर्दिष्ट पोर्ट पर एक मान पढ़ता है

विकल्प:

पोर्ट: पोलेड पोर्ट नंबर

वापसी मूल्य: प्रकार के पोर्ट (उच्च या निम्न) पर वर्तमान मान लौटाता है int

इंट वैल्यू;
वैल = डिजिटलरेड(12); // 12 वें आउटपुट को पोल करें

टिप्पणी:

यदि रीड पोर्ट से कुछ भी नहीं जुड़ा है, तो digitalRead () फ़ंक्शन बेतरतीब ढंग से उच्च या निम्न लौटा सकता है।

एनालॉग इनपुट / आउटपुट सिग्नल

मान = एनालॉगरेड (पोर्ट);

विवरण:

निर्दिष्ट एनालॉग पोर्ट से एक मान पढ़ता है। फ्रीडुइनो में 6 चैनल हैं, प्रत्येक में 10 बिट ए/डी कन्वर्टर्स हैं। इसका मतलब है कि 0 से 5V के इनपुट वोल्टेज को 0 से 1023 के पूर्णांक मान में बदल दिया जाता है। पढ़ने का संकल्प है: 5V/1024 मान = 0.004883V/मान (4.883mV)। एनालॉग इनपुट मान को पढ़ने में लगभग 100 nS (0.0001 S) लगता है, इसलिए अधिकतम रीडआउट दर लगभग 10,000 बार प्रति सेकंड है।

विकल्प:

वापसी मूल्य: 0 से 1023 की सीमा में एक इंट लौटाता है, निर्दिष्ट पोर्ट से पढ़ा जाता है।

इंट वैल्यू;
वैल = एनालॉगरेड (0); // एनालॉग इनपुट पर मूल्य पढ़ें 0

टिप्पणी:

एनालॉग पोर्ट सिग्नल-इनपुट डिफ़ॉल्ट रूप से परिभाषित होते हैं और, डिजिटल पोर्ट के विपरीत, उन्हें पिनमोड फ़ंक्शन को कॉल करके कॉन्फ़िगर करने की आवश्यकता नहीं होती है।

एनालॉगवर्इट (पोर्ट, वैल्यू);

विवरण:

पोर्ट के अनुरूप मान आउटपुट करता है। यह सुविधा इस पर काम करती है: 3, 5, 6, 9, 10 और 11 फ्रीडुइनो डिजिटल पोर्ट।

इसका उपयोग एलईडी की चमक को बदलने, मोटर को नियंत्रित करने आदि के लिए किया जा सकता है। AnalogWrite फ़ंक्शन को कॉल करने के बाद, संबंधित पोर्ट पल्स-चौड़ाई मॉड्युलेटेड वोल्टेज मोड में तब तक काम करेगा जब तक कि AnalogWrite फ़ंक्शन (या उसी पोर्ट पर digitalRead / digitalWrite फ़ंक्शन) पर अगली कॉल न हो जाए।

विकल्प:

पोर्ट: प्रदूषित एनालॉग इनपुट की संख्या

मान: 0 और 255 के बीच पूर्णांक। 0 का मान निर्दिष्ट पोर्ट पर 0 V उत्पन्न करता है; 255 का मान निर्दिष्ट पोर्ट पर +5 V उत्पन्न करता है। 0 और 255 के बीच के मानों के लिए, पोर्ट 0 और +5V के बीच तेजी से चक्रित होगा - मान जितना अधिक होगा, पोर्ट उतनी ही बार उच्च (5V) उत्पन्न करेगा।

AnalogWrite(9, 128);// पिन 9 को 2.5V . के बराबर मान पर सेट करें

टिप्पणी:

एनालॉगवाइट फ़ंक्शन को कॉल करने से पहले पोर्ट को पिन पर सेट करने के लिए पिनमोड फ़ंक्शन को कॉल करना आवश्यक नहीं है।

सिग्नल जनरेशन फ्रीक्वेंसी लगभग 490 हर्ट्ज है।

समय = मिली ();

विवरण:

फ्रीडुइनो द्वारा वर्तमान कार्यक्रम को निष्पादित करने के बाद से मिलीसेकंड की संख्या लौटाता है। लगभग 9 घंटे के बाद काउंटर ओवरफ्लो हो जाएगा और शून्य पर रीसेट हो जाएगा।

वापसी मूल्य: अहस्ताक्षरित लंबे प्रकार का मान लौटाता है

अहस्ताक्षरित लंबे समय; // अहस्ताक्षरित लंबे प्रकार के समय चर की घोषणा
समय = मिली (); // मिलीसेकंड की संख्या पास करना

देरी (समय_एमएस);

विवरण:

मिलीसेकंड की निर्दिष्ट संख्या के लिए प्रोग्राम को रोकता है।

विकल्प:

time_ms - मिलीसेकंड में कार्यक्रम विलंब समय

देरी (1000); // 1 सेकंड रोकें

देरीमाइक्रोसेकंड

देरीमाइक्रोसेकंड (time_µs);

विवरण:

माइक्रोसेकंड की निर्दिष्ट संख्या के लिए प्रोग्राम को रोकता है।

विकल्प:

time_µs - माइक्रोसेकंड में प्रोग्राम विलंब समय

देरीमाइक्रोसेकंड (500); // 500 माइक्रोसेकंड रोकें

पल्सइन (पोर्ट, वैल्यू);

विवरण:

एक डिजिटल पोर्ट से एक पल्स (उच्च या निम्न) पढ़ता है और माइक्रोसेकंड में पल्स की अवधि देता है।

उदाहरण के लिए, यदि फ़ंक्शन को कॉल करते समय "मान" पैरामीटर उच्च पर सेट होता है, तो पल्सइन () उच्च सिग्नल स्तर प्राप्त करने के लिए पोर्ट की प्रतीक्षा करता है। जिस क्षण से यह आता है, पोर्ट प्राप्त होने तक उलटी गिनती शुरू हो जाती है कम स्तरसंकेत। फ़ंक्शन पल्स लंबाई लौटाता है ( उच्च स्तर) माइक्रोसेकंड में। 10 माइक्रोसेकंड से 3 मिनट तक दालों के साथ काम करता है। ध्यान दें कि यह फ़ंक्शन तब तक परिणाम नहीं लौटाएगा जब तक कि पल्स का पता नहीं चल जाता।

विकल्प:

पोर्ट: उस पोर्ट की संख्या जिससे हम पल्स पढ़ते हैं

मान: पल्स प्रकार उच्च या निम्न

वापसी मूल्य: माइक्रोसेकंड में पल्स की अवधि लौटाता है (प्रकार int)

अंतर अवधि; // प्रकार की अवधि चर की घोषणा int
अवधि = पल्सइन (पिन, हाई); // नाड़ी की अवधि को मापें

धारावाहिक संचार

फ्रीडुइनो में एक अंतर्निर्मित सीरियल कंट्रोलर है जिसका उपयोग फ्रीडुइनो/अरुडिनो उपकरणों या कंप्यूटर के बीच संचार करने के लिए किया जा सकता है। कंप्यूटर पर, संबंधित कनेक्शन को USB COM पोर्ट द्वारा दर्शाया जाता है।

संचार डिजिटल पोर्ट 0 और 1 पर होता है, और इसलिए यदि आप सीरियल डेटा फ़ंक्शन का उपयोग कर रहे हैं तो आप उनका उपयोग डिजिटल I/O के लिए नहीं कर सकते।

Serial.begin (बॉड दर);

विवरण:

बॉड दर सेट करता है कॉम पोर्टसीरियल डेटा ट्रांसफर के लिए प्रति सेकंड बिट्स। कंप्यूटर से संचार करने के लिए, इनमें से किसी एक मानक गति का उपयोग करें: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, या 115200। पोर्ट 0 द्वारा किसी अन्य माइक्रोकंट्रोलर के साथ संचार करते समय आप अन्य गति भी निर्दिष्ट कर सकते हैं। और 1।

विकल्प:

बॉड्रेट: डेटा दर प्रति सेकंड बिट्स में।

सीरियल.बेगिन (9600); // गति को 9600 बीपीएस पर सेट करें

धारावाहिक.उपलब्ध

गिनती = धारावाहिक उपलब्ध ();

विवरण:

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

प्रतिलाभ की मात्रा:

एक इंट वैल्यू देता है, सीरियल बफर में पढ़ने के लिए उपलब्ध बाइट्स की संख्या, या 0 अगर कुछ भी उपलब्ध नहीं है।

अगर (सीरियल.उपलब्ध ()> 0) (// यदि बफर में डेटा है
// यहां डेटा प्राप्त करना और संसाधित करना चाहिए
}

चार = सीरियल.रीड ();

विवरण:

सीरियल बफर से अगला बाइट पढ़ता है।

प्रतिलाभ की मात्रा:

सीरियल पोर्ट से आने वाले डेटा की पहली उपलब्ध बाइट, या -1 अगर कोई आवक डेटा नहीं है।

इनकमिंगबाइट = सीरियल.रीड (); // बाइट पढ़ें

विवरण:

सीरियल पोर्ट के इनपुट बफर को साफ करता है। बफ़र्ड डेटा खो जाता है, और आगे Serial.read () या Serial.उपलब्ध () को कॉल करने से Serial.flush () को कॉल के बाद प्राप्त डेटा के लिए समझ में आएगा।

सीरियल फ्लश (); // बफर साफ़ करें - "स्क्रैच से" डेटा प्राप्त करना शुरू करें

विवरण:

सीरियल पोर्ट के लिए डेटा आउटपुट।

विकल्प:

आउटपुट डेटा के प्रकार और प्रारूप के आधार पर फ़ंक्शन में कई कॉल फॉर्म होते हैं।

Serial.print(b, DEC) एक ASCII स्ट्रिंग को प्रिंट करता है, b का दशमलव प्रतिनिधित्व।

इंट बी = 79;

Serial.print(b, HEX) एक ASCII स्ट्रिंग को प्रिंट करता है, जो संख्या b का हेक्साडेसिमल प्रतिनिधित्व है।

इंट बी = 79;

Serial.print(b, OCT) एक ASCII स्ट्रिंग को प्रिंट करता है, जो संख्या b का ऑक्टल प्रतिनिधित्व है।

इंट बी = 79;
सीरियल प्रिंट (बी, अक्टूबर); // स्ट्रिंग "117" को पोर्ट पर आउटपुट करेगा

Serial.print(b, BIN) एक ASCII स्ट्रिंग को प्रिंट करता है, जो संख्या b का बाइनरी प्रतिनिधित्व है।

इंट बी = 79;
सीरियल.प्रिंट (बी, बिन); // पोर्ट पर स्ट्रिंग "1001111" आउटपुट करेगा

Serial.print(b, BYTE) b के लो बाइट को प्रिंट करता है।

इंट बी = 79;
सीरियल.प्रिंट (बी, बाइट); // 79 नंबर (एक बाइट) प्रिंट करता है। मॉनिटर में
// सीरियल पोर्ट हमें "O" अक्षर मिलता है - इसका
// कोड 79 . है

Serial.print(str) यदि str एक स्ट्रिंग या वर्णों की एक सरणी है, तो str को COM पोर्ट बाइट द्वारा बाइट द्वारा भेजता है।

चार बाइट्स = (79, 80, 81); // 79,80,81 के मूल्यों के साथ 3 बाइट्स की सरणी
Serial.print ("यहां हमारे बाइट्स:"); // स्ट्रिंग को प्रिंट करता है "यहां हमारे बाइट्स:"
सीरियल प्रिंट (बाइट्स); // आउटपुट 3 वर्ण कोड 79,80,81 के साथ -
// ये "OPQ" अक्षर हैं

Serial.print(b) यदि b बाइट या चार प्रकार का है, तो नंबर b को पोर्ट पर ही प्रिंट करता है।

चार्ब = 79;
सीरियल प्रिंट (बी); // पोर्ट को "O" अक्षर जारी करेगा

Serial.print(b) यदि b एक पूर्णांक है, तो b के दशमलव निरूपण को पोर्ट पर प्रिंट करता है।

इंट बी = 79;
सीरियल प्रिंट (बी); // पोर्ट पर स्ट्रिंग "79" आउटपुट करेगा

विवरण:

Serial.println फ़ंक्शन Serial.print फ़ंक्शन के समान है, और इसमें समान कॉल विकल्प हैं। केवल अंतर यह है कि डेटा के बाद दो अतिरिक्त वर्ण आउटपुट होते हैं - एक कैरिज रिटर्न (ASCII 13, या "\r") और एक न्यूलाइन कैरेक्टर (ASCII 10, या "\n")।

उदाहरण 1 और उदाहरण 2 एक ही चीज़ को पोर्ट पर आउटपुट करेंगे:

इंट बी = 79;
सीरियल.प्रिंट (बी, डीईसी); // पोर्ट पर स्ट्रिंग "79" आउटपुट करेगा
सीरियल.प्रिंट ("\ r \ n"); // "\r\n" अक्षर प्रदर्शित करेगा - न्यूलाइन
सीरियल.प्रिंट (बी, हेक्स); // पोर्ट पर स्ट्रिंग "4F" आउटपुट करेगा
Serial.print("\r\n");// "\r\n" अक्षरों को प्रिंट करेगा - न्यूलाइन

इंट बी = 79;
Serial.println (बी, डीईसी); // पोर्ट पर स्ट्रिंग "79\r\n" आउटपुट करेगा
Serial.println (बी, हेक्स); // पोर्ट पर स्ट्रिंग "4F\r\n" आउटपुट करेगा

सीरियल पोर्ट मॉनिटर में हमें मिलता है।

नमस्ते! मैं एलिकिन अलेक्जेंडर सर्गेइविच, अतिरिक्त शिक्षा का शिक्षक हूं, मैं लैबिंस्क के सेंट्रल चिल्ड्रन एंड यूथ थिएटर में "रोबोटिक्स" और "रेडियो इंजीनियरिंग" मंडलियों का नेतृत्व करता हूं। मैं ArduBloсk प्रोग्राम का उपयोग करके Arduino को प्रोग्राम करने के एक सरल तरीके के बारे में थोड़ी बात करना चाहूंगा।

मैंने इस कार्यक्रम को शैक्षिक प्रक्रिया में पेश किया और परिणाम से खुश हूं, यह बच्चों के बीच विशेष मांग में है, खासकर जब सरल कार्यक्रम लिखते हैं या जटिल कार्यक्रमों के कुछ प्रारंभिक चरण बनाते हैं। ArduBloсk एक ग्राफिकल प्रोग्रामिंग वातावरण है, अर्थात सभी क्रियाएं रूसी में हस्ताक्षरित क्रियाओं के साथ खींची गई तस्वीरों के साथ की जाती हैं, जो Arduino प्लेटफॉर्म को सीखने में बहुत सरल बनाती हैं। इस कार्यक्रम की बदौलत दूसरी कक्षा के बच्चे आसानी से Arduino के साथ काम करने में महारत हासिल कर सकते हैं।

हां, कुछ लोग कह सकते हैं कि स्क्रैच अभी भी मौजूद है और यह Arduino प्रोग्रामिंग के लिए एक बहुत ही सरल ग्राफिकल वातावरण भी है। लेकिन स्क्रैच Arduino को फ्लैश नहीं करता है, लेकिन केवल के माध्यम से इसे नियंत्रित करता है यूएसबी केबल. Arduino कंप्यूटर पर निर्भर है और स्वायत्त रूप से काम नहीं कर सकता है। अपनी खुद की परियोजनाएं बनाते समय, Arduino के लिए स्वायत्तता मुख्य बात है, खासकर रोबोटिक उपकरण बनाते समय।

यहां तक ​​कि जाने-माने लेगो रोबोट, जैसे NXT या EV3, अब Arduino प्रोग्रामिंग में ArduBloсk प्रोग्राम के आगमन के साथ हमारे छात्रों के लिए इतने दिलचस्प नहीं हैं। इसके अलावा, Arduino किसी भी लेगो डिजाइनरों की तुलना में बहुत सस्ता है और कई घटक पुराने उपभोक्ता इलेक्ट्रॉनिक्स से आसानी से लिए जा सकते हैं। ArduBloсk कार्यक्रम न केवल शुरुआती, बल्कि Arduino प्लेटफॉर्म के सक्रिय उपयोगकर्ताओं को भी उनके काम में मदद करेगा।

तो, अर्दुब्लॉक क्या है?जैसा कि मैंने कहा, यह एक ग्राफिकल प्रोग्रामिंग वातावरण है। लगभग पूरी तरह से रूसी में अनुवादित। लेकिन ArduBloсk में, हाइलाइट केवल यही नहीं है, बल्कि यह भी तथ्य है कि हमारे द्वारा लिखे गए ArduBloсk प्रोग्राम को कोड में बदल दिया गया है। अरुडिनो आईडीई. यह प्रोग्राम Arduino IDE प्रोग्रामिंग वातावरण में बनाया गया है, अर्थात यह एक प्लगइन है।

नीचे एक ब्लिंकिंग एलईडी और Arduino IDE में परिवर्तित प्रोग्राम का एक उदाहरण है। कार्यक्रम के साथ सभी कार्य बहुत सरल हैं और कोई भी छात्र इसे समझ सकता है।


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

ArduBlok को स्थापित करने के लिए, आपको सबसे पहले Arduino IDE को आधिकारिक Arduino वेबसाइट से डाउनलोड और इंस्टॉल करना होगा और साथ काम करते समय सेटिंग्स को समझना होगा अरुडिनो बोर्डसंयुक्त राष्ट्र संघ यह कैसे करना है उसी साइट पर या एम्परक पर वर्णित है, या यूट्यूब पर देखें। ठीक है, जब आपको यह सब पता चल गया, तो आपको यहाँ की आधिकारिक वेबसाइट से ArduBlok को डाउनलोड करना होगा। मैं नवीनतम संस्करणों को डाउनलोड करने की अनुशंसा नहीं करता, वे शुरुआती लोगों के लिए बहुत कठिन हैं, लेकिन 2013-07-12 का संस्करण सबसे महत्वपूर्ण है, यह फ़ाइल वहां सबसे लोकप्रिय है।

फिर, हम डाउनलोड की गई फ़ाइल का नाम बदलकर ardublock-all और "दस्तावेज़" फ़ोल्डर में रख देते हैं। निम्नलिखित फ़ोल्डर बनाएँ: Arduino> उपकरण> ArduBlockTool> टूल और बाद में हम डाउनलोड की गई और नाम बदली हुई फ़ाइल को फेंक देते हैं। अर्दुब्लॉक सबके लिए काम करता है ऑपरेटिंग सिस्टमआह, लिनक्स पर भी, मैंने व्यक्तिगत रूप से XP, Win7, Win8 पर इसका परीक्षण किया, सभी उदाहरण Win7 के लिए हैं। प्रोग्राम की स्थापना सभी प्रणालियों के लिए समान है।


ठीक है, अगर यह आसान है, तो मैंने मेल-डिस्क 7z पर एक संग्रह तैयार किया, जिसे अनपैक करके आपको 2 फ़ोल्डर मिलेंगे। एक में पहले से ही कार्य कार्यक्रम Arduino IDE, और किसी अन्य फ़ोल्डर में, सामग्री को दस्तावेज़ फ़ोल्डर में भेजा जाना चाहिए।

ArduBlok में काम करने के लिए, आपको Arduino IDE चलाना होगा। फिर हम टूल टैब पर जाते हैं और वहां हमें ArduBlok आइटम मिलता है, उस पर क्लिक करें - और यहाँ यह हमारा लक्ष्य है।


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


"प्रबंधन" खंड में हम विभिन्न प्रकार के चक्र पाएंगे।


"पोर्ट" अनुभाग में, हम बंदरगाहों के मूल्यों के साथ-साथ ध्वनि उत्सर्जक, सर्वो या उनसे जुड़े अल्ट्रासोनिक निकटता सेंसर का प्रबंधन कर सकते हैं।


"संख्या / स्थिरांक" अनुभाग में, हम डिजिटल मान चुन सकते हैं या एक चर बना सकते हैं, लेकिन आप नीचे दिए गए मान का उपयोग करने की संभावना नहीं रखते हैं।


"ऑपरेटर्स" अनुभाग में, हम सभी आवश्यक तुलना और गणना ऑपरेटर पाएंगे।


यूटिलिटीज अनुभाग ज्यादातर समय के साथ आइकन का उपयोग करता है।


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


"DF रोबोट" - इस खंड का उपयोग किया जाता है यदि इसमें निर्दिष्ट सेंसर हैं, तो वे कभी-कभी पाए जाते हैं। और हमारा आज का उदाहरण कोई अपवाद नहीं है, हमारे पास "एडजस्टेबल आईआर स्विच" और "लाइन सेंसर" है। "लाइन सेंसर" तस्वीर में एक से अलग है, क्योंकि यह एम्परका से है। उनके कार्य समान हैं, लेकिन एम्परका का सेंसर बहुत बेहतर है, क्योंकि इसमें एक संवेदनशीलता नियामक है।


Seeedstudio Grove - मैंने कभी भी इस खंड के सेंसर का उपयोग नहीं किया है, हालांकि केवल जॉयस्टिक हैं। इस खंड को नए संस्करणों में विस्तारित किया गया है।


और अंतिम खंड "लिंकर किट" है। इसमें दिए गए सेंसर मेरे सामने नहीं आए।

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

यहाँ भागों का ही सेट है, सब कुछ Amperka वेबसाइट पर खरीदा गया था।


  1. AMP-B001 मोटर शील्ड (2 चैनल, 2 A) 1 890 रूबल
  2. AMP-B017 Troyka Shield RUB 1,690
  3. AMP-X053 बैटरी कम्पार्टमेंट 3×2 AA 1 60 RUB
  4. AMP-B018 लाइन सेंसर डिजिटल 2 580 RUB
  5. ROB0049 टू-व्हील प्लेटफॉर्म मिनीक्यू 1 1890 RUB
  6. SEN0019 इन्फ्रारेड बाधा सेंसर 1 390 RUB
  7. इन्फ्रारेड बाधा सेंसर के लिए FIT0032 माउंट 1 90 आरयूबी
  8. A000066 Arduino Uno 1 1150 RUB


शुरू करने के लिए, हम पहिएदार प्लेटफॉर्म को इकट्ठा करेंगे और तारों को इंजनों में मिलाप करेंगे।


फिर हम बोर्ड को माउंट करने के लिए रैक स्थापित करते हैं अरुडिनो यूएनओ, जो पुराने से लिए गए थे मदरबोर्डया अन्य समान अनुलग्नक।


फिर हम Arduino UNO बोर्ड को इन रैक से जोड़ते हैं, लेकिन हम एक बोल्ट को जकड़ नहीं सकते - कनेक्टर्स रास्ते में मिल जाते हैं। बेशक, आप उन्हें मिलाप कर सकते हैं, लेकिन यह आप पर निर्भर है।


अगला बांधें अवरक्त संवेदकअपने विशेष पर्वत पर बाधाएं। कृपया ध्यान दें कि संवेदनशीलता नियंत्रण शीर्ष पर है, यह समायोजन में आसानी के लिए है।



अब हम डिजिटल लाइन सेंसर स्थापित करते हैं, यहां हमें उनके लिए कुछ बोल्ट और 4 नट की तलाश करनी है। हम प्लेटफॉर्म और लाइन सेंसर के बीच दो नट स्थापित करते हैं, और बाकी के साथ सेंसर को ठीक करते हैं।


अगला मोटर शील्ड स्थापित करें या किसी अन्य तरीके से आप मोटर चालक को कॉल कर सकते हैं। हमारे मामले में, जम्पर पर ध्यान दें। हम मोटर्स के लिए एक अलग बिजली आपूर्ति का उपयोग नहीं करेंगे, इसलिए इसे इस स्थिति में स्थापित किया गया है। निचले हिस्से को बिजली के टेप से सील कर दिया गया है, ताकि केवल मामले में Arduino UNO के USB कनेक्टर से कोई आकस्मिक शॉर्ट सर्किट न हो।



मोटर शील्ड के ऊपर ट्रॉयका शील्ड स्थापित करें। सेंसर को जोड़ने की सुविधा के लिए यह आवश्यक है। हमारे द्वारा उपयोग किए जाने वाले सभी सेंसर डिजिटल होते हैं, इसलिए लाइन सेंसर पोर्ट 8 और 9 से जुड़े होते हैं, क्योंकि उन्हें पिन भी कहा जाता है, और इन्फ्रारेड बाधा सेंसर पोर्ट 12 से जुड़ा होता है। ध्यान दें कि आप पोर्ट 4, 5, 6, 7 का उपयोग नहीं कर सकते क्योंकि इनका उपयोग मोटर शील्ड द्वारा मोटर्स को नियंत्रित करने के लिए किया जाता है। मैंने इन बंदरगाहों पर विशेष रूप से लाल मार्कर से पेंट किया था ताकि छात्र इसका पता लगा सकें।


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

बैटरी कम्पार्टमेंट कनेक्शन 2 प्रकार के हो सकते हैं। Troyka Shield से पहला वायर कनेक्शन। पावर प्लग को मिलाप करना और इसे कनेक्ट करना भी संभव है अरुडिनो बोर्डसंयुक्त राष्ट्र संघ



यहाँ हमारा रोबोट तैयार है। प्रोग्रामिंग शुरू करने से पहले, आपको यह सीखना होगा कि सब कुछ कैसे काम करता है, अर्थात्:
- मोटर्स:
पोर्ट 4 और 5 का उपयोग एक मोटर को नियंत्रित करने के लिए किया जाता है, और 6 और 7 दूसरे का;
हम पोर्ट 5 और 6 पर PWM के साथ मोटर्स की रोटेशन गति को समायोजित करते हैं;
पोर्ट 4 और 7 को सिग्नल करके आगे या पीछे।
- सेंसर:
हम सभी डिजिटल हैं, इसलिए वे 1 या 0 के रूप में तार्किक संकेत देते हैं;
और उन्हें समायोजित करने के लिए, उनके पास विशेष नियामक हैं और एक उपयुक्त स्क्रूड्राइवर की सहायता से उन्हें कैलिब्रेट किया जा सकता है।

विवरण Amperka में पाया जा सकता है। यहाँ क्यों? क्योंकि Arduino के साथ काम करने के बारे में बहुत सारी जानकारी है।

खैर, हमने, शायद, सब कुछ सतही रूप से देखा, अध्ययन किया और निश्चित रूप से, रोबोट को इकट्ठा किया। अब इसे प्रोग्राम करने की आवश्यकता है, यहाँ यह है - लंबे समय से प्रतीक्षित कार्यक्रम!


और कार्यक्रम Arduino IDE में परिवर्तित हो गया:

शून्य सेटअप () (पिनमोड (8, इनपुट); पिनमोड (12, इनपुट); पिनमोड (9, इनपुट); पिनमोड (4, आउटपुट); पिनमोड (7, आउटपुट); पिनमोड (5, आउटपुट); पिनमोड (6 , OUTPUT); ) शून्य लूप () (अगर (डिजिटलरेड (12))) (अगर (डिजिटलरेड (8)) (अगर (डिजिटल रीड (9))) (डिजिटलराइट (4, हाई); एनालॉगराइट (5, 255); एनालॉगराइट ( 6, 255); digitalWrite(7, HIGH); ) और ( digitalWrite(4, HIGH); AnalogWrite(5, 255); AnalogWrite(6, 50); digitalWrite(7, LOW); )) और (अगर (डिजिटलरीड) (9)) (डिजिटलवाइट(4, लो);एनालॉगराइट(5,50);एनालॉगवाइट(6,255);डिजिटलवाइट(7,हाई); )अन्य(डिजिटलवाइट(4,हाई);एनालॉगवाइट(5,255); AnalogWrite(6, 255); digitalWrite(7, High); ) ) ) और ( digitalWrite(4 , High); analogWrite(5, 0); analogWrite(6, 0); digitalWrite(7, High); ))

अंत में, मैं कहना चाहता हूं कि यह कार्यक्रम शिक्षा के लिए सिर्फ एक ईश्वर है, यहां तक ​​​​कि स्व-अध्ययन के लिए भी, यह आपको Arduino IDE कमांड सीखने में मदद करेगा। सबसे महत्वपूर्ण हाइलाइट यह है कि 50 से अधिक इंस्टॉलेशन आइकन के साथ, यह "विफल" होने लगता है। हां, वास्तव में, यह एक हाइलाइट है, क्योंकि केवल ArduBlok पर निरंतर प्रोग्रामिंग आपको Arduino IDE में प्रोग्राम करना नहीं सिखाएगी। तथाकथित "गड़बड़" कार्यक्रमों के सटीक डिबगिंग के लिए कमांड को सोचने और याद रखने की कोशिश करना संभव बनाता है।

आपकी सफलता की कामना करते है।

28 09.2016

क्या आपने अपने जीवन को आसान बनाने के बारे में सोचा है? ताकि ऐसी चीजें हों जो आपके लिए रोज़मर्रा के, नियमित कार्यों को हल कर दें। एक स्मार्ट डिवाइस जो उपयोगी विशेषता, उदाहरण के लिए, बगीचे को पानी पिलाया, कमरे को साफ किया, भार ढोया। इन कार्यों को हल किया जा सकता है. लेकिन सिर्फ इसे खरीदना ही काफी नहीं होगा। किसी भी औद्योगिक तर्क नियंत्रक या माइक्रोक्रिकिट को क्रियाओं के एक निश्चित क्रम को करने के लिए "मस्तिष्क" की आवश्यकता होती है। हमारे मामले में, Arduino प्रोग्रामिंग भाषा संचालन करने के लिए उपयुक्त है।

इस लेख से आप सीखेंगे:

नमस्कार मित्रों! जो मुझे नहीं जानते उनके लिए मेरा नाम शिमोन ग्रिडिन है। आप मेरे बारे में पढ़ सकते हैं. आज का लेख दो मुख्य कार्यक्रमों के लिए समर्पित होगा, जिसके बिना हमारे पास आगे की प्रगति और आपसी समझ नहीं होगी।

प्रोग्रामिंग भाषाओं का सामान्य विवरण

जैसा कि मैंने ऊपर लिखा है, हम दो लोकप्रिय विकास परिवेशों पर विचार करेंगे। सादृश्य द्वारा, एक ग्राफिक संपादक और एक "स्मार्ट नोटपैड" में विभाजित किया जा सकता है। ये Arduino IDE और FLprog प्रोग्राम हैं।


विकास पर्यावरण का आधार प्रसंस्करण / वायरिंग है - यह सामान्य सी ++ है, जो कार्यों और विभिन्न पुस्तकालयों के साथ पूरक है। संचालन के लिए कई संस्करण हैं विंडोज़ सिस्टम, मैक ओएस और लिनक्स।

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

Arduino IDE . का विवरण

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

बुधवार Arduino विकासशामिल हैं:

  • कोड संपादक;
  • संदेश क्षेत्र;
  • पाठ आउटपुट विंडो;
  • अक्सर उपयोग किए जाने वाले कमांड के लिए बटन के साथ टूलबार;
  • एकाधिक मेनू

Arduino IDE सेटिंग्स

Arduino डेवलपमेंट एनवायरनमेंट में लिखे गए प्रोग्राम को कहा जाता हैस्केच. स्केच एक टेक्स्ट एडिटर में लिखा गया है जिसमें उत्पन्न प्रोग्राम कोड का रंग हाइलाइटिंग है। नीचे दी गई तस्वीर में एक साधारण कार्यक्रम का एक उदाहरण।

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

कई पुस्तकालयों को फ़ोल्डर में स्थित उदाहरणों के साथ आपूर्ति की जाती हैउदाहरण।मेनू से लाइब्रेरी का चयन करने से इसमें जुड़ जाएगा स्रोतपंक्तियाँ:

अरुडिनो

#शामिल

#शामिल

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

इलेक्ट्रॉनिक बोर्ड को कंप्यूटर से जोड़ने के बाद। हम निम्नलिखित सेटिंग्स करते हैं - हम Arduino बोर्ड और कॉम पोर्ट का चयन करते हैं जिसके माध्यम से हम कनेक्ट करेंगे।

अरुडिनो

शून्य सेटअप () (// आउटपुट के रूप में डिजिटल पिन 13 को इनिशियलाइज़ करें। पिनमोड (13, OUTPUT); ) शून्य लूप () ( digitalWrite (13, हाई); देरी (1000); digitalWrite (13, LOW); देरी (1000) );

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

// आउटपुट के रूप में डिजिटल पिन 13 को इनिशियलाइज़ करें।

पिनमोड (13, आउटपुट);

शून्य लूप () (

digitalWrite (13 , High );

देरी (1000);

digitalWrite (13 , LOW );

देरी (1000);

तो, वैसे, स्टोर से आए बोर्ड के प्रदर्शन की जांच करना सुविधाजनक है। जल्द और आसान।

एक और काम की बात है। इसे कहते हैंसीरियल मॉनिटर (सीरियल मॉनिटर) प्लेटफ़ॉर्म पर भेजे गए डेटा को प्रदर्शित करता हैअरुडिनो।मैं आमतौर पर देखता हूं कि बोर्ड से जुड़े विभिन्न सेंसर मुझे क्या संकेत देते हैं।


पुस्तकालयों को जोड़ना

अस्तित्व विभिन्न तरीकेकस्टम सुविधाओं को जोड़ने के लिए। पुस्तकालयों को शामिल करने के तीन तरीके हैं:

  1. पुस्तकालय प्रबंधक का उपयोग करना
  2. .zip फ़ाइल के रूप में आयात करके
  3. मैन्युअल रूप से स्थापना।

1. पुस्तकालय प्रबंधक का उपयोग करना।प्रोग्राम की कार्यशील विंडो में, स्केच टैब चुनें। इसके बाद Add Library बटन पर क्लिक करें। हमारे सामने लाइब्रेरी मैनेजर खुल जाएगा। विंडो पहले से स्थापित फाइलों को एक हस्ताक्षर के साथ प्रदर्शित करेगीस्थापित,और जिन्हें स्थापित किया जा सकता है।

2. एक .zip फ़ाइल के रूप में आयात करके।अक्सर इंटरनेट पर आप ज़िप एक्सटेंशन के साथ अभिलेखागार में पैक की गई लाइब्रेरी फ़ाइलें पा सकते हैं। इसमें एक .h हेडर फ़ाइल और एक .cpp कोड फ़ाइल है। स्थापना के दौरान, आपको संग्रह को अनपैक करने की आवश्यकता नहीं है। यह मेनू में पर्याप्त है स्केच - कनेक्ट लाइब्रेरी - .ZIP लाइब्रेरी जोड़ें

3. मैनुअल स्थापना।पहले बंद करें Arduino प्रोग्रामआईडीई। हम पहले अपने संग्रह को अनपैक करते हैं। और हम एक्सटेंशन .h और .cpp वाली फ़ाइलों को संग्रह के समान नाम वाले फ़ोल्डर में स्थानांतरित करते हैं। हम फ़ोल्डर को रूट डायरेक्टरी में छोड़ देते हैं।

मेरे दस्तावेज़\Arduino\पुस्तकालय

FLPprog . का विवरण

FLprog एक निःशुल्क तृतीय-पक्ष प्रोजेक्ट है जो आपको . के साथ काम करने की अनुमति देता है कार्यात्मक ब्लॉक, या सीढ़ी आरेखों के साथ। यह वातावरण लोगों के लिए सुविधाजनक है - प्रोग्रामर के लिए नहीं। यह आपको आरेख और फ़ंक्शन ब्लॉक का उपयोग करके एल्गोरिथम को नेत्रहीन और नेत्रहीन रूप से देखने की अनुमति देता है। वितरण से डाउनलोड किया जा सकता है आधिकारिक वेबसाइट.


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

आइए आपके साथ एक सरल प्रोजेक्ट बनाने का प्रयास करें। हम आउटपुट 13 को LED पर स्विच करेंगे।

हम एक नया प्रोजेक्ट बनाते हैं। शीर्ष विंडो में जोड़ें सही मात्राइनपुट और आउटपुट, एक नाम सेट करें और बोर्ड का एक भौतिक इनपुट या आउटपुट असाइन करें।


हम उन तत्वों को बाहर निकालते हैं जिनकी हमें ऑब्जेक्ट ट्री से आवश्यकता होती है, वे तत्व जिनकी हमें संपादन कैनवास पर आवश्यकता होती है। हमारे मामले में, हम चालू और बंद करने के लिए एक साधारण आरएस फ्लिप-फ्लॉप का उपयोग कर सकते हैं।


एल्गोरिथम बनाने के बाद, कंपाइल बटन पर क्लिक करें, प्रोग्राम आईडीई पर एक तैयार स्केच देता है।

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

22 सितंबर को, मैंने क्रास्नोडार में एक सेमिनार में भाग लिया "टच पैनल कंट्रोलर ARIES SPK"। हमने फैशनेबल और सुंदर ब्रिस्टल होटल में एक सम्मेलन आयोजित किया। यह बहुत ही रोचक और मस्त था।


संगोष्ठी के पहले भाग में, हमें OWEN उत्पादों की संभावनाओं और लाभों के बारे में बताया गया। इसके बाद डोनट्स के साथ कॉफी ब्रेक हुआ। मुझे हर चीज का एक गुच्छा मिला, और डोनट्स, और कुकीज़, और मिठाइयाँ, क्योंकि मैं बहुत भूखा था। =)

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


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

वैसे, मैं लगभग भूल गया था, अगला लेख Arduino इलेक्ट्रॉनिक बोर्ड के बारे में होगा। यह दिलचस्प होगा, इसे देखना न भूलें।

मिलते हैं अगले लेखों में।

साभार, ग्रिडिन शिमोन।

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

कक्षा की बोतलें (सार्वजनिक स्थैतिक शून्य मुख्य ( डोरीतर्क) ( डोरीएस = "एस"; के लिए (इंट बियर = 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 या microcontrollers की बात करें तो उनके लिए किस भाषा में प्रोग्राम लिखे जा सकते हैं? सैद्धांतिक उत्तर: किसी पर। लेकिन व्यवहार में, चुनाव असेंबलर, सी और सी ++ तक ही सीमित है। यह इस तथ्य के कारण है कि, डेस्कटॉप कंप्यूटर की तुलना में, उनके पास बहुत सीमित संसाधन होते हैं। मेमोरी के किलोबाइट, गीगाबाइट नहीं। प्रोसेसर पर मेगाहर्ट्ज़, गीगाहर्ट्ज़ नहीं। यह सस्तेपन और ऊर्जा दक्षता के लिए एक कीमत है।

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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