الأهداف

في هذا النشاط نقوم بإنجاز تركيب نستعمل فيه مقاومة متغيرة للتحكم في شدة إضاءة اللد. نربط اللد بالتسلسل مع مقاومة متغيرة بالتسلسل مع مقاومة أمان قدرها 220 Ω.

تجربة اللد مع المقاومة المتغيرة

قم بانشاء التركيب التاليdiv_opt

ما يلزمنا

  • لوحة أردوينو
  • لوحة تجارب
  • مقاومة متغيرة 10 kΩ
  • مقاومة 220 Ω (أحمر، أحمر، أحمر)
  • صمام لد أحمر
  • أسلاك توصيل.

 

يبدو التركيب كما في الشكل التالي

pinledpot

لأرديوينو، زيادة على المنافذ الرقمية؛ ستة (06) مداخل تماثلية (ANALOG IN) مُرقّمة من A0 إلى A5، تقبل إدخال تيار متغير من 0 إلى 5 فولت. تحول هذه القيم قبل تسجيلها في ذاكرة المتحكم الدقيق إلى النظام الرقمي الثنائي من 0 (0 فولت) إلى 1023 (5 فولت) بدقة 10 بت ( تذكر أن 102 = 1024).

و بذلك يكون كل بت يمثل [latex]0,0049 = \frac{5}{1024}[/latex]  فولت أو 4,9 ميلي فولت (mV).

remark

يقوم أردوينو بتحويل القيم التماثلية إلى رقمية بواسطة محول تماثلي \ رقمي (ADC) لأن الذاكرة لا تقبل سوى القيم الرقمية.

البرنامج

نستعمل التعليمة ()analogRead لقراءة قيمة توتر تماثلي.

تركيب التعليمة

analogRead(pin)

pin: رقم المنفذ ويكون واحد من A0 إلى A5

لحل هذه المسألة سوف نستعين بالتعليمة ()analogRead لقراءة قيمة التوتر خارج المقاومة المتغيرة و نستعين به كمعامل للتعليمة ()analogWrite للتحكم في توهج اللد.

يبدو هذا الحل منطقي و لكن ()analogRead ترجع قيم بين 0 و 1023 أما ()analogWrite تنتظر قيم بين 0 و 255

كحل أولي، يمكننا أن نقسم القيمة الأولى على 4.

سؤال

حسب نظرك لماذا نقسم قيمة ()analogRead على 4 ؟

لأردوينو تعليمة جديرة بالإهتمام، و التي تقوم بحويل مجال من الأعداد إلى مجال مختلف، ما يوفر عليك تحويل الأعداد. تسمى هذه العملية بالموافقة.

تركيب التعليمة

map(value, fromLow, fromHigh, toLow, toHigh)

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

mappage

مثلا إذا أردنا أن ننتقل من المجال 0..1023 إلى 0..255 نكتب التعليمة :

fromLow =0
fromHigh: 1023
toLow = 0
toHigh: 255

إذا أردنا تحويل العدد 590 الموجود في المجال 0..1023: نكتب

map(590, 0, 1023, 0, 255)

و التي ترجع لنا القيمة 147 الموافقة من المجال (0..255) .

إفتح واجهة التطوير و حرر نص البرنامج التالي:

int led_pin = 10;
int pot_pin = A0;   
int valeur_pot = 0; 


void setup() {
 pinMode(led_pin, OUTPUT);  

}
  void loop(){

   valeur_pot = analogRead(pot_pin);
   valeur_pot=map(valeur_pot, 0, 1023, 0, 255); 
   analogWrite(led_pin, valeur_pot);      
  
}


بقم بفحص نص البرنامج ثم إرفعه إلى اللوحة.

قم بتغيير قيمة المقاومة المتغيرة و لاحظ أثر ذلك على توهج اللد.

ماتعلمناه

  • يحتوي أردوينو على ستة مداخل تماثلية مرقمة من A0 إلى A5.
  • التعليمة ()analogRead
  • التعليمة ()map.

تمرين

مع نفس التركيب أعد كتابة البرنامج بحيث تتغير سرعة وميض اللد عندما تغير قيمة المقاومة المتغيرة.