1. مقدمة
- اليوم سنبدأ مغامرة جديدة في عالم التكنولوجيا. هل تتخيلون لو كان لديكم عقل إلكتروني يساعدكم في صنع أشياء مذهلة؟ هذا العقل يُسمى “أردوينو”. سنتعلم معاً كيف نستخدمه ونفهم كيف يعمل.
2. ما هو الأردوينو؟
- الأردوينو هو لوحة إلكترونية صغيرة تحتوي على عقل إلكتروني يُسمى “الميكروكنترولر”. هذه اللوحة تشبه الحاسوب ولكنها أصغر بكثير. يمكننا برمجتها لتقوم بأشياء كثيرة مثل تشغيل الأضواء، تحريك الروبوتات، أو حتى قراءة المعلومات من أجهزة الاستشعار.
3. كيف يعمل الأردوينو؟
- البرمجة: البرمجة تعني كتابة تعليمات صغيرة يفهمها الأردوينو. نكتب هذه التعليمات باستخدام لغة خاصة تُسمى “لغة البرمجة C++”. عندما نكتب التعليمات، نقول للأردوينو ماذا يفعل بالضبط.
- المداخل (Input) والمخارج (Output): الأردوينو يمكنه أن يستقبل المعلومات (المداخل) مثل الضغط على زر، أو الإحساس بالضوء من خلال أجهزة الاستشعار، ويمكنه أيضًا أن يُصدر تعليمات (المخارج) مثل تشغيل مصباح، أو تحريك محرك.
4. مكونات الأردوينو:
- الميكروكنترولر (Microcontroller): هذا هو الجزء الذي يُعالج جميع التعليمات ويجعل الأردوينو يقوم بالمهام.
- الدبابيس (Pins): هذه الأجزاء الصغيرة هي المكان الذي نربط فيه الأسلاك. هناك دبابيس للمداخل وأخرى للمخارج.
- .منفذ الطاقة (Power): هذا الجزء يُستخدم لتزويد الأردوينو بالطاقة اللازمة ليعمل.
5. استعمالات الأردوينو:
- التحكم بالأضواء: يمكننا برمجة الأردوينو لجعل الأضواء تضيء وتطفئ بإيقاعات معينة، أو حتى تتغير ألوانها.
- بناء الروبوتات: يمكنكم استخدام الأردوينو لصنع روبوت يتحرك، يتجنب العقبات، أو يتبع خط مرسوم.
- مشاريع استشعارية: مثل نظام إنذار ضد تسرب الماء، حيث يتعرف الأردوينو على وجود الماء ويصدر إنذارًا.
6. فوائد وميزات الأردوينو:
- تعلم البرمجة بشكل عملي: الأردوينو يساعد في فهم البرمجة بشكل ممتع من خلال رؤية النتائج أمام أعينكم.
- التفكير الإبداعي: كل مشروع هو فرصة للتفكير بإبداع وابتكار شيء جديد.
- سهولة الاستخدام: مع أنه جهاز قوي، إلا أن الأردوينو سهل التعلم والاستخدام، حتى للمبتدئين.
7. كيف نبرمج الأردوينو؟
- نحتاج إلى حاسوب وبرنامج خاص يُسمى “Arduino IDE”. نكتب التعليمات في هذا البرنامج، ثم نرسلها إلى الأردوينو عبر كابل USB. يمكن تحميله من هنا.
مشروع اشعال لمبة (LED):
لنبدأ بشرح بسيط جداً لتشغيل LED باستخدام الأردوينو:
1. مكونات المشروع:
- لوحة أردوينو (Arduino Uno في مثالنا)
- LED واحد
- مقاومة (220 أوم)
- أسلاك توصيل
- لوحة تجارب (Breadboard) (اختياري)
2. طريقة التوصيل:
- توصيل الـLED:
- الـLED يحتوي على طرفين: طرف طويل (الطرف الموجب، يُسمى الأنود) وطرف قصير (الطرف السالب، يُسمى الكاثود).
- صِل الطرف الطويل (الموجب) للـLED إلى أحد دبابيس الإخراج الرقمي على الأردوينو، مثل المنفذ الرقمي 13.
- صِل الطرف القصير (السالب) للـLED إلى أحد أطراف المقاومة.
- صِل الطرف الآخر من المقاومة إلى منفذ GND على الأردوينو.
3. الكود البسيط:
void setup() {
pinMode(13, OUTPUT); // نحدد المنفذ 13 كمنفذ إخراج
digitalWrite(13, HIGH); // تشغيل الـLED (إضاءة)
}
void loop() {
// لا شيء هنا، لأننا نريد تشغيل الـLED فقط
}
4. شرح الكود:
void setup() {
- هذا السطر يفتح دالة (function) تُسمى
setup()
. هذه الدالة يتم تشغيلها مرة واحدة فقط عند تشغيل الأردوينو، وتستخدم لتحديد الإعدادات الأولية.
pinMode(13, OUTPUT);
- في هذا السطر، نقول للأردوينو أن المنفذ رقم 13 سيُستخدم كمخرج (OUTPUT). نستخدمه لتشغيل LED.
digitalWrite(13, HIGH);
- هذا السطر يقول للأردوينو أن يرسل إشارة كهربائية عبر المنفذ 13.
HIGH
تعني إرسال إشارة كهربائية تشغيلية (ON)، مما يؤدي إلى إضاءة الـLED.- بعبارة أخرى، نحن نأمر الأردوينو بإضاءة الـLED المتصل بالمنفذ 13.
void loop() {
- هذا السطر يفتح دالة أخرى تُسمى
loop()
. هذه الدالة تعمل بشكل مستمر بعد تشغيل الدالةsetup()
. وهي عبارة شرطية نستعملها عند اعطاء شرط يقوم به الكود. مثلا في حالتنا هذه الشرط هو ان يظل LED مضاءا.
}
- يغلق الدالة
loop()
، مما يعني انتهاء الكود.
مشروع اشعال لمبة (LED) ثم اطفائها:
بالنسبة لمكونات المشروع وطريقة التوصيل هي نفسها. سيكون الاختلاف فقط في الكود.
كود اشعال LED ثم اطفائها:
void setup() {
pinMode(13, OUTPUT); // نحدد المنفذ 13 كمنفذ إخراج
}
void loop() {
digitalWrite(13, HIGH); // تشغيل الـLED (إضاءة)
delay(1000); // الانتظار لمدة ثانية واحدة (1000 مللي ثانية)
digitalWrite(13, LOW); // إطفاء الـLED
delay(1000); // الانتظار لمدة ثانية واحدة قبل إعادة تشغيل الدورة
}
شرح الكود:
حتى الشرح هو نفسه لكن يختلف فقط في العبارة الشرطية وشرطنا في هذه الحالة ليس تشغيل Led فقط انما تشغيلها والانتظار لمدة ثانية ثم اطفائها لمدة ثانية وهكذا….
setup()
: تُحدد الإعدادات الأولية مثل وضع الدبابيس.
loop()
: يُكرر تنفيذ الأوامر داخلها بشكل مستمر.
digitalWrite(13, HIGH);
: يشغل الـLED.delay(1000);
: ينتظر ثانية واحدة.digitalWrite(13, LOW);
: يطفئ الـLED.delay(1000);
: ينتظر ثانية واحدة قبل تكرار الدورة
مشروع تشغيل اللمبة LED عن طريق التصفيق
المتطلبات:
- لوحة Arduino (مثل Arduino Uno)
- مستشعر الصوت (KY-038 أو مشابه)
- مصباح LED
- مقاومة (220 أوم)
- أسلاك توصيل
- لوحة تجريبية (Breadboard)
التوصيلات:
- قم بتوصيل الطرف الموجب لمصباح LED إلى المنفذ الرقمي رقم 2 في لوحة Arduino.
- قم بتوصيل الطرف السالب لمصباح LED إلى المقاومة 220 أوم، ثم قم بتوصيل الطرف الآخر من المقاومة إلى الأرضي (GND) في لوحة Arduino.
- قم بتوصيل VCC لمستشعر الصوت إلى 5V في لوحة Arduino.
- قم بتوصيل GND لمستشعر الصوت إلى الأرضي (GND) في لوحة Arduino.
- قم بتوصيل A0 لمستشعر الصوت إلى المنفذ التماثلي A0 في لوحة Arduino.
الكود المبسط:
int LED_Pin = 2; // المنفذ المتصل بمصباح LED
int Sound_Pin = A0; // المنفذ المتصل بمستشعر الصوت
boolean toggle = false; // حالة مصباح LED (مطفأ في البداية)
int threshold = 35; // العتبة لتحديد التصفيق
void setup() {
pinMode(LED_Pin, OUTPUT); // تعيين المنفذ المتصل بمصباح LED كمخرج
}
void loop() {
int analogValue = analogRead(Sound_Pin); // قراءة قيمة مستشعر الصوت
if (analogValue > threshold) { // إذا كانت القيمة أعلى من العتبة
toggle = !toggle; // عكس حالة المصباح
digitalWrite(LED_Pin, toggle ? HIGH : LOW); // تغيير حالة المصباح
delay(200); // تأخير لتجنب التكرار السريع
}
}
الشرح:
- تعريف المنافذ والمتغيرات:
LED_Pin = 2;
: هذا المتغير يمثل المنفذ الرقمي المتصل بمصباح LED.Sound_Pin = A0;
: هذا المتغير يمثل المنفذ التماثلي المتصل بمستشعر الصوت.boolean toggle = false;
: هذا المتغير يستخدم لتخزين حالة مصباح LED، حيث يبدأ المصباح في حالة إطفاء (false
).int threshold = 35;
: هذا المتغير يمثل قيمة العتبة التي يجب أن يتجاوزها مستشعر الصوت لتحديد أن هناك تصفيقًا.
- دالة
setup()
:pinMode(LED_Pin, OUTPUT);
: هنا نحدد أن المنفذ المتصل بمصباح LED سيكون مخرجًا، مما يعني أنه يمكننا التحكم في تشغيل وإطفاء المصباح.
- دالة
loop()
:int analogValue = analogRead(Sound_Pin);
: هذه السطر يقرأ القيمة التماثلية من مستشعر الصوت ويحفظها في المتغيرanalogValue
.if (analogValue > threshold) {
: إذا كانت قيمة الصوت المقروءة أكبر من العتبة المحددة (35)، فسيتم تنفيذ الأوامر داخل هذا الشرط.toggle = !toggle;
: هذا السطر يعكس حالة المصباح، فإذا كان المصباح مطفأ (false
)، سيتم تشغيله (true
)، وإذا كان مشغلاً سيتم إطفاؤه.digitalWrite(LED_Pin, toggle ? HIGH : LOW);
: هنا يتم تغيير حالة المصباح بناءً على قيمةtoggle
. إذا كانتtoggle
تساويtrue
، يتم تشغيل المصباح، وإذا كانتfalse
، يتم إطفاؤه.delay(200);
: يتم تأخير بمقدار 200 مللي ثانية لمنع التبديل السريع جدًا في حالة المصباح، مما يعطي الجهاز وقتًا لتجاهل الأصوات العشوائية أو الضوضاء.
بهذا الكود، سيتم تشغيل وإطفاء مصباح LED عن طريق التصفيق، حيث يتم تحديد ما إذا كان الصوت المقروء قويًا بما يكفي ليعتبر تصفيقًا من خلال مقارنة قيمته مع قيمة العتبة.