404

الصفحه التي تبحث عنها غير موجوده

الدرس الثانى متقدم

0

 بسم الله الرحمن الرحيم  

بعد ان ناقشنا فى الدرس السابق احد اهم المواتير وهو الموتور الخطوى 

نتجه اليوم الى موضوع جديد ومهم ولكن فى البداية ان كنت لا تعرفون ما هى الأردوينو فيجب مراجعه الدروس القديمة للإطلاع عليها من هنا 

سنناقش اليوم ملحقات الأردوينو الخاصه بالإتصالات مثل البلوتوث وريموت ir

نبدأ اولا بشريحة البلوتوث 

تعتبر وحده البلوتوث من احد اهم ملحقات الأردوينو حيث تتيح لك امكانية التحكم بالأردوينو عن بعد بدون استخدام اسلاك 
توجد انواع عديده من هذه الشريحة لكن اشهر نوعين هما hc-05
hc-06 


ولكن ما هو الفرق الفرق فى امكنيات الشريحة 
حيث شريحة hc-06 غير قادرة على ارسال بيانات حيث هى تقوم باستلام البيانات فقط 
وشريحة hc-05 تقوم بمهمتين هما الإرسال والإستلام حيث تعد هذه الشريحة هي الأختيار الأفضل للمبرمجين الذين يتعاملون مع الأردوينو 
تحتوى هذه الشريحة على 6 منافذ 4 منافذ اساسية و 2 منفذ اختيارى
حيث تحتوى على :
vcc : 5v 
rx : tx
tx : rx
gnd : gnd 
حيث يتم توصيل الشريحة اعتمادا على بروتوكول اتصال uart والذي سنقوم بشرحه مستقبلا 
ويتم توصيلها الى الأردوينو كما هو موضح فى الصورة الأتية 



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

ولقد قمنا بتطبيق العديد من المشاريع التى تستخدم البلوتوث يمكن الإطلاع عليها : 

التحكم فى الأجهزة المنزلية عن طريق البلوتوث 

تصميم روبوت التحكم عن طريق البلوتوث 

بعد ان انتهينا من موضوع شريحة البلوتوث 

ننتطرق الى الريموت ir 

هذا الريموت يعمل على الموجات التحت الحمراء يتميز هذا الريموت بان مداه اكبر من مدى البلوتوث 

تتكون من شريحيتن المرسل وهو ريموت يرسل موجات التحت الحمراء 

المستلم ويتم توصيله الى الأردوينو وهو من يقوم باستلام الموجات التحت حمراء 


يتكون المستلم من ثلاثة منافذ منفذ الموجب ويتم توصيله الى 5 فولت 
ومنفذ السالب يتم توصيله بالسالب 
ومنفذ الإشارة يتم توصيله الى المنافذ الرقمية 



التوصيل كما هو موضح فى الصورة الأتية



التجربة : 

قمنا بتصميم العديد من المشاريع المعتمدة على هذا المكون ويمكن الإطلاع عليها لفهم طريقة عمل هذا المكون 

التحكم فى الأجهزة المزلية عن طريق ir remote


تصميم وبرمجة : بلال حسان سعدى 

الدرس الأول متقدم

2

 بسم الله الرحمن الرحيم  

بعد ان انتهينا من سلسلة تعلم الأردوينو التاسيسية وانتهينا ايضا من سلسلة الحساسات الأساسية 

سنبدأ اليوم بسلسلة جديدة وهى الدروس المتقدمة الخاصه بالأردوينو 

ولكن ان كنت لم تتطلع على الدروس السابقة يمكنك الإطلاع عليها من هنا 


سنناقش اليوم احد انواع المواتير الذي يعد من المواتير المهمه 

 الموتور الخطوى او stepper motor 

محرك خطوة بخطوة ‏ هو محرك كهربائي يستخدم في الآلات الصغيرة التي تحتاج لدقة في تحكم بمحركاتها مثل الطابعة cnc

و من أهم ميزات هذا النوع من المحركات انه يمكن التحكم في 

عدد 

وسرعة دوراته وزاوية التوقف بدقة.

يكون له العديد من الأنواع يختلف كل نوع من كمية الطاقة التى 

