در بخش اول برنامه متغیرهای لازم برای اختصاص شماره پینها و یک مقدار مرجع ثابت برای ماژول تشخیص صدا تعریف شدهاند. این مقدار مرجع 700 معادل با تعداد بایتهای سیگنال الکتریکی خروجی سنسور صدا است.
int sensor = A6;
int redled = 12;
int greenled = 11;
int pump = 10;
#define REF 700
در قسمت void setup از دستور pinMode برای مشخص کردن نوع ورودی و خروجی سنسورها استفاده شده است. در اینجا سنسور به عنوان ورودی و سایر دستگاههای دیگر به عنوان خروجی تعریف شدهاند.
void setup()
{
pinMode(sensor,INPUT);
pinMode(redled,OUTPUT);
pinMode(greenled,OUTPUT);
pinMode(pump,OUTPUT);
}
در داخل حلقه اصلی با دستور analogRead مقدار ورودی آنالوگ ماژول صوتی را دریافت کرده و آن را در یک متغیر به نام sensor_value ذخیره میکند.
int sensor_value = analogRead (sensor);
در قسمت آخر یک از ساختار شرطی else if برای مقایسه سیگنال آنالوگ ورودی با مقدار مرجع استفاده میشود. اگر مقدار ورودی بیشتر از مرجع باشد کلیه پینهای خروجی HIGH شده به طوری که تمام LEDها و پمپ فعال میشوند، در غیر این صورت همه چیز خاموش است. همچنین برای متمایز کردن زمان روشن / خاموش شدن رله 70 میلی ثانیه تاخیر در نظر گرفته شده است.
if (sensor_value>REF)
{
digitalWrite(greenled,HIGH);
digitalWrite(redled,HIGH);
digitalWrite(pump,HIGH);
delay(70);
}
else
{
digitalWrite(greenled,LOW);
digitalWrite(redled,LOW);
digitalWrite(pump,LOW);
delay(70);
}
کدکامل برنامه:
int sensor = A6;
int redled = 12;
int greenled = 11;
int pump = 10;
#define REF 700
void setup()
{
pinMode(sensor,INPUT);
pinMode(redled,OUTPUT);
pinMode(greenled,OUTPUT);
pinMode(pump,OUTPUT);
}
void loop()
{
int sensor_value = analogRead (sensor);
if (sensor_value>REF)
{
digitalWrite(greenled,HIGH);
digitalWrite(redled,HIGH);
digitalWrite(pump,HIGH);
delay(70);
}
else
{
digitalWrite(greenled,LOW);
digitalWrite(redled,LOW);
digitalWrite(pump,LOW);
delay(70);
}
}