المدخلات التماثلية Analog inputs July 28, 2017 – Posted in: Arduino, Learn arduino

في هذا الدرس ، سنقوم باستخدام الاتصال التسلسلي (Serial Monitor) لعرض قراءات المدخلات  التماثلية “Analog Inputs” ومن ثم اضافة مصباح LED لنتمكن من التحكم بشكل أكبر ولتقليل درجة اضاءة الـLEDS عبر المقاومة المتغيرة (Variable resister)

القطع المستخدمة

للقيام بهذه التجربة تحتاج الى كل من القطع التالية  5mm red LED ،0 Ω Resistor،  10 kΩ variable resistor ،مقاومة متغيرة ،  Half-size Breadboard لوحة توصيل ، Arduino Uno R3 ،و .Jumper wires.

التجربة

التجربة

قبل البدء باستخدام مصباح الـLED ، تستطيع القيام بالتجربة التالية عبر استخدام المقاومة المتغيرة (potentiometer) و تفعيل خاصية شاشة الاتصال التسلسلي (Serial Monitor) في الأردوينو

قم بتوصيل لوح التجارب كالصورة التالي

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

int potPin = A3;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  int reading = analogRead(potPin);
  Serial.println(reading);
  delay(500);
}

والآن ، قم بفتح شاشة الاتصال التسلسلي (Serial Monitor)

قم بتحريك وتغيير المقاومة وسوف تلاحظ التغيّر في القراءات ما بين 0 و 1023

شاشة الاتصال التسلسلي (Serial Monitor) تقوم بعرض القراءات من A3  بوساطة السطر التالي

  int reading = analogRead(potPin);

الجهد (Voltage) في A3 يتم تحويله إلى رقم ما بين 0 و 1023.

المقاومة المتغيرة (Variable Resistors)

المقاومات المتغيرة تدعى “potentiometers” وتختصر بـ pot

في التجربة التي تم اجراؤها مستخدمين شاشة الاتصال التسلسلي (Serial Monitor) تقوم المقاومة بتغيير الجهد على منفذ A3 ، كما يقوم الكود البرمجي  بتحويل هذا الجهد عبر ال ADC  إلى قيم  بين ال 0 و 1023.

في المقاوم المتغير “pot” يوجد مسار يمثل المقاومة وتتكون المقاومة من ٣ ارجل, احد الارجل نوصلها  في ال٥ فولت, اما الرجل الأخرى نوصلها ب GND  او المنفذ الأرضي,  اما الرجل التي في المنتصف تكون متصلة مع جزء متحرك على هذه المقاومة تسمى ” Slider” وظيفتها تغيير مقدار المقاومة ما بين 0 وحتى 5V

طريقة التوصيل

والآن دعونا نقوم باستخدام المقاومة المتغيرة “pot” للتحكم في سطوع  الـLED, سوف نقوم بتوصيل اليد مع منفذ رقم ٣ بواسطة مقاومة قيمتها ٢٢٠ اوم كما في الشكل التالي الى الدائرة التي قمنا بتوصيلها سابقا

شرح الكود البرمجي

قم برفع الكود التالي إلى متحكم الأردوينو

const int analogInPin = A3;  
const int analogOutPin = 3; 

int sensorValue = 0;       
int outputValue = 0;        

void setup() {

  Serial.begin(9600);
}

void loop() {

  sensorValue = analogRead(analogInPin);
  outputValue = map(sensorValue, 0, 1023, 0, 255);
  analogWrite(analogOutPin, outputValue);

  Serial.print("sensor = ");
  Serial.print(sensorValue);
  Serial.print("\t output = ");
  Serial.println(outputValue);

  delay(2);
}

الجزء الجديد من الكود وهو تعريف منفذ المدخل التناظري “Analog inputs” والتي سنقوم بربط المقاومة المتغيرة بها

const int analogInPin = A3;

لاحظ بأننا لم نقم بإضافة أي جديد في دالة ‘setup’ لتعريف حالة المنفذ للمدخل التناظري.

في دالة ‘loop’ نقوم بقراءة القيمة التناظرية “Analog value” بالطريقة التالية

  sensorValue = analogRead(analogInPin);

القيمة التماثلية التي سوف تخزن في المتغير sensorValue سوف تكون من 0 الى 1023 وذلك لان الاردوينو يستخدم 10  بت في ال adc  وسوف نستحدم امر map لتحويل القيمة من 0 الى 255  وتخزينها في المتغير outputValue بالطريقة التالية:

  outputValue = map(sensorValue, 0, 1023, 0, 255);

واخير سوف نغير الطاقة على منفذ الليد و نقوم بطباعة القيمة على الserial menitor