يحتاجها والوزن الذي يستطيع تحمله 


يحتوى الموتور على 5 اسلاك وهناك طريقتان للتوصيل 

الطريقة الأولى وهى استخدام درايفر خاص به وهذه الطريقة توفر 

لك العديد من الإمكانية وهى انك يمكنك التحكم فى سرعه الموتور 

مع التحكم فى اتجاهه



او استخدام شريحة h-bridge الخاصه بمواتير dc ولكن هذه 

الطريقة لن  توفر لك امكانية التحكم فى السرعه 

ويمكن ايضا استخدام شريحة l239d فى التحكم به


التجربة : 

سنقوم بعمل تحكم للموتور الستيبر فى اتجاه وسرعه دورانه 


باستخدام مقاومات متغيرة 


التوصيلات : 



الكود : 

فى البداية من اجل التعامل مع هذا النوع من المواتير يجب استخدام


مكتبة خاصه تسمي Stepper.h


#include <Stepper.h>


const int stepsPerRevolution = 200;


Stepper stepper(stepsPerRevolution,8,9,10,11);


const int res1 = A0;

const int res2 = A1;

int val_spe;

int val_mov;

void setup() {


}

void loop() {

  val_spe=analogRead(res1);

  val_mov=analogRead(res2);

  val_spe = map(val_spe,0,1023,0,100);

  if(val_spe > 0){

  stepper.setSpeed(val_spe);

  }

  if(val_mov > 600){

  stepper.step(val_mov); 

  }

  if(val_mov < 600){

  stepper.step(-val_mov);

  }

}


فى البداية يجب استدعاء المكتبة كما قلنا من قبل
ثم يجب تحديد عدد لفات الموتور فى الثانية غالبا ما تكون 200 

const int stepsPerRevolution = 200;

من ثم تعريف الموتور داخل المكتبة 
نقوم بكتابة اسم المكتبة ثم اسم الكائن الذي من خلاله سنصدر الأوامر للموتور
ثم نفتح قوس ونكتب منافذ الدرايفر التى تم توصيلها بالأردوينو 

Stepper stepper(stepsPerRevolution,8,9,10,11);

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

لتحميل الكود اضغط هنا

تصميم وبرمجة : بلال حسان سعدى 

الدرس السابع - الحساسات

1

 بسم الله الرحمن الرحيم  

بعد ان ناققشنا الدرس السابق كيفية التعامل مع حساس المسافة وحساس الحركة مع امثلة تطبيقية لكل منهم نبدأ اليوم درسا جديدا

ولكن ان كنت لا تعلم ما هى الأردوينو فلقد قمنا بنشر دروس

 تلخص ما هى الأردوينو يمكن الإطلاع عليها من هنا


سنناقش فى هذا الدرس نوعان من اهم المواتير ماتور dc و ماتور servo 

نبدأ بموتور dc

مبدا العمل الخاص بهذا الموتور : 

يعمل المحرك بمبدأ قوة لورنتز الذي يقول أن:"أي موصل يسير 

فيه تيار كهربائي ويكون موجودا في مجال مغناطيسي خارجي 

تؤثر عليه قوة، ويكون اتجاه القوة عموديا على كل من اتجاه 

المجال المغناطيسي واتجاه التيار الكهربائي" طبقا لـ قاعدة اليد 

اليمنى).

ولكي يستمر الملف الوسطي في الدوران فيلزم عكس التيار فيه كل

 نصف دورة . وهذا يتم بواسطة مبادل كهربائي يستمد التيار 

المستمر من بطارية عن طريق فرشتين موصلتين (أسود في 

الشكل) ويوصله إلى الملف . تتكون الفرشة من شرائح من النحاس .

يتميز محرك التيار المستمر بتكلفة قليلة، وأداء مستديم، وتحكم 

سهل في سرعة المحرك . إلا أنه يحتاج استبدال الفرش وتنظيف 

اقطاب المبادل الكهربائي بين حين وآخر .




التوصيل الى الأردوينو يتم التوصيل موتور التيار المستمر الى الأردوينو عن طريق شريحة تسمى شريحة h-bridge
ويوجد نوعان l239d

1298n motor driver

سنتعامل مع الشريحة وليس الدرايفر 

