لغة لكتابة الرسومات في نظام التشغيل Windows. لغة برمجة الاردوينو. كيف تتم برمجة الاردوينو؟

لذلك لديك المعالج. ربما تفهم أنه يمكن برمجة المعالج بطريقة ما ليفعل ما تريد. من أجل أداء عمل مفيد، من الضروري (أ) كتابة برنامج مفيد و (ب) تسليمه إلى المعالج لتنفيذه.

بشكل عام، لا يهم نوع المعالج الذي لديك: أحدث إصدار من Intel Pentium في الكمبيوتر المحمول الخاص بك أو وحدة التحكم الدقيقة الموجودة عليه لوحة اردوينو. مبادئ كتابة البرنامج، أي. برمجة، في كلتا الحالتين نفس الشيء. والفرق الوحيد هو سرعة ونطاق إمكانيات العمل مع الأجهزة الأخرى.

لكن المبرمجين، الذين هم "كسالى" عمومًا، يمكنهم تقليل هذا التعبير. وإذا أردنا أن نفعل التأثير المعاكس، نكتب هكذا. الآن بعد أن عرفت كل ما تحتاج لمعرفته حول التكبير، دعنا ننتقل إلى الحلقة. قم بزيادة المتغير الخاص بنا للحفاظ على الحلقة كما نرغب. أعلن المتغير لدينا. . وكانت هذه المراحل الثلاث منفصلة. مع كل شيء يسير على نفس الخط!

ربما تشك في هذا، ولكن سيتم تطبيق الزيادة في كل مرة تقوم فيها الحلقة بدورة. لديك كل الأدوات الأساسية لاختبار هياكل الإدارة هذه. من المحتمل جدًا أنك لا تفهم تمامًا قيمة كل هذا، وهذا طبيعي تمامًا. كل هذا لا ينبغي أن نتعلمه عن ظهر قلب.

ما هو البرنامج وأين يكتب؟

المعالج، على الرغم من كل تعقيد الإنتاج، هو في الأساس شيء بسيط ومباشر إلى حد ما. لا يعرف كيف يفكر. يمكنه فقط تنفيذ التعليمات التي تم تسليمها إليه بشكل أعمى، بايتًا تلو الآخر. يمكن إعطاء مثال تقريبي لتسلسل التعليمات:

بايت التعليماتماذا يعني بالنسبة للمعالج
00001001 يعني: خذ البايت التالي وقم بتخزينه في الخلية رقم 1
00000110 ...هذا هو بالضبط البايت التالي الذي نتذكره في الخلية رقم 1: الرقم 5
00011001 يعني: اطرح واحدًا من القيمة الموجودة في الخلية رقم 1 واترك النتيجة المحدثة هناك
00101001 يعني: مقارنة القيمة الموجودة في الخلية رقم 1 بالصفر وإذا كانت صفرًا، فانتقل عبر أكبر عدد من البايتات كما هو موضح في البايت التالي
00000100 ...إذا كانت النتيجة صفرًا، فنحن نريد الانتقال بمقدار 4 بايت إلى التعليمة قبل الأخيرة
10000011
01000001 ... الحرف "A" يتوافق تمامًا مع هذا الرمز
00101000 يعني أننا نريد الرجوع إلى عدد البايتات السابق كما هو موضح في البايت التالي
00000110 ...سوف نقفز 6 بايت مرة أخرى إلى التعليمات رقم 3
10000011 يعني أننا نريد عرض الحرف الذي تم كتابة رمزه في البايت التالي
00100001 ...لافتة "!" هذا الرمز يطابق تماما

ونتيجة لتنفيذ هذا التسلسل من التعليمات، سيتم عرض العبارة المذعورة "AAAH!"

من المعروف أن المبرمجين "كسالى". ولكن في نهاية المطاف، ما هي الوظيفة التي تخدمها؟ إنه كثير جدًا وغير مقروء. ما سنفعله هو إنشاء وظيفة حيث نقوم بإدخال هذه التعليمات الـ 300، وفي برنامجنا سنقوم باستدعاء هذه الوظيفة 10 مرات.

سوف تفهم أن مبدأ الوظيفة ليس كتابة عدد لا يحصى من أسطر التعليمات البرمجية وجعل برنامجك أكثر متعة في القراءة. تشبه هذه الوظائف إلى حد ما "البرامج الفرعية" التي تستخدمها في برنامجك الرئيسي. ومن أجل التبسيط، سنقول أن هناك نوعين من الوظائف، الوظائف الصامتة والوظائف المزعجة.

هناك الكثير من التعليمات البرمجية لمثل هذا الغرض البسيط! من الواضح أنه إذا تمت كتابة جميع البرامج بهذه الطريقة، فإن تطوير المنتجات المعقدة سيستغرق قرونًا.

