الكود البرمجي
#define LED1 2
#define LED2 3
#define LED3 4
#define LED4 5
#define LED5 6
#define SENSOR A0
void setup() {
Serial.begin(9600);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
}
void loop() {
int sensorValue = analogRead(SENSOR);
Serial.println(sensorValue);
if (sensorValue >= 760)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
}
else if (sensorValue >= 720 && sensorValue < 760)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, LOW);
}
else if (sensorValue >= 615 && sensorValue < 720)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, LOW);
}
else if (sensorValue >= 410 && sensorValue < 615)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
}
else if (sensorValue >= 250 && sensorValue < 410)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
}
else if (sensorValue >= 0 && sensorValue < 250)
{
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
}
delay(1000);
}
شرح الكود :
في البداية، نقوم بتسمية منافذ الأردوينو المستخدمة في المشروع، من أجل تسهيل عملية التعامل معها.
#define LED1 2 #define LED2 3 #define LED3 4 #define LED4 5 #define LED5 6 #define SENSOR A0
ثم فى دالة ()setup نقوم بضبط الاعدادات اللازمة للمشروع مثل تشغيل الاتصال التسلسلى و ضبط الـ LEDs المستخدمة كمخرجات
void setup() {
Serial.begin(9600);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
}
في الدلة ()loop، نقوم بقراءة الحساس وعرض هذه القراءة على الشاشة التسلسلية Serial Monitor. بعد ذلك نبدأ بتشغيل الـ LEDs على حسب القيمة التي تمت قراءتها.
int sensorValue = analogRead(SENSOR); Serial.println(sensorValue);
مثلا إذا كان قيمة الحساس أعلى من 760، يدل ذلك على أن التربطة رطبة جدا، لذلك يتم إضاءة جميع الـ LEDs.
if (sensorValue >= 760)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
}
على عكس إذا كان قيمة الحساس اقل من 250، دل ذلك على أن التربة جافة وتحتاج إلى ماء ونعبر عن ذلك بإطفاء جميع الـ LEDs .
else if (sensorValue >= 0 && sensorValue < 250)
{
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
}
ويتم إضاءة الـ LEDs تدريجيا اعتمادا على القيمة التي تم قراءتها من الحساس .
else if (sensorValue >= 720 && sensorValue < 760)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, LOW);
}
else if (sensorValue >= 615 && sensorValue < 720)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, LOW);
}
else if (sensorValue >= 410 && sensorValue < 615)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
}
else if (sensorValue >= 250 && sensorValue < 410)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
}