التوصيل كما هو موضح فى المخطط  الأتى
يتم توصيل vs الى مصدر الجهد الخاص بالشريحة ويكون من 5 فولت الى 20 فولت 
يتم توصيل vss الى 3.3 فولت
يتم توصيل منافذ gnd كلها مع بعضها 
ويتم توصيل منافذ enable الى vss 
هذه المنافذ التى تتحكم في تشغيل او اطفاء المحرك من الأساس
بعد ذلك نتجه الى منافذ input - output
يتم التحكم فى اتجاه الموتور من منافذ input 
حيث منفذ input رقم 1 و 2 يتم من خلالهما التحكم فى الموتور الأول اللذان يتم توصيلهما الى المنافذ الرقمية الخاصه بالأردينو 
الذي يتم توصيله الى المنفذان output رقم 1 و 2 
 وهكذا مع باقى المنافذ 

عند ادخال على المنفذ الدخل الأول 5 فولت وادخال على المنفذ الدخل الثانى 0 فولت يدور المحرك فى عكس عقارب الساعه 
والعكس صحيح 
ولكن لا يصح ادخال على منفذان الدخل 5 فولت 

التجربة :

سنقوم بعمل تجربة الأتيه الموضحه فى الفيديو الأتى


التوصيل :





التوصيل كما هو موضح بالأعلى لن نقوم بشرحه 

الكود : 

void setup()
{
  pinMode(6, OUTPUT);
    pinMode(8, OUTPUT);
    pinMode(4, OUTPUT);
    pinMode(3, OUTPUT);
}

void loop()
{
  digitalWrite(6, HIGH);
  digitalWrite(8, LOW);
  digitalWrite(4, HIGH);
  digitalWrite(3, LOW);
  delay(5000); 
  digitalWrite(6, LOW);
    digitalWrite(8, HIGH);
    digitalWrite(4, LOW);
  digitalWrite(3, HIGH);
  delay(5000);
}
الكود ايضا لقد قمنا بشرحه فى الدروس السابقه يمكنكم الإطلاع عليها 

نتطرق الأن الى الموضوع الثانى من مناقشتنا servo motor


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



التجربة : 

سنقوم بأداء نفس التجربة الموضحه فى هذا الفيديو 

اولا التوصيل 


التوصيل كما هو موضح بالأعلى 

ننتقل الى الكود : 


#include <Servo.h>
Servo servo;
int vda = A0;
int val = 0;
void setup()
{
servo.attach(10);
}

void loop()
{
val = analogRead(A0);
  val = map(val,0,1023,0,255);
  val = constrain(val,0,255);
  servo.write(val);
}
فى البداية للتعامل مع السيرفو موتور يجب استخدام مكتبة مخصصه عن طريق 

#include <Servo.h>
ثم تعريف المكتبة بان هناك موتور سيرفو سيتم التعامل معه عن طريق
Servo servo;
من ثم تعريف المكتبة بمنفذ الموتور الذي يتصل بالأردوينو 
servo.attach(10);
من ثم قراءة قيمة المقاومة المتغيرة وعمل عملية مساواة بين قيمة المقاومة التى تتراوح بين 0 الى 1023 ومساواتها من 0 الى 255 القيمة التى يمكن الحصول عليها من الأردوينو كقيمة تماثلية  
val = analogRead(A0);
val = map(val,0,1023,0,255);
val = constrain(val,0,255);
من ثم اخراج القيمة النهائية وجعل الموتور يتحرك بدرجة محدده 
servo.write(val);
فى نهاية الموضوع بعد ان ناقشنا اشهر انواع المواتير فى هذا الدرس 
ننهى درسنا ولنا لقاء فدرس اخر

لتحميل جميع الأكواد اضغط هنا 

تصميم : بلال حسان سعدى 








الدرس السادس - الحساسات

0

 بسم الله الرحمن الرحيم  

بعد انا ناقشنا فى الدرس السابق كيفية التعامل مع حساس الحرار وحساس اللهب 

سنتطرق اليوم الى مواضيع جديده 

ولكن ان كنت لا تعلم ما هى الأردوينو فلقد قمنا بنشر 7 دروس تلخص ما هى الأردوينو يمكن الإطلاع عليها من هنا