لماذا هناك حاجة إلى لغات البرمجة؟

ولتبسيط المهمة مليون مرة، تم اختراع لغات البرمجة. هناك الكثير منها، وحتى من تلك التي يتم سماعها باستمرار، يمكنك أن تتذكر بسرعة عشرات أو اثنتين منها: Assembler، C، C++، C#، Java، Python، Ruby، PHP، Scala، JavaScript.

الوظائف الصامتة هي تلك التي، عند استدعائها، تنفذ التعليمات البرمجية التي تحتوي عليها دون عرض أي شيء، ثم تقول إنها لا تعيد شيئًا. مثال على وظيفة صامتة. نحن نضع قوسين هنا، وسترى فائدتهما بعد قليل. نفتح الأقواس المتعرجة التي نضيف إليها العبارات التي تشكل الدالة.

يمكنك أيضًا إنشاء وظائف صامتة أكثر تعقيدًا. قد يكون محتوى الوظيفة هو ما تريده بالفعل. الوظائف الصاخبة، على عكس تلك التي رأيناها حتى الآن، تعيد المعطى. نريد إنشاء دالة تحتوي على رقمين.

البرامج بهذه اللغات أقرب بكثير إلى اللغة البشرية الطبيعية. وبالتالي فهي أسهل وأسرع وأكثر متعة في الكتابة، والأهم من ذلك، أنها أسهل بكثير يقرأ: لك مباشرة بعد الكتابة، أو لك بعد عام، أو لزميلك.

المشكلة هي أن مثل هذه اللغات غير مفهومة للمعالج ويجب عليك قبل أن تعطيه هذا البرنامج ترجمة: الترجمة من اللغة الطبيعية إلى نفس التعليمات على شكل أصفار وآحاد. ويتم ذلك عن طريق برامج تسمى المترجمين. كل لغة، ما لم تبقى على مستوى الخيال، لديها مترجم خاص بها. بالنسبة للغات الشائعة، عادةً ما يكون هناك العديد منها للاختيار من بينها الشركات المصنعة المختلفةولمنصات مختلفة. معظمها متاح مجانًا على الإنترنت.

ثم نسمي الدالة. هل تتذكر الأقواس الفارغة في الأمثلة أعلاه؟ يتم وضع ما يسمى بالوسائط بين قوسين، مما يجعل فائدة الوظيفة أكثر إثارة للاهتمام. في الواقع، بفضل الوسائط، ستعمل وظيفتنا وفقًا للمتغيرات التي يحددها المستخدم. يمكننا توفير أي عدد نريده من الحجج ومن أي نوع.

لقد قدمنا ​​حجتين هنا. داخل الدالة، نعلن عن عدد صحيح يسمى النتيجة، والذي سيحتوي بالضبط على نتيجة عملية الجمع. سيختلف سلوك الوظيفة عن القيم المخصصة. ثم لدينا استرداد. العودة هي القيمة التي ستعيدها الدالة. ولكن ماذا يعني هذا؟

لذلك، هناك برامج بلغة مفهومة تمامًا للإنسان: تسمى أيضًا "كود المصدر"، أو ببساطة "كود" أو "كود المصدر". تتم كتابتها إلى ملفات نصية بسيطة باستخدام أيمحرر النصوص، حتى باستخدام المفكرة. ثم يتم تحويلها إلى مجموعات من الأصفار والأصفار التي يفهمها المعالج باستخدام المترجم: يتلقى المترجم كمدخل كود المصدر، وفي الإخراج يخلق ثنائي قابل للتنفيذ، وهو أمر مفهوم للمعالج.

بكل بساطة، سيكون للدالة قيمة عند إرجاعها. إذا كانت النتيجة الصحيحة هي 4، فإن وظيفة الإضافة صالحة. ومن هنا جاءت مواصفات نوع الوظيفة. غالبًا ما يشار إلى وظيفة الضوضاء كمتغير، على سبيل المثال. وأخيرا، من المهم الإشارة إلى أنه في برنامج القراءة من أعلى إلى أسفل، يجب الإعلان عن الوظائف قبل استخدامها.

رمز المثال باستخدام الوظيفة. أي ما سيقال هو ما لا مفر منه وضروري. وعندما تستيقظ في الصباح، فمن الأفضل أن تكون على قدمك اليمنى! سنبدأ بملاحظة البنية الأساسية للبرنامج وفي نفس الوقت سنقدم جولة حول كيفية استخدام واجهة البرنامج.

الملفات الثنائية غير قابلة للقراءة وهي مخصصة عمومًا للتنفيذ بواسطة المعالج فقط. قد يكون لديهم نوع مختلفاعتمادًا على الغرض الذي تم استلامها من أجله: .exe هي برامج لنظام التشغيل Windows، و.hex هي برامج للتنفيذ بواسطة وحدة تحكم دقيقة مثل Arduino، وما إلى ذلك.

