به نام خدا
ساخت دماسنج با استفاده از آردوینو و ال ای دی
در این پروژه قصد داریم تا با استفاده از آردوینو و و چند ال ای دی یک دماسنج برای اندازه گیری دمای اطاق بسازیم. این پروژه می تواند در جا های مختلفی بکار گرفته شود. در این پروزه از سنسور DTH11 استفاده شده است که در زیر به شرح آن می پردازیم.
سنسور DHT111
این سنسور یک سنسور دما و رطوبت است. اما در این پروژه ما قصد داریم تنها داده های دمایی آن را مورد بررسی قرار دهیم. سپس آردوینو داده های این سنسور را دریافت می کند و این اتفاق هر چند ثانیه یک بار اتفاق می افتد. برای نمایش دما نیز از ۱۲ ال ای دی استفاده می کنیم که دما را به در دوازده حالت متفاوت نمایش می دهد. اگر که خواستید دقت را بالاتر ببرید می توانید تعداد ال ای دی ها را افزایش دهید که بعد از آن باید این تغییر را نیز در برنامه نیز اجرا کنید.
در ادامه ی کار ، کاربر تنها لازم است تا مقدار حداقل و حداکثر بازه دمای اطاق را وارد کند. اگر دما به زیر حد آستانه ی وارد شده باشد هیچ ال ای دی روشن نمی شود. اگر که دما از حداکثر بازه ی تعیین شه بیشتر شود تمامیه ال ای دی ها روشن خواهد شد. در این مدار اگر اشکال اتصال وجود داشته باشد ال ای دی چشمک می زند.
شماتیک مدار:
همانطور که در شکل زیر مشاهده می شود مدار بسیار ساده است و یک پین ال ای دی ها با مقاومت به پین های ۲ تا ۱۳ Gpio از آردوینو متصل هستند. سنسور DTH111 نیز به پین آنالوگ متصل است.
توجه کنید که برنامه ی نوشته شده تنها با سنسور DTH111 کار میکند. برای این کار کتاب خانه ی DTH111 را دانلود کنید.
کد برنامه :
دانلود فایل#include<dht.h> int a=2; int b=3; int c=4; int d=5; int e=6; int f=7; int g=8; int h=9; int i=10; int j=11; int k=12; int l=13; int p=A0; int data=A1; int n=A2; int ack; dht DHT; int temp=25; // set temperature range. void setup() { Serial.begin(9600); // may be removed after testing. pinMode(a,OUTPUT); pinMode(b,OUTPUT); pinMode(c,OUTPUT); pinMode(d,OUTPUT); pinMode(e,OUTPUT); pinMode(f,OUTPUT); pinMode(g,OUTPUT); pinMode(h,OUTPUT); pinMode(i,OUTPUT); pinMode(j,OUTPUT); pinMode(k,OUTPUT); pinMode(l,OUTPUT); pinMode(p,OUTPUT); pinMode(n,OUTPUT); digitalWrite(p,HIGH); digitalWrite(n,LOW); } void loop() { // may be removed after testing. Serial.print("Temperature(°C) = "); Serial.println(DHT.temperature); Serial.print("Humidity(%) = "); Serial.println(DHT.humidity); Serial.print("\n"); //till here ack=0; int chk = DHT.read11(data); switch (chk) { case DHTLIB_ERROR_CONNECT: ack=1; break; } if (ack==0) { if(DHT.temperature>=temp)digitalWrite(a,HIGH); if(DHT.temperature>=temp+1)digitalWrite(b,HIGH); if(DHT.temperature>=temp+2)digitalWrite(c,HIGH); if(DHT.temperature>=temp+3)digitalWrite(d,HIGH); if(DHT.temperature>=temp+4)digitalWrite(e,HIGH); if(DHT.temperature>=temp+5)digitalWrite(f,HIGH); if(DHT.temperature>=temp+6)digitalWrite(g,HIGH); if(DHT.temperature>=temp+7)digitalWrite(h,HIGH); if(DHT.temperature>=temp+8)digitalWrite(i,HIGH); if(DHT.temperature>=temp+9)digitalWrite(j,HIGH); if(DHT.temperature>=temp+10)digitalWrite(k,HIGH); if(DHT.temperature>=temp+11)digitalWrite(l,HIGH); delay(2000); goto refresh; } if (ack==1) { // This may be removed after testing. Serial.print("NO DATA"); Serial.print("\n\n"); // till here delay(500); digitalWrite(a,1); digitalWrite(b,1); digitalWrite(c,1); digitalWrite(d,1); digitalWrite(e,1); digitalWrite(f,1); digitalWrite(g,1); digitalWrite(h,1); digitalWrite(i,1); digitalWrite(j,1); digitalWrite(k,1); digitalWrite(l,1); refresh: delay(500); digitalWrite(a,0); digitalWrite(b,0); digitalWrite(c,0); digitalWrite(d,0); digitalWrite(e,0); digitalWrite(f,0); digitalWrite(g,0); digitalWrite(h,0); digitalWrite(i,0); digitalWrite(j,0); digitalWrite(k,0); digitalWrite(l,0); } }
دیدگاهها (0)