سنتطرق اليوم الى ultrasonic sensor , RIBsensor

في البداية حساس المسافة او حساس ultrasonic

يعمل هذا الحساس على مبدأ سرعة الصوت حيث يحتوى هذا الحساس على مرسل ومستلم يرسل المرسل موجات تحت صوتيه 

مثل الخفاش 

وعندما يعترض جسم هذه الموجات ترتد مره اخرى فيستلمها المستلم الخاص بالحساس فيعطى قراءة بالزمن الذي استغرقه الحساس منذ ارسال الموجة والى اي يتم استلامها

ومع وجود الزمن وسرعه الصوت يقوم الحساس بعمل عملية حسابية لإيجاد المسافة 

حيث المسافة  = السرعه ضرب الزمن 

ومن هذه العلاقة يقوم الحساس بحساب المسافة 

ويكون مدى هذا الحساس حوالى 50 سم غالبا 


يحتوى الحساس على منفذان منفذ echo و trig 
وهناك انواع اخرى تحتوى على منفذ واحد للبيانات ولكنها غير مشهورة مثل الحساس الذي لديه منفذان للبيانات 
يتم توصيل echo , trig الى المنافذ الرقمية الخاصه بالأردوينو 
ويتم توصيل vcc الى 5 فولت
ويتم توصيل gnd الى السالب




التجربة :

قمنا بتصميم العديد من المشاريع حول هذا الحساس يمكن الإطلاع عليها:



ثانيا : حساس الحركة rib sensor

يعتبر هذا الحساس من الحساسات الرائعه ولكن لا يمكن لهذا الحساس قياس المسافة بل كل ما يمكنه ان يتحسس من وجود حركة فى مكان ما ويعتمد هذا الحساس على الأشعة تحت حمراء 






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


يحتوى هذا الحساس على 3 منافذ 
منفذ الموجب يتم توصيله ب 5 فولت
منفذ السالب يتم توصيله بالسالب
منفذ الإشارة يذهب الى المنافذ الرقمية الخاصه بالأردوينو 


التجربة : 

هناك العديد من المشاريع بإستخدام حساس الحركة يمكن الإطلاع عليها 

الباب الأوتماتيكى بإستخدام خساس rib

لحل مشكلة السرقة بالأردوينو




تصميم : بلال حسان سعدى 



الدرس الخامس - الحساسات

0

بسم الله الرحمن الرحيم   
بعد ان ناقشنا فى الدرس السابق حساس الرطوبة والمقاومة الضوئية 
سنكمل اليوم سلسلة الحساسات الدرس السادس 
ولكن ان كنت لا تعلم ما هى الأردوينو فلقد قمنا بنشر 7 دروس تلخص ما هى الأردوينو يمكن الإطلاع عليها من هنا






سنناقش فى هذا الدرس حساس الحرارة lm35 
وحساس flame 

اولا حساس الحرارة :

يتأثر حساس الحرارة مع درجة الحرارة المحيطة حيث عندما ترتفع درجة الحرارة تزداد قيمة الخرج من الحساس وكلما قلت درجة الحرارة تقل قيمة الخرج من الحساس 

قمنا بتصميم العديد من المشاريع حول هذا الحساس : 

 يحتوى حساس الحرارة على 3 منافذ 
منفذ الطاقة والذي يذهب الى 5 فولت الخاصه بالأردوينو 
منفذ السالب والذي يذهب الى السالب الخاص بالأردوينو
منفذ out الذي يذهب الى المنافذ التماثلية الخاصه بالأردوينو 

يتم التوصيل كما هو موضح فى الصورة الأتيه 





تجربة : 

سنقوم بعمل دمج بين الدرس الثالث وهذا الدرس 
فسنقوم بقياس درجة الحرارة وعرض الدرجة على شاشة lcd كما موضح فى هذا الفيديو 


التوصيل : كما هو موضح فى الصورة الأتيه 



الكود :


