Knight Rider
موضوع اليوم سيكون شيق نوعاً ما و سنسترجع فيها بالذاكرة السلسلة التلفزيونية" نايت رايدر" حيث كان ديفيد هاسلهوف بطل المسلس لديه جهاز اسمه في سيارته بونتياك السوداء الجميلة AI KITT .
المثير في هذه السيارة هي الإضاءة الحمراء التي في مقدمتها و التي ألهمت الكثيرين و اتسع نطاق انتشار نفس طريقة إضاءتها المميزة حتى وقتنا الحاضر .
سنهتم اليوم ببرمجة نظام بسيط مشابه باستخدام الأردوينو و سنتعلم تقنيات جديدة و مهارات جديدة بالبرمجة في بيئة اردوينو .
حسناً بعد هذه المقدمة .... لنبدأ
جهّز معداتك !
ستحتاج للقيام بهذه التجربة :
1) بواعث ضوئية LED عدد 8 " أي لون متوافر "
2) مقاومات " القيمة بين 100 - 180 أوم "
3) بطاقة أردوينو
4) لوحة تعليمية مثقوبة Bread Board
5) بعض الأسلاك للتوصيل
طريقة التوصيل :
طريقة التوصيل موضحة بالصورة التالية :
أنا قمت بتنفيذ المشروع أيضاً بواسطة Arduino Nano لكن هنا جعلت تغذية المصعد للLED مشتركة من مصدر الجهد 5V و كل مهبط قمت بتوصيله إلى مدخل من مداخل المتحكم " أي كمصرف للتيارCurrent Sink " .
الآن و بعد أن قمنا بالتوصيل سنبدأ بالبرمجة .
سنقوم بالبرمجة بطريقتين , و الهدف هو زيادة المهارات البرمجية في التعامل مع بيئة أردوينو البرمجية , سنحصل على نفس النتائج لكن ببرمجة مختلفة .
الطريقة الأولى : الطريقة التقليدية
سنعتمد على جملة for في تنفيذ هذا البرنامج و تنسيق نمط الحركة للإضاءة خلاله .
البرنامج تجدوه مكتوباً أدناه :
------------------------------------------------------------------------
//This program is free software: you can redistribute it and/or modify //it under the terms of the GNU General Public License as published by //the Free Software Foundation, either version 3 of the License, or //(at your option) any later version. //This program is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. //You should have received a copy of the GNU General Public License // along with this program. If not, see http://www.gnu.org/licenses/ //**************************************************** //Name :Mohannad Rawashdeh . //Date "30/6/2012 10:00pm // Description: This program designed For Knight rider circuit. // , Using digital pin 2-9 Using For loop Statment. // Programmed for genotronex blog http://genotronex.blogspot.com/ //******************************************************* int i; //Integer variable for Counter void setup(){ for (i=2;i<10;i++){ // Define Digital pin as OUTPUT Pin. pinMode(i,OUTPUT); } } // Void setup ended _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ void loop(){ //In loop area 4 program will execute // first one , blink on one led each time starting from pin 2 for(i=1;i<10;i++){ digitalWrite(i,HIGH); delay(150); digitalWrite(i,LOW); delay(10); } //First program end //****************************************************** // Second program , blink on one led each time starting from pin 9 for(i=10;i>1;i--){ digitalWrite(i,HIGH); delay(150); digitalWrite(i,LOW); delay(10); } //Second program end //****************************************************** // Third program , blink on 3 led each time starting from pin 1 and shifting //it LST FIRST for(i=1;i<11;i++){ digitalWrite(i-1,HIGH); digitalWrite(i,HIGH); digitalWrite(i+1,HIGH); delay(150); digitalWrite(i-1,LOW); digitalWrite(i,LOW); digitalWrite(i+1,LOW); delay(10); } //Third program end //****************************************************** // fourth program , blink on 3 led each time starting from pin 1 and shifting //it MSB FIRST for(i=10;i>1;i--){ digitalWrite(i-1,HIGH); digitalWrite(i,HIGH); digitalWrite(i+1,HIGH); delay(150); digitalWrite(i-1,LOW); digitalWrite(i,LOW); digitalWrite(i+1,LOW); delay(10); } } //end and return to loop.
هذا البرنامج البسيط سيكون يمكن رؤية طريقة عمله في هذا الفيديو .
الطريقة الثانية : طريقة مسجلات المرابط Port Registers
هي طريقة تسمح فيها للغة المتدنية المستوى Low-level بالوصول و المعالجة السريعة للمداخل و المخارج الخاصة بالمتحكم , يمكن معرفة المزيد عن هذه الميزة أكثر بزيارة الرابط هنا
ما يهمنا هو معرفة أن :
PORT D : هي للمداخل الرقمية في الأردوينو من D0-D7
PORT B : هي للمداخل الرقمية في الأردوينو من D8-D13
لو كتبنا :
PORTD=B00000000; //Let digital pin from D0-D7 Equal LOW
فهذا سيعني أن المرابط الرقمية من D0-D7 قيمتها صفر فولت " صفر منطقي"
PORTD=B00000100; //Let digital pin from D0-D7 Equal LOW
هذا سيعني أن D2 قيمته 1 منطقي "5 فولت " و الباقي صفر
بمعنى أخر , الباعث الضوئي المربوط مع D2 سيضيئ عندها .
البرنامج موجود هنا للتحميل
في البرنامج هناك أمر آخر جديد هو أمر الإزاحة >> , << هذا الأمر يقوم بإزاحة الأرقام خانة واحدة إما لليمين << أو لليسار >> , هنا توضيح لهذا الأمر بشكل مفصل
الفيديوأدناه توضيح كيفية عمل البرنامج بعد تحميله على المتحكم .
هنا أيضاً يمكن تحميل ملفات البروتوس و الHEX الخاصة بالبرامج .
يستخدم برنامج البروتوس لعمل محاكاة للأنظمة الكهربائية و الإلكترونية , و هو برنامج ممتاز جداً لتوضيح طريقة سير البرنامج المُحمّل على المتحكم , يمكنك معرفة كيفية تحميل البرنامج على بروتوس بقراءة هذين الموضوعين المنفصلين
تحويل الملفات ذات الإمتداد ino الخاصة بأردوينو إلى الإمتداد hex
يمكنكم تحميل ملفات هذه التجربة من خلال هذا الرابط هنا
قم بتجربة هذه البرنامج و بناء الدوائر الخاصة بها , فهي سهلة و ستمكنك من تطوير قدراتك البرمجية بشكل كبير , و لأي استفسار سأكون بتلقي اسئلتكم على الموضوع عبر التعليقات أو على بريدي الإلكتروني GENOTRONEX@Gmail.com
0 التعليقات :
إرسال تعليق