در این آموزش با استفاده از ساعت دیجیتال PCF8563 و سنسور دماسنج/رطوبت سنج دیجیتال DHT11، برد آردوینو (مگا یا اونو) و شیلد نمایشگر ۱۶۰۲ (یا هر مدل دیگر از نمایشگر کاراکتری ۱۶ در ۲) یک ساعت دیجیتال با قابلیت نمایش روز/ماه/سال ساعت:دقیقه:ثانیه دما و رطوبت را روی نمایشگر و پورت سریال خواهیم ساخت. آموزش به صورت ساده و مقدماتی نوشته شده است و برای همگان قابل اجرا خواهد بود.
قطعات لازم
-برد آردوینو مگا یا اونو
-ماژول ساعت دیجیتال PCF8563
-شیلد نمایشگر کاراکتری ۱۶۰۲ یا هر مدل دیگری از این نمایشگر
-سنسور دماسنج/رطوبت سنج دیجیتال DHT11 یا DHT21 یا DHT22
نحوه ی اتصال قطعات به آردوینو
شیلد نمایشگر به راحتی روی برد قرار خواهد گرفت، درصورتی که از خود نمایشگر بجای شیلد استفاده می کنید از روی اسکچ ارائه شده پین های نمایشگر خود را به درستی انتخاب کنید. ماژول ساعت دیجیتال PCF8563 از طریق پروتکل I2C متصل خواهد شد. برای برد مگا پین SDA به پین ۲۰ و پین SCL به پین ۲۱ و برای برد اونو پین SDA به پین A4 و پین SCL به پین A5 متصل خواهد شد. برای سنسور های DHT پین دیجیتال را به پین ۱۵ متصل نمایید یا از داخل اسکچ پورت مناسبی را انتخاب کنید.
کتابخوانه ها و اسکچ آردوینو
در ابتدا دو کتابخوانه ی PCF8563 و TroykaDHT را دانلود و به نرم افزار آردوینوی خود اضافه کنید. سپس یک بار برنامه ی آردوینو را ری استارت کرده و اسکچ زیر را بارگذاری و روی برد خود آپلود کنید.
/* AK Digital Clock & Digital Temperature and Humidity with PCF8563 & DHT11 */ //فراخوانی کتابخوانه های لازم #include <LiquidCrystal.h> #include <PCF8563.h> #include <TroykaDHT.h> //تنظیم پین های نمایشگر LCD LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //شروع ساعت دیجیتال PCF8563 pcf; //راه اندازی سنسور دماسنج و رطوبت سنج DHT روی پین ۱۵ دیجیتال DHT dht(15, DHT11); // در قسمت Setup مواردی را تعریف می کنیم که با شروع فعالیت برد نیامند آن ها هستیم. void setup() { Serial.begin(9600); lcd.begin(16, 2); pcf.init(); pcf.startClock(); dht.begin(); } // در قسمت Loop مواردی را تعریف می کنیم که پس از شروع کار برد نیازمند تکرار آن ها هستیم. void loop() { lcd_print(); serial_print(); delay(1000); } //نمایش مقادیر ساعت دیجیتال و سنسور دیجیتال روی نمایشگر void lcd_print() { //بازخوانی ساعت از ماژول ساعت دیجیتال Time nowTime = pcf.getTime(); //شروع خط اول نمایشگر lcd.setCursor(0, 0); if (nowTime.day < 10) { lcd.print("0"); } //نمایش روز lcd.print(nowTime.day); lcd.print("/"); if (nowTime.month < 10) { lcd.print("0"); } //نمایش ماه lcd.print(nowTime.month); lcd.print("/"); lcd.print("20"); //نمایش سال lcd.print(nowTime.year); lcd.print(" "); if (nowTime.hour < 10) { lcd.print("0"); } //نمایش ساعت lcd.print(nowTime.hour); lcd.print(":"); if (nowTime.minute < 10) { lcd.print("0"); } //نمایش دقیقه lcd.print(nowTime.minute); //شروع خط دوم نمایشگر lcd.setCursor(0, 1); //بازخوانی دما و روطوب از سنسور DHT dht.read(); lcd.print("Temp="); //نمایش دما lcd.print(dht.getTemperatureC(),0); lcd.print("\337"); lcd.print("C Hu="); //نمایش رطوبت lcd.print(dht.getHumidity(),0); lcd.print("%"); } //نمایش مقادیر ساعت دیجیتال و سنسور دیجیتال روی پورت سریال void serial_print() { //بازخوانی ساعت از ماژول ساعت دیجیتال Time nowTime = pcf.getTime(); //نمایش روز Serial.print(nowTime.day); Serial.print("/"); //نمایش ماه Serial.print(nowTime.month); Serial.print("/"); //نمایش سال Serial.print(nowTime.year); Serial.print(" "); //نمایش ساعت Serial.print(nowTime.hour); Serial.print(":"); //نمایش دقیقه Serial.print(nowTime.minute); Serial.print(":"); Serial.println(nowTime.second); //بازخوانی دما و روطوب از سنسور DHT dht.read(); //نمایش دما Serial.print("Temperature = "); Serial.print(dht.getTemperatureC()); Serial.print(" "); //نمایش رطوبت Serial.print("Humidity = "); Serial.print(dht.getHumidity()); Serial.println(" %"); }
سلام
آیا میشه این آموزش رو(کد برنامه نویسیش رو)برای lcdکاراکتری معمولی(بدون شیلد و ماژول مبدل و…)بزارید
و اینکه برای تبدیل تاریخ میلادی به شمسی باید چه کرد؟
کلیه ی نمایشگر های LCD کاراکتری 1602 با همین کد قابل راه اندازی هستند، کافیست پین های متصل شده به نمایشگر با پین های ست شده در اسکچ یکسان باشد. برای تبدیل تاریخ میلادی به شمسی از کتابخانه ی JDate استفاده کنید.
ببخشید میشه دقیق تر توضیح بدین چون من هیچی از برنامه نویسی آردوینو نمیدونم(هنوز یاد نگرفتم)
توضیحات بنده مشکل دقت نداره که بخوام دقیق تر توضیح بدم. برنامه نویسی رو شروع کنید، حداقل مباحث ابتدایی رو یاد بگیرید. توضیحات من قابل فهم و درک خواهد شد.