تعلم الوحدات · الدرس 2.7
مفتاح الإمالة الكروي (Tilt Ball Switch)
العودة إلى الدروسالتعرف على حساس الإمالة (Tilt Sensor)
ستتعلم استخدام مفتاح الإمالة الكروي (Tilt Ball Switch) لاكتشاف زاوية ميل صغيرة.
المكونات المطلوبة
- لوحة أردوينو (ELEGOO UNO R3).
- مفتاح إمالة كروي (Tilt Ball Switch).
- أسلاك توصيل أنثى إلى ذكر (Female to Male DuPont Wires).
حساس الإمالة (Tilt Sensor)
يكشف الاتجاه أو الميل، وهو صغير ورخيص وقليل الاستهلاك وسهل الاستخدام. عند استخدامه بصورة صحيحة لا يتآكل سريعًا؛ لذا ينتشر في الألعاب والأدوات والأجهزة. تسمى بعض أنواعه مفاتيح زئبقية أو مفاتيح إمالة أو حساسات كرة متدحرجة.
يتكون عادة من تجويف، كثيرًا ما يكون أسطوانيًا، بداخله كتلة موصلة حرة مثل قطرة زئبق أو كرة. عند أحد طرفي التجويف قطبان موصلان. عندما يصبح ذلك الطرف إلى أسفل تتدحرج الكتلة إليه فتصل القطبين، مثل إغلاق مفتاح.
هو أقل دقة ومرونة من مقياس تسارع كامل، لكنه يكشف الحركة أو الاتجاه. تستطيع الأنواع الكبيرة تبديل الطاقة مباشرة، بينما يعطي مقياس التسارع (Accelerometer) إشارة رقمية أو تناظرية تحتاج إلى دوائر أخرى لتحليلها.

توصيل الدائرة


البرنامج والثوابت
افتح ملف البرنامج Ball_Switch.ino من ملفات الدرس في بيئة Arduino IDE. بعد إتمام التوصيلات، وصّل لوحة أردوينو (UNO R3 Board) بالحاسوب بكابل توصيل (USB Cable)، ثم اضغط زر Upload (رفع) لنقل البرنامج إلى اللوحة وتشغيله عليها.
إذا تعذر نقل البرنامج إلى اللوحة، فراجع قسم «رفع البرنامج ومعالجة خطأ الاتصال» في الدرس 1.5 «وميض LED وإضافة المكتبات» للتحقق من اتصال USB واختيار نوع اللوحة والمنفذ التسلسلي في بيئة Arduino IDE.
const int ledPin = 13;const
تعني «ثابت»، وهي كلمة تؤهل المتغير بحيث يصبح للقراءة فقط. يستخدم كأي متغير من نوعه لكن لا تتغير قيمته؛ محاولة إسناد قيمة جديدة تعطي خطأ ترجمة. تتبع ثوابت const قواعد نطاق المتغيرات العادية، ومع تجنب مشكلات #define يجعل ذلك const خيارًا مفضلًا لتعريف الثوابت.
const float pi = 3.14;
float x;
x = pi * 2; // valid
pi = 7; // illegal: a constant cannot be modifiedيمكن استخدام const أو #define للثوابت العددية والنصية. وللمصفوفات استخدم const؛ وبوجه عام، يُفضَّل const لتعريف الثوابت.
الكود
Ball_Switch/Ball_Switch.ino
//www.elegoo.com
//2016.12.08
const int ledPin = 13;//the led attach to
void setup()
{
pinMode(ledPin,OUTPUT);//initialize the ledPin as an output
pinMode(2,INPUT);
digitalWrite(2, HIGH);
}
void loop()
{
int digitalVal = digitalRead(2); //read pin 2
if(HIGH == digitalVal)
{
digitalWrite(ledPin,LOW);//turn the led off
}
else
{
digitalWrite(ledPin,HIGH);//turn the led on
}
}