#include <LiquidCrystal.h>
LiquidCrystal lcd(10,9,6,5,4,3); //define lcdpins
int temp = A0; // sensor pin
float tem; //the data
void setup(){
  lcd.begin(16, 2);
    lcd.setCursor(4,0);
  lcd.print("SMART ARABIC");
  lcd.setCursor(6,1);
  lcd.print("PROJECTS");
  delay(6000);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("made by : ");
  lcd.setCursor(0,1);
  lcd.print("BILAL HASSAN");
  delay(2000);
  lcd.clear();
}
void loop(){
  tem = analogRead(A0); //read from snsor
  tem = tem * 0.48828125; // Measure the heat
  lcd.clear();
  lcd.print("temp :");
  lcd.setCursor(0,6);
  lcd.print(tem);
  delay(200);
}

لن نقوم  بشرح الأكواد الخاصه ب lcd التى سبق ان قمنا بشرحها من قبل 
فى البداية قمت بتعريف متغير وجعل قيمته تساوى قراءة الحساس
 tem = analogRead(A0); //read from snsor
ثم عمل بعض العمليات الحسابية للحصول على درجة الحرارة بدرجة سليزيوم عن طريق 
  tem = tem * 0.48828125; // Measure the heat
هذه الأكواد الخاصه بحساس 

حساس اللهب  flame sensor :

يتمكن حساس اللهب من الكشف عن وجود الحرائق دون القيام باى علميات حسابية 
ويوجد نوعان من هذا الحساس نوع الخرج الخاص به تماثلى
ونوه الخرج الخاص به رقمى 

التوصيل الى الأردوينو 

يتم التوصيل كما هو موضح فى الشكل الأتى 








لتحميل الأكواد اضغط هنا 


تصميم : بلال حسان سعدى 

الدرس الرابع - الحساسات

3

 

بسم الله الرحمن الرحيم 

لقد ناقشنا فى الدرس السابق كيفية استخدام keypad والأوامر الأساسية الخاصه بها 

لكن سنناقش اليوم بعض الملحقات التى تعتبر مقاومان متغيرة 

ماذا تعنى مقاومات متغيرة 

تعنى ان قيمتها تشبه المقاومة المتغيرة وتتاثر قيمتها على عوامل معينه 

فى البداية ان كنت لا تعلم ما هى الأردوينو او ليست لديك فكرة عنها 

لقد قمنا بكتابة سبعه دروس تعطيك خليفة واضحه للإطلاع عليها اضغط هنا 


سنناقش اليوم ثلاث حساسات من اهم الحساسات الموجوده مع الأردوينو 
(soil measure sensor)(photoresistor LDR)

في البداية نبدا بحساس soil sensor

او حساس الرطوبة

فكرة العمل : يقوم هذا الحساس بقياس الرطوبة الخاص به فيمكن لهذا الحساس قياس الرطوبة وعلى حسب درجة الرطوبة فى التربة يعطى قيمة معينه 

فإذا كانت نسبة الرطوبة فى التربة مرتفعه تقل قيمة الخرج الخارجه من الحساس
وإذا كانت نسبة الرطوبة فى التربة منخفضه تزاد قيمة الخرج 
وتكون قيمة الخرج اشارة تماثلية 
يحتوى هذا الحساس على 3 منافذ 
منفذ + ويتم توصيله الى 5 فولت
منفذ - ويتم توصيله الى السالب
ومنفذ الإشارة ويتم توصيله الى احد المنافذ التماثلية 
الصورة الأتيه توضح كيفية توصيل الحساس الى الأردوينو 






يمكن لهذا الحساس فعل العديد من التطبيقات وقمنا بتصميم العديد من المشاريع القائمة على هذا الحساس ويتم استخدامه غالبا فى المزارع

كيفية عمل نظام رى ذاتى بإستخدام حساس soil

ويمكنكم مشاهده الفيديو الأتى الذي يوضح اليه عمل الحساس


نتطرق ثانيا الى حساس الضوء او المقاومة الضوئية او ldr

لفهم المقاومة الضوئية يجب اخذ فكرة عن هذا العنصر :
ولقد قمنا بنشر العديد من المشاريع التى تعمد حول هذا العنصر

حساس الضوء
 اما ان ياتى كمكون الكتروني او ياتى فى تجميعه كامل وجاهز للإستخدام المباشر 





ولكن فى هذا الدرس سنتعامل مع المكون الإكترونى البسيط