لماذا يوجد الكثير من لغات البرمجة وما الفرق؟

سيقدم هذا الفصل أيضًا نظرة عامة على مبدأ التجميع و العمل العاممتحكم. بالنسبة لأولئك الذين بدأوا بالفعل، سيبدو هذا القسم واضحًا تمامًا. ولكن دعونا ننظر إلى برنامجنا الأول. إليك ما يبدو عليه جهاز البرمجة الخاص بك.

لذلك ربما لاحظت أن الكلمات يتم تلوينها أثناء كتابتها. هذه دعوة عملية إلى حد ما لتسليط الضوء على بناء الجملة، وهي تستخدم في علوم الكمبيوتر، وتسمح لنا بالتمييز بين الكلمات الرئيسية للغة التي نستخدمها وغيرها. للفنانين الحساسة وطلاب هذا النوع.

    لماذا؟ لأن هناك العديد من الأشخاص والشركات على وجه الأرض، ويعتقد الكثيرون أنهم يستطيعون فعل الأفضل: أكثر ملاءمة وأكثر وضوحًا وأسرع وأقل حجمًا.

    ما هو الفرق: اللغات المختلفة لها توازن مختلف في سرعة الكتابة وسهولة القراءة وسرعة التنفيذ.

دعونا نلقي نظرة على نفس البرنامج الذي يعرض على الشاشة أغنية عن 99 زجاجة بيرة. لغات مختلفةبرمجة.

"كما ترى، أنا لا أحب أن يكون لونه برتقاليًا، ابتسم للكلمات، سوف يرى بلوتون باللون الأزرق الفيروزي." يؤسفني أن أخبرهم أنه ليس لدينا خيار الألوان، لكنه عملي للغاية! برنامج الكمبيوتر عبارة عن سلسلة من التعليمات المقدمة إلى الجهاز. تتم كتابة هذه التعليمات بلغة تستخدم كلمات محددة. بمعرفته كيفية البرمجة، فهو يعرف بالفعل الكلمات الصحيحة.

دعونا نلقي نظرة على البرنامج مرة أخرى، نرى الأقواس والأقواس المتعرجة. في هذا الفصل ستلاحظ قريبًا فائدة الأقواس والأقواس المتعرجة، والتي غالبًا ما تكون سببًا في تعطل البرنامج، وسنرى لاحقًا أنه يمكن تداخلها داخل بعضها البعض. قوس، أغلقه مباشرة بعد ذلك ثم عد بينهما لإضافة الكود الخاص بك.

على سبيل المثال، لغة بيرل. يتم كتابته بسرعة. ومن المستحيل أن نفهم ما يعنيه المبرمج؛ يتم تنفيذه ببطء:

sub b( $n = 99 - @_ - $_ || No; "$n Bottle" . "s" x!!-- $n . "of beer" ) ; $w = "على الحائط" ; خريطة القالب ( ب. "$w،\n" . ب. "،\n خذ واحدة، مررها،\n " . ب(0) . "$ث.} 0 .. 98

\n\n"

لغة جافا. تستغرق الكتابة وقتاً طويلاً نسبياً؛ سهلة القراءة؛ يتم تنفيذه بسرعة كبيرة، ولكنه يستهلك قدرًا كبيرًا من الذاكرة:

دعنا ننتقل الآن إلى القائمة التي يقدمها البرنامج.

هذه الأزرار الخمسة هي تقريبا الأزرار الوحيدة التي سيتعين علينا استخدامها لتشغيل البرنامج. ولذلك سوف ندرسها واحدة تلو الأخرى في هذا الفصل. ستلاحظ أنه من خلال تحريك الماوس فوقها، يظهر نص المساعدة على يمين الرموز.


يعني البرنامج صحيح ما هو التجميع؟ في الواقع، البرنامج الذي تكتبه ليس هو البرنامج الذي يتلقاه الاردوينو. إنه برنامج مصمم بحيث يتمكن الأشخاص من قراءته وفهمه دون صعوبة كبيرة. لا تفهم الآلة سوى لغة الآلة، وهي عبارة عن تسلسل من 1 و0، والتي ستقوم بتفسيرها وتنفيذها.

زجاجات الفصل (الفراغ الثابت العام الرئيسي ( خيطالحجج) ( خيطق = "ق" ; لـ (البيرة الدولية= 99؛ البيرة>- 1؛) (نظام لـ (البيرة الدولية= 99؛ البيرة>- 1؛) (.out .print (بيرة + "زجاجة" + s + "بيرة على الحائط،" ) ؛ لـ (البيرة الدولية= 99؛ البيرة>- 1؛) (.out .println (beers + "bottle" + s + "of beer،" ) ؛ إذا (البيرة== 0) () ; لـ (البيرة الدولية= 99؛ البيرة>- 1؛) (.خارج .طباعة ( "اذهب إلى المتجر واشتري المزيد") ; لـ (البيرة الدولية= 99؛ البيرة>- 1؛) (.خارج .println ( لـ (البيرة الدولية= 99؛ البيرة>- 1؛) (.out .println (beers + "bottle" + s + "of beer،" ) ؛ "99 زجاجة بيرة على الحائط.\n ".exit(0); لـ (البيرة الدولية= 99؛ البيرة>- 1؛) () آخر "خذ واحدة للأسفل، مررها") ; } } }

) ;

ق = (-- البيرة == 1) ؟ "" : "س" ;.out .println (بيرة + "زجاجة" + s + " من البيرة على الحائط.\n "لغة التجميع. تستغرق الكتابة وقتاً طويلاً؛ من الصعب القراءة. ينفذ بسرعة كبيرة: مقطع الكود يفترض cs : code , ds : code org 100h start : ; الحلقة الرئيسية mov cx, 99; الزجاجات التي تبدأ بـ Loopstart: اتصل بـ printcx ؛ طباعة الرقم mov dx، إزاحة line1; طباعة بقية السطر الأول موف آه، 9؛ روتين سلسلة طباعة MS-DOS int 21h استدعاء printcx؛ طباعة الرقم mov dx، الإزاحة line2_3; بقية السطرين الثاني والثالث موف آه, 9 int 21h dec cx; خذ مكالمة واحدة إلى printcx ؛ اطبع الرقم mov dx، خط الإزاحة4; طباعة بقية السطر الرابع موف آه، 9 إنت 21h سمب ككس، 0؛ هل نفد من البيرة؟جيني لوستارت؛ إذا لم يكن كذلك، تابع int 20h ؛ إنهاء إلى MS-DOS ; روتين فرعي لطباعة تسجيل CX بالنظام العشري printcx: mov di، إزاحة numbufferend ; املأ المخزن المؤقت من النهايةموف الفأس، سي إكس ; ضع الرقم في AX حتى نتمكن من تقسيمهبرينتكسلوب: موف دكس، 0 ; كلمة البسط ذات الترتيب العالي - دائمًا 0موف بكس، 10 شعبة بكس ; اقسم DX:AX على 10. AX=حاصل القسمة، DX=الباقي إضافة دل، "0"; تحويل الباقي إلى حرف ASCII mov[ds:di],dl; ضعه في المخزن المؤقت للطباعة cmp ax, 0; هل هناك المزيد من الأرقام لحسابها؟ جي برينتكسيند ; إذا لم يكن الأمر كذلك، نهاية ديسمبر دي; ضع الرقم التالي قبل الرقم الحالي جمب برينتكسلوب. حلقة printcxend: mov dx، di; طباعة، ابتداء من الأخير, 13 , 10 , 13 , 10 , "$" numbuffer db 0 , 0 , 0 , 0 , 0 numbufferend db 0 , الكود "$" ينتهي بنهاية البداية

كيف تتم برمجة الاردوينو؟

إذا تحدثنا عن Arduino أو المتحكمات الدقيقة من Atmel، فبأي لغة يمكنك كتابة البرامج لهم؟ الجواب النظري: أي. لكن من الناحية العملية، يقتصر الاختيار على اللغات المجمعة وC وC++. ويرجع ذلك إلى حقيقة أن مواردها محدودة للغاية مقارنة بالكمبيوتر المكتبي. كيلو بايت من الذاكرة وليس جيجا بايت. ميجاهيرتز على المعالج وليس جيجاهيرتز. وهذا هو الثمن الذي يجب دفعه مقابل الرخص وكفاءة استخدام الطاقة.

التجميع هو تحويل لغة البرمجة التي يستخدمها الإنسان إلى لغة الآلة التي يستخدمها الجهاز. يمكنك الآن محاولة تغيير برنامجك عن طريق إزالة القوس الأول بالضغط عليه وستحصل على رسالة مثل.


نشعر على الفور أن هناك شيئًا غير واضح، ونحن على حق!

لفهم ما يحدث، اقرأ رسالة الخطأ. لكن هذا ليس هو السبب الصحيح دائمًا. . الأخطاء الشائعة هي أنك نسيت كتابة شيء ما أو أنك لم تحترم التنسيق المتوقع. في البداية، ستنسى غالبًا الفواصل المنقوطة والأقواس المتعرجة أو الأقواس. لاحقاً سوف تتفاقم المشاكل لأن البرنامج لن يرى بالضرورة أي خطأ، لكن برنامجك لن يفعل ما تريد، لكننا لسنا هناك.

ولذلك، نحن بحاجة إلى لغة يمكن تجميعها وتنفيذها بكفاءة. أي أنه يتم ترجمته إلى تلك الأصفار والواحدات من التعليمات على النحو الأمثل قدر الإمكان، دون إضاعة التعليمات والذاكرة الثمينة. اللغات المذكورة أعلاه تتمتع بهذا النوع من الكفاءة. وباستخدامها حتى ضمن الحدود الضيقة لموارد وحدة التحكم الدقيقة، يمكنك كتابة برامج غنية بالميزات تعمل بسرعة.

كل شيء يجب أن يسير على ما يرام. سوف يعطونك فهمًا أفضل لكيفية عمل مصحح الأخطاء وسوف يربكونك بعد ذلك. وهذا ليس مربحًا للجميع. ليس هناك الكثير من الخيارات، عليك أن تفعل ذلك. بعضهم سيواجه مشكلة. لديك قائمة "أدوات" في قائمة البرنامج، وفي هذه القائمة ستجد قائمة فرعية "المنفذ التسلسلي" والتي توفر عدة منافذ للاستخدام. قم بتغيير المنفذ المحدد وحاول مرة أخرى حتى تجد المنفذ الصحيح. قد تحتاج إلى القيام بذلك مرة أخرى في وقت آخر.

لكن ما الذي يفعله هذا البرنامج الذي كتبناه للتو؟ الأمر ليس سهلاً، حاول جاهداً، فنحن نفعل شيئًا دائمًا. الآن بعد أن عرفت الشكل الأساسي للبرنامج، فلنقم بإنشاء برنامج يقوم بشيء ما.


تحتل أجزاء مهمة من الخريطة.

المجمع، كما رأيت، لا يمكن أن يسمى الأبسط والأكثر أناقة، ونتيجة لذلك، فإن اللغة الرئيسية لاردوينو هي C/C++.

تقول العديد من المصادر أن Arduino تمت برمجته لغة الاردوينو، المعالجة، الأسلاك. هذا ليس بيانا صحيحا تماما. تمت برمجة Arduino بلغة C/C++، وما يسمى بهذه الكلمات هو مجرد "مجموعة أدوات" مناسبة تسمح لك بحل العديد من المشكلات الشائعة دون إعادة اختراع العجلة في كل مرة.

سننظر إلى الجزء العلوي من هذه الصورة. سنرى ما هو عليه لاحقًا، ولكن في الوقت الحالي يكفي أن نفهم أنه يمكن أن يشتعل فيه النيران. يضيء الصمام الثنائي عندما يتدفق عبر التيار الصحيح في الاتجاه الصحيح. سترى أنه عملي للغاية ويمكن استخدامه في بعض الحالات لمساعدتنا في تصحيح الأخطاء.

خطوات البرنامج بسيطة للغاية.

  • قيل لـ Arduin أننا نريد الاتصال 13 لإرسال التيار.
  • طُلب من Arduin إرسال التيار إلى الاتصال.
ولا يمكنك معرفة ذلك بمفردك.


الفاصلة المنقوطة لها أهمية قصوى! إذا نسيت، فلن يتم تجميع البرنامج. أنها ليست ملونة نفس الشيء، وسوف نرى لماذا في وقت لاحق. ستلاحظ أن بنية اللحظة لم تتغير، لقد أضفنا للتو تعليمتين بين الأقواس المتعرجة.

لماذا يتم ذكر C و C++ في نفس الجملة؟ C++ عبارة عن بنية فوقية لـ C. كل برنامج C هو برنامج C++ صالح، ولكن ليس العكس. يمكنك استخدام كليهما. في أغلب الأحيان، لن تفكر حتى في ما تستخدمه عند حل المشكلة الحالية.

أقرب إلى هذه النقطة: البرنامج الأول

لنكتب أول برنامج لاردوينو ونجعل اللوحة تنفذه. تحتاج إلى إنشاء ملف نصي يحتوي على الكود المصدري، وتجميعه وتغذية الملف الثنائي الناتج إلى وحدة التحكم الدقيقة الموجودة على اللوحة.

الرقم 13 ليس بلا أهمية، بل إن اقتران الرقم 13 هو الذي على المحك. ويفعل ما طلب منه القيام به. لتعطيله، يجب عليك إرسال برنامج جديدمما سيجبره على إيقاف تشغيل الصمام الثنائي. الكلمات الرئيسية باللون الأزرق برمجةخاصة. هذه هي القيم التي يعرفها Arduino ويستخدمها.

من المهم أن تحاول البحث عن حل بنفسك، وتصحيح الأخطاء، ثم العثور عليه في النهاية. إن النظر إلى التصحيح دون التفكير في نفسك هو أمر أقل تكوينًا بكثير. هل وجدت هذا قليلا حتى الآن؟ عندما تبدأ بالفعل، قد تبدو هذه المفاهيم مجردة ومربكة، وستساعدك التجربة على إنشاء روابط أفضل بين كل ما تتناوله.

دعنا نذهب بالترتيب. دعونا نكتب الكود المصدري. يمكنك كتابتها في المفكرة أو أي محرر آخر. ومع ذلك، لجعل العمل مناسبًا، هناك ما يسمى ببيئات التطوير (IDE: بيئة التطوير المتكاملة). في شكل أداة واحدة، فهي توفر محرر نصوص مع تسليط الضوء والتلميحات، ومترجم يتم تشغيله بواسطة زر، والعديد من الأشياء الممتعة الأخرى. بالنسبة لاردوينو تسمى هذه البيئة اردوينو بيئة تطوير متكاملة. وهو متاح مجانًا للتنزيل على الموقع الرسمي.

حسنًا، إذا كنت مستعدًا، فسنهاجم برنامجنا الأول الأكثر تعقيدًا. قمنا بتشغيل الصمام الثنائي وأطفأناه وبدأناه؟ عندما تقرر إنشاء برنامج، من المهم أن تعرف مسبقًا، قدر الإمكان، ما تريد تحقيقه. من المغري دائمًا الدخول فيه مباشرة وتغييره كما تذهب. كلما كان برنامجك أكثر تعقيدًا، زادت صعوبة تغييره لدمج الميزات الجديدة.

سنشير إلى إرسال التيار في الاتصال. 13 نشير إلى إيقاف إرسال التيار في الاتصال. 13 ثم نريد أن نبدأ مرة أخرى عند النقطة رقم 2 في المربع اللانهاية. يمكن الآن برمجة النقاط 1 و 2 و 3 دون مشاكل. النقطة التي يكون فيها الأمر صعبًا.

تثبيت البيئة وتشغيلها. في النافذة التي تظهر لك سترى: معظميتم إعطاء المساحة لمحرر النص. الكود مكتوب فيه. يُطلق على الكود في عالم الأردوينو أيضًا اسم رسم.

لذلك دعونا نكتب رسمًا لا يفعل أي شيء. وهذا هو، الحد الأدنى الممكن من البرنامج الصحيح في C++، والذي يضيع الوقت ببساطة.

إعداد باطل () () حلقة باطلة () ()

دعونا لا نركز على معنى الكود المكتوب في الوقت الحالي. دعونا تجميعها. للقيام بذلك، في Arduino IDE، يوجد زر "تحقق" على شريط الأدوات. انقر فوقه وفي بضع ثوان سيكون الملف الثنائي جاهزا. سيتم الإعلان عن ذلك من خلال نقش "تم التجميع" أسفل محرر النصوص.

سنقول أنهم في تناغم. تتم قراءة هذه التعليمات وتفعيلها مرة واحدة فقط. وهذا يعطي في تمثيل رسومي. خذ على سبيل المثال البرنامج الزائف التالي. هنا هو الطريق إلى البرنامج. ويستمر هذا إلى ما لا نهاية، أو تقريبًا، أو ما دام تياره.

هذه الصورة تبدو طويلة جدا. يتيح لك هذا التمييز بين تنفيذ فردي وتنفيذ حلقة، علاوة على ذلك، فهو يذكرك بأن الأقواس المتعرجة تشير إلى حدود كتل تعليمات البرنامج. هذا ضروري للغاية لتذكر الاستمرار. وفجأة يغير قليلاً ما تحتاج إلى كتابته إذا كنت تريد أن يومض إلى أجل غير مسمى.

ونتيجة لذلك، لدينا ملف ثنائي بالامتداد .hex، والذي يمكن تنفيذه بواسطة المتحكم الدقيق.

أنت الآن بحاجة إلى إدخاله في Arduino. تسمى هذه العملية بالتمهيد أو الوميض أو الفيضان. للتحميل إلى Arduino IDE، يوجد زر "تحميل" على شريط الأدوات. قم بتوصيل Arduino بجهاز الكمبيوتر الخاص بك عبر كابل USB، وانقر فوق "تحميل" وفي لحظات قليلة سيتم تحميل البرنامج على Arduino. في هذه الحالة، سيتم مسح البرنامج الذي كان موجودًا مسبقًا.

سيتم الإعلان عن البرنامج الثابت الناجح من خلال نقش "تم التحميل".

إذا واجهت خطأ أثناء محاولة التنزيل، فتأكد مما يلي:

    في قائمة الأدوات → اللوحة، حدد المنفذ الذي يتصل به Arduino بالفعل. يمكنك توصيل كابل USB بالداخل والخارج لمعرفة المنفذ الذي يظهر ويختفي: هذا هو Arduino.

    لقد قمت بتثبيت برامج التشغيل اللازمة لاردوينو. هذا مطلوب على Windows، وغير مطلوب على Linux، وهو مطلوب فقط على اللوحات الأقدم قبل Arduino Duemilanove على MacOS.

تهانينا! لقد انتقلت من قائمة فارغة إلى برنامج عمل في Arduino. قد لا تفعل أي شيء، ولكن هذا نجاح بالفعل.

اليوم اردوينو هي واحدة من أكثر طرق بسيطةالمتحكمات الدقيقة الرئيسية: بفضل الواجهة البسيطة، والبساطة (ويمكن للمرء أن يقول حتى البدائية) لـ "لغة الأردوينو"، تصبح وحدات التحكم الدقيقة البرمجية متاحة حتى لأطفال المدارس. ومع ذلك، هناك دائمًا متحمسون يحاولون تحسين حتى ما يبدو بسيطًا. في هذه الحالة نحن نتحدث عن “البرمجة المرئية”، أي. البيئات الرسومية التي لا تسمح لك بكتابة البرامج، بل برسمها.
لذلك التقينا: Scratch وArduBlock وFLProg - ثلاث محاولات لجعل البرمجة في متناول الأطفال حتى في مرحلة ما قبل المدرسة :)

يخدش
صفحة المشروع - s4a.cat/
في عام 2003، قررت مجموعة من الباحثين بقيادة ميتشل ريسنيك من مختبر الوسائط بمعهد ماساتشوستس للتكنولوجيا إتاحة لغة البرمجة للجمهور. ونتيجة لذلك، ظهرت سكراتش بعد 4 سنوات - "بيئة لتدريس البرمجة لأطفال المدارس".
في هذه البيئة، يمكنك إنشاء كائنات مختلفة واللعب بها، وتعديل مظهرها، وتحريكها حول الشاشة، وإنشاء أشكال التفاعل بينها. هذه بيئة موجهة للكائنات، والتي تعتمد على مبدأ مُنشئ LEGO حيث يتم تجميع البرامج من كتل متعددة الألوان من الطوب للفرق بنفس الطريقة التي يتم بها تجميع مُنشئي Lego من الطوب متعدد الألوان.
البيئة سكانها ينالون الجنسية الروسية، وهناك العديد من التعليمات والأدلة الخاصة بها باللغة الروسية. يتم نشر المشاريع التي تم إنشاؤها في Scratch على الموقع الإلكتروني للمشروع،cratch.mit.edu/، وجميعها متاحة للتنزيل والاستخدام. البيئة متاحة للأطفال منذ سن مبكرة والذين يمكنهم القراءة واستخدام الماوس قليلاً.
أساس البيئة هو كتل الأوامر، مقسمة إلى عدة مجموعات: الحركة، المظهر، الصوت، القلم، التحكم، أجهزة الاستشعار، المشغلين، المتغيرات. تتيح لك "أداة الرسم" المضمنة رسم الكائن المطلوب وكتل الأوامر (تحتاج إلى سحبها بالماوس) - تعيين برنامج الإجراءات، بما في ذلك استخدام العبارات الشرطية والحلقات. بالطبع، يفتقر Scratch إلى الكثير من وظائف لغة البرمجة الحقيقية، ولكن ما لديه يكفي لإنشاء برامج وألعاب معقدة للغاية. يحتوي البرنامج نفسه على قاعدة بيانات كبيرة إلى حد ما من الحيوانات والمنازل والأشياء المرسومة الجاهزة وما إلى ذلك، وبالإضافة إلى ذلك، يمكنك استخدام أي من آلاف الأمثلة على البرامج المنشورة على الإنترنت، والتي صممها البالغين والأطفال، كبرنامج عينة.
في عام 2008، ظهر مشروع Scratch لـ Arduino (في الأصل: Scratch For Arduino أو يُختصر بـ S4A) - وهو تعديل لـ Scratch، والذي يوفر القدرة على برمجة وحدة تحكم Arduino بصريًا بسهولة، ويحتوي أيضًا على كتل جديدة للتحكم في أجهزة الاستشعار والمحركات المتصلة بالاردوينو.
S4A عبارة عن رسم تخطيطي للبرنامج الثابت s4a.cat/downloads/S4AFirmware15.ino، والذي يتم تحميله في Arduino، مما يجعله جهازًا تنفيذيًا، ويتم تنفيذ البرنامج على الكمبيوتر، ويقوم Arduino بتنفيذه فعليًا، ويرسل الإشارات إلى مخرجات اللوحة. في هذه الحالة، يتلقى Arduino، من خلال اتصال تسلسلي، أوامر من Scratch بشأن المنافذ التي سيتم ضبطها على أي مستوى وينقل المستويات المقاسة من المدخلات إلى جهاز الكمبيوتر.
يمكنك معرفة المزيد من التفاصيل إما على صفحة المشروع، أو من خلال مشاهدة الفيديو من Amperka - www.youtube.com/playlist?…OzZQGDFdoRfldtqbmNU6a-PIp

اردوبلوك
صفحة المشروع -blog.ardublock.com/
لم أتمكن من العثور على أسماء المطورين وتوطينهم، ولكن يتم الترويج لهذا المشروع بشكل نشط من قبل مطور لوحات Sparkfun، لذا فإن IMHO هو مشروعهم.
Ardublock هي لغة برمجة رسومية لـ Arduino، مصممة لغير المبرمجين وسهلة الاستخدام. على عكس سكراتش، فإن ArduBlock مدمج فيه بيئة الاردوينو IDE ويقوم بإنشاء رسم برنامج يتم تحميله في MK. علاوة على ذلك، بعد التحميل على المنصة، سيتم تنفيذ التعليمات البرمجية بشكل مستقل، أي. لا يلزم التحكم المباشر من جهاز كمبيوتر عبر اتصال سلكي أو لاسلكي.
المشروع معروف بين المجتمع الناطق باللغة الروسية بفضل المعلم المتحمس من لابينسك ألكسندر سيرجيفيتش أليكين - geektimes.ru/post/258834/

FLProg
صفحة المشروع - flprog.ru/
يتم تطوير المشروع من قبل شخص واحد - سيرجي جلوشينكو. الفكرة الأساسية هي تكييف اللغتين FBD و LAD المستخدمة في مجال برمجة وحدات التحكم الصناعية مع الاردوينو.

FBD (مخطط كتلة الوظيفة)- معيار لغة البرمجة الرسومية IEC 61131-3. يتكون البرنامج من قائمة من الدوائر المنفذة بشكل تسلسلي من الأعلى إلى الأسفل. عند البرمجة، يتم استخدام مجموعات من كتل المكتبة. الكتلة (العنصر) هي روتين فرعي أو وظيفة أو كتلة الوظيفة(و، أو، لا، المشغلات، الموقتات، العدادات، وحدات المعالجة إشارة تناظريةوالعمليات الحسابية وغيرها). تمثل كل دائرة فردية تعبيرًا مؤلفًا بيانيًا من العناصر الفردية. يتم توصيل الكتلة التالية بمخرج الكتلة، وتشكيل دائرة. داخل السلسلة، يتم تنفيذ الكتل بدقة بالترتيب الذي تم توصيلها به. تتم كتابة نتيجة حساب الدائرة إلى متغير داخلي أو إرسالها إلى إخراج وحدة التحكم.

مخطط السلم (LD، LAD، RKS)- لغة منطق التتابع (السلم). يعد بناء جملة اللغة مناسبًا لاستبدال الدوائر المنطقية المصنوعة باستخدام تقنية الترحيل. تستهدف مهندسي الأتمتة الذين يعملون على المؤسسات الصناعية. يوفر واجهة مرئية لمنطق تشغيل وحدة التحكم، مما يسهل ليس فقط مهام البرمجة والتشغيل نفسه، ولكن أيضًا استكشاف الأخطاء وإصلاحها بسرعة في المعدات المتصلة بوحدة التحكم. يحتوي برنامج لغة منطق الترحيل على واجهة رسومية مرئية وبديهية للمهندسين الكهربائيين، تمثل العمليات المنطقية مثل الدائرة الكهربائيةمع جهات الاتصال المغلقة والمفتوحة. يتوافق تدفق أو غياب التيار في هذه الدائرة مع النتيجة عملية منطقية(صحيح - إذا كان التيار يتدفق؛ خطأ - إذا كان التيار لا يتدفق). العناصر الرئيسيةتتكون اللغة من جهات اتصال يمكن تشبيهها مجازيًا بزوج من جهات اتصال التتابع أو الأزرار. يتم تعريف زوج من جهات الاتصال بمتغير منطقي، ويتم تحديد حالة هذا الزوج بقيمة المتغير. هناك عادة عناصر اتصال مغلقة ومفتوحة عادة، والتي يمكن مقارنتها بالأزرار المغلقة عادة والمفتوحة عادة في الدوائر الكهربائية.
نتيجة عمل FLProg هي الكود النهائي الذي يمكن تحميله في MK.

هذه ليست كل المشاريع التي تسمح لك بتنفيذ طريقة مرئية للبرمجة. هناك آخرون - ربما أفضل وأكثر تقدمية، ولكن أقل شهرة.