اردوينو – الدرس العاشر– المستشعر الضوئي (photocell)

مبتدئ

image_pdf

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

الكود التالي مشابه للدرس التاسع ولكن نظرًا لإستخدامنا للمستشعر الضوئي قمنا ببعض التغيرات البسيطة:

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

int lightPin = 0;
int latchPin = 5;
int clockPin = 6;
int dataPin = 4;
 
int leds = 0;
 
void setup()
{
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);
}
 
void loop()
{
  int reading  = analogRead(lightPin);
  int numLEDSLit = reading / 57;  //1023 / 9 / 2
  if (numLEDSLit > 8) numLEDSLit = 8;
  leds = 0;   // no LEDs lit to start
  for (int i = 0; i < numLEDSLit; i++)
  {
    leds = leds + (1 << i);  // sets the i'th bit
  }
  updateShiftRegister();
}
 
void updateShiftRegister()
{
   digitalWrite(latchPin, LOW);
   shiftOut(dataPin, clockPin, LSBFIRST, leds);
   digitalWrite(latchPin, HIGH);
}

أول شيء قمنا بتغييره هو تسمية المنفذ التناظري ‘analog pin’ من ‘potPin’ إلى ‘lightPin’  وذلك قمنا بتبديل المقاوم المتغير ‘pot’ بالمستشعر الضوئي ‘photocell’ .

التغيير الآخر هو السطر الذي يقوم باحتساب عدد مصابيح الـLEDs لإضاءتها

int numLEDSLit = reading / 57;  // all LEDs lit at 1k

هذه المره قمنا بقسمة القراءة على 57 بدلاً من 114 من الدرس التاسع . بمعنى آخر قمنا بقسمتها على نصف القيمة السابقة حتى نقوم بتوزيعها على 9 مجموعات، ابتداءاً من (حيث لايتم اضاءة أي من المصابيح الثمانية) وحتى (اضاءة جميع المصابيح الثمانية) ، العامل الاضافي هو حساب قيمة المقاومه الثابته 1kΩ
هذا يعني انه عندما تكون قيمة المستشعر الضوئي ‘photocell’ هي 1kΩ (نفس قيمة المقاوم الثابت ) يتم قراءة الصف 1023 وقسمته على 2 = 511 . بذلك يتم اضاءة جميع المصابيح (numLEDSLit ستكون 9)

X
Product added to the cart