طريقة توصيل هذا الحساس مع الأردوينو كما هى موضحه فى الصورة 
تحتوى على منفذان منفذ يتم توصيله الى الطاقة 5 فولت
وتوصيل الطرف الأخير الى مقاومة 1 كيلو اوم 
وتوصيل الطرف الأخر من المقاومة الى السالب وتوصيل الطرف قبل المقاومة الى المنافذ التماثلية

التجربة : 
سقنوم بعمل تجربة للتحكم فى شدة الإضاءة عن طريق مقاومة ضوئية كما هو موضح في الفيديو التالى

اولا التوصيلات اللازمة 

ثالثا الكود :
int sen = A0;
int led = 10;
int val = 0;

void setup()
{
  pinMode(led, OUTPUT);
}

void loop()
{
  val=analogRead(A0);
  val=map(val,0,1000,0,255);
  analogWrite(led,val);
}
في البداية تعريف المنافذ و المتغيرات الأساسية  
int sen = A0;
int led = 10;
int val = 0;
من ثم تعريف منفذ الليد كخرج ولا يجب تعريف المنافذ التماثلية كدخل لأنها تعرف تلقائيا كدخل 
  val=analogRead(A0);
  val=map(val,0,1000,0,255);
ثم قراءة القراءة الخاصه بالحساس 
والقيام ببعض العمليات علي هذه البيانات 
ثم اخراج هذه البيانات على منفذ الليد واخراج قيمة الحساس كاشارة تماثلية عن طريق امر 
analogWrite(pin,value);

فى نهاية هذا الدرس كنا قد ناقشنا العديد من المواضيع المهمه 
soil measure sensor , photo resistor ldr 

لتحميل جميع الأكواد اضغط هنا

تصميم : بلال حسان سعدى

الدرس الثالث - الحساسات

0

 

بسم الله الرحمن الرحيم  

بعد ان ناقشنا فى الدرس السابق ملحق من اهم ملحقات الأردوينو وهى شاشة lcd

سنناقش اليوم واحده من اجمل الملحقات وهى key pad لكن فى البداية ان لم تكن لك خبرة فى الأردوينو 

فلقد قمنا بكتابة سبع دروس يمكنك الإطلاع عليها أولا للإطلاع عليها اضغط هنا 



يعتبر key pad من احد الملحقات

 التى يمكنك ان تستخدمها مع الأردوينو لكتابة شئ ما او لأى غرض اخر 

ولقد قمنا بتصميم العديد من المشاريع 

مثل :- 

كيفية عمل آله حاسبة بإستخدام الأردوينو 

كيفية عمل باسورد لفتح الأبواب بواسطه الأردوينو 

يمكنك اخذ فكرة عن هذا العنصر الرائع من هذه المقالات

في البداية مما يتكون من هذا العنصر يتكون هذا العنصر من عدد محدد من السويتشات 

يكون هناك نوع يحتوى على 16 سويتش واخر يحتوى على 12 سويتش 

ويتم تجميع هذه السويتشات كما هو موضح فى الصورة الأتيه 

فاننا يمكن تجميع هذا العنصر بأنفسنا بمجرد الحصول على بعض سويتشات وتوصيلها معا كما هو موضح بالأعلى 
تحتوى keypad على 8 منافذ اذا كانت  16 زر
و 6 منافذ اذا كانت 12 زر 
حيث يكون نصف عدد المنافذ خاص بالصفوف والنصف الأخر خاص بالأعمده كما هو موضح فى الصورة الأتيه

والأن نتطرق الى كيفية توصيل هذا العنصر مع الأردوينو 

يتم توصيل كل المنافذ الى المنافذ الرقمية مع ملاحظة عدم وضع منافذ فى المنافذ الأتيه 0  و 1 و  13 

اخيرا التجربة :

سوف نقوم بعمل تجربة لهذا العنصر فسنقوم باستخدام شاشة lcd 

وطباعه ما يتم ضغطه على keypad 

والتى يمكن توضيحها فى هذا الفيديو


اولا التوصيلات الأساسية : 





لقد ناقشنا من قبل كيفية توصيل lcd ويمكنك الإطلاع علي الدروس السابقه 

ملحوظة : يمكن معامله المنافذ التماثلية كانها رقمية بطريقة عادية جدا

قمت بتوصيل keypad الى الأردوينو من المنافذ 12 الى 5 

row1 : 12

row2 : 11

row3 : 10

row4 : 9

col1 : 8

col2 : 7

col3 : 6

col4 : 5

ثالثا ننتقل الى الكود :

#include <Keypad.h>

#include <LiquidCrystal.h>

LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);//pin of lcd screen

const byte ROWS = 4; // Four rows

const byte COLS = 4; // four columns

char keys[ROWS][COLS] = {

  {'1','2','3','A'},

  {'4','5','6','B'},

  {'7','8','9','C'},

  {'*','0','#','D'}

};

byte rowPins[ROWS] = { 12,11,10,9 };

byte colPins[COLS] = { 8,7,6,5 };

Keypad kpd( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup()

{

  lcd.begin(16, 2);

    lcd.setCursor(4,0);

  lcd.print("SMART ARABIC");

  lcd.setCursor(6,1);

  lcd.print("PROJECTS");

  delay(6000);

  lcd.clear();

  lcd.setCursor(0,0);

  lcd.print("made by : ");

  lcd.setCursor(0,1);

  lcd.print("BILAL HASSAN");

  delay(2000);

  lcd.clear();

}

void loop()

{

  char key = kpd.getKey(); 

  if (key != NO_KEY)

{

      lcd.print(key);

  }}

لقد قمنا بشرح اغلبية هذا الكود  فى الدرس السابق فلن نشرحه مجددا وسنكتفى بالجزء الخاص ب keypad

فى البداية من اجل التعامل مع keypad يجب استخدام مكتبة خاصه عن طريق

#include<Keypad.h>

حيث تسهل هذه المكتبة العمل مع keypad

من ثم هناك بعض التعريفات الأساسية مثل عدد الصفوف وعدد الأعمدة 

المنافذ الخاصه بالصفوف والمنافذ الخاصه بالأعمده

const byte ROWS = 4; // Four rows

const byte COLS = 4; // four columns

يجب ان تكون هذه التعريفات من نوع byte لضمان عمل المكتبة 

byte rowPins[ROWS] = { 12,11,10,9 };

byte colPins[COLS] = { 8,7,6,5 };

ومت ثم انشاء مصفوفتين يتم وضع فيهما المنافذ الخاصه بالصفوف والمنافذ الخاصه بالأعمدة ويجب ان تكون ايضا المصفوفة من نوع byte

ومن ثم تعريف الحروف فيجب عمل مصفوفة تحتوى على كل الحروف التى نريد ان نقراءها عند ضغط على سويتش معين 

char keys[ROWS][COLS] = {

  {'1','2','3','A'},

  {'4','5','6','B'},

  {'7','8','9','C'},

  {'*','0','#','D'}

};

فمثلا عند استخدام keypad تحتوى على 4 صفوف و 4 اعمده نحصل على 4 مصفوفات فى كل واحده 4 قيم 

وعندما نستخدم keypad تحتوى على 4 صفوف و 3 اعمده نحصل على 4 مصفوفات فى كل واحده ثلاث قيم 

ففائده المصفوفة التى في الأعلى تعريف المكتبة بالحروف التى سنستخدمها ولا يشترط استخدام هذه الحروف يمكن استخدام حروف اخرى يمكن ازالة الأرقام واكمال الحروف 

Keypad kpd( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

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

ثم استخدام امر 

makeKeymap(key)

بهذا الأمر انت تقول للمكتبة خذي المصفوفة الخاصه بالحروف وقومى بعمل خريطة لهذه الحروف و الأرقام لأجل استخدامها مع keypad 

ثم وضع المصفوفة الخاص بالمنافذ الخاصه بالصفوف 

ثم وضع المنافذ الخاصه بالأعمده 

ثم وضع عدد الصفوف وعدد الأعمده 

وبهذا ننهى التعريفات الأساسية الخاصه بالكائن

بعد ذلك امر 

kpd.getKey();

يقوم هذا الكود بمعرفة الزر الذي تم ضغطه وجعل مكانه فى المصفوفة الخاصة بالصفوف 


لتحميل الأكواد اضغط هنا


تصميم : بلال حسان سعدى