الخميس، 23 أبريل 2020

ربط محرك سيرفو مع Arduino Uno

Servo Motor Interface with Arduino Uno

المكونات واللوازم

اردوينو نانو
سيرفو موتور
اسلاك الربط

حول هذا المشروع

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

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

الخطوة 1

إذا كنت تعرف بالفعل تثبيت Arduino IDE أو لديك Arduino IDE ، يرجى تخطي هذه الخطوة.

قم بتنزيل برنامج Arduino IDE 

بعد تثبيت Arduino IDE افتحه.

الخطوة 2

نحتاج في هذا المشروع إلى استخدام مكتبة باسم "Servo.h". هذه مكتبة مدمجة مع Arduino IDE.

هناك طريقتان لتضمين مكتبة

انتقل إلى Sketch> تضمين مكتبة> Servo

أو

ما عليك سوى كتابة # تتضمن <Servo.h>

# تتضمن <Servo.h>
الخطوه 3

بعد ذلك نحتاج إلى تعريف متغير نوع عدد صحيح. الآن أستخدم المتغير المسمى "pos". يمكن لهذا المتغير الاحتفاظ بقيم صحيحة فقط.

الخطوة - 4

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

 Myservo.
الخطوة - 5

يتكون كل برنامج Arduino من وظيفة "void setup ()" و "void loop ()". عند تشغيل Arduino ، ستعمل الوظائف / العبارات في "void setup ()" أولاً وستعمل مرة واحدة. بعد ذلك ، ستعمل الوظائف / العبارات في حلقة فارغة () مثل الحلقة.

نحن بحاجة إلى تعيين دبوس إشارة محرك سيرفو إلى Arduino pin في "إعداد الفراغ ()". في الصوت الواضح ، نعلن هنا عن دبوس Arduino للتحكم في محرك سيرفو. هنا نستخدم Digital Pin 3 من Arduino للتحكم في محرك سيرفو.

هنا نستخدم الكلمة المرفقة (). الصيغة هي "variable_name.attach (pin_number)". الرمز يبدو ،

Myservo.attach (3) ؛
الخطوة - 6

دعونا مناقشة حول بيان التحكم المؤازرة. الكلمة الأساسية هي "write ()". والصيغة هي "variable_name.write (pos)". يمكننا إما استخدام متغير أو رقم يقع بين 0 و 360 في وظيفة الكتابة.

Myservo.write (pos) ؛
الخطوة - 7

الآن نحن بحاجة إلى تعيين وظيفة حلقة. هنا نستخدم حلقة "for ()" للتحكم في محرك سيرفو. في حلقة () ، اضبط القيمة الدنيا هي 0. أي. (.pos = 0) والقيمة القصوى هي 180. أي. (pos <= 180). ثم قم بنسخ نقاط البيع أي (pos ++). ثم نفذ وظيفة الكتابة (الوظيفة في الخطوة 6) في الحلقة من أجل. ثم أضف وظيفة تأخير. تساعد وظيفة التأخير هذه في انتظار 15 مللي ثانية حتى تصل المؤازرة إلى الوضع.

for (pos = 0؛ pos <= 180؛ pos ++) {
Myservo.write (pos) ؛
تأخير (15) ؛
}}
الخطوة - 8

ثم قم بإضافة وظيفة تأخير أخرى بعد حلقة for (). وظيفة التأخير هذه تنتظر وقتًا مناظرًا (والذي يتم تضمينه في وظيفة التأخير) بعد أعلاه للحلقة.

تأخير (1000) ؛
الخطوة - 9

الآن نحن بحاجة إلى تعيين وظيفة حلقة أخرى. هنا نستخدم حلقة "for ()" للتحكم في محرك سيرفو. في حلقة () ، اضبط الحد الأدنى للقيمة 180. أي. (.pos = 180) والقيمة القصوى هي 0. أي. (pos> = 0). ثم قلل من نقاط البيع أي (pos-). ثم نفذ وظيفة الكتابة (الوظيفة في الخطوة 6) في الحلقة من أجل. ثم أضف وظيفة تأخير. تساعد وظيفة التأخير هذه في انتظار 15 مللي ثانية حتى تصل المؤازرة إلى الوضع.

for (pos = 180؛ pos> = 0؛ pos -) {
Myservo.write (pos) ؛
تأخير (15) ؛
}}
الخطوة - 10

ثم قم بإضافة وظيفة تأخير أخرى بعد حلقة for (). وظيفة التأخير هذه تنتظر وقتًا مناظرًا (والذي يتم تضمينه في وظيفة التأخير) بعد أعلاه للحلقة.

تأخير (1000) ؛
اكتمال الرمز. الكود الكامل موجود في جزء البرنامج.

اكتب الرمز بالكامل وتحقق مرة أخرى من الأخطاء. ثم قم بتحميل (زر السهم في الأعلى) الرمز إلى Arduino Board.

من فضلك لا تنسخ والصق الرمز الخاص بي. اصنع خاصتك. "لا تكن AMUL BABY !!!!!"
هنا أنا أستخدم أجهزة SG90 الدقيقة. يمكن أن تعمل لوحة Arduino Uno على محرك سيرفو بدون مصدر طاقة إضافي. ولكن عند استخدام محرك سيرفو أكثر أو نوع آخر من محرك سيرفو ، أوصي بشدة بإمداد طاقة إضافي.

كود البرمجة

#include<Servo.h>
Servo Myservo;
int pos;
void setup()
{
Myservo.attach(3);
}

void loop()
{
  
  
for(pos=0;pos<=180;pos++){
Myservo.write(pos);
delay(15);
}
  delay(1000);
  
  for(pos=180;pos>=0;pos--){
Myservo.write(pos);
delay(15);
}
  delay(1000);
  
}


Stunning borwo elzing 1axsyivikv


هناك تعليق واحد: