نحوه ی اتصال LCD به آردوینو و برنامه نویسی آن از مواردی است که در این قسمت به آن پرداخته شده است. همچنین با انجام یک پروژه و استفاده از سنسور دمای DS18B20، دمای محیط را اندازه می گیریم. و بر روی LCD نمایش می دهیم.
LiquidCrystal
برای استفاده از LCD اول از همه باید کتابخانه ی آن را فرا خوانی کنیم. بعد از آن باید یک شئ از کلاس آن تعریف کنیم. که به این صورت عمل می کنیم.
LiquidCrystal mylcd(rs, rw, enable,d0, d1, d2, d3, d4, d5, d6, d7);
برای تعریف شئ خودمان به این طریق عمل می کنیم. هر کدام از پایه های LCD را به هر پین از آردوینو می خواهیم اتصال دهیم. شماره آن پین را جای آن می نویسیم.
اتصال پایه ی RW اختیاری می باشد. اگر از چهار پایه ی D4, D5, D6, D7 استفاده می کنیم. فقط شماره پین های آن را می نویسیم. دیگر احتیاجی به نوشتن D0, D1, D2, D3 نمی باشد.
;lcd.begin(Col,Row)
با این دستور LCD خود را نصب می کنیم. من در اینجا از MyLCD استفاده کرده ام که متوجه باشید که انتخاب اسم شئ به سلیقه ی ما است. در پرانتز باید سایز LCD خود را مشخص کنیم. این دستور باید قبل از بقیه دستورات LCD نوشته شود.
mylcd.begin(16,2);
;()lcd.print
برای نشان دادن یک رشته یر روی LCD از این تابع استفاده می شود. توجه داشته باشید که رشته متشکل از چندین کارکتر می باشد که بین دو تا ” “ قرار گرفته است.
mylcd.print("sobhan Movassagh");
;lcd.createChar(num,Byte Val)
این تابع برای ما یک کاراکتر می سازد. طریقه ی کار به این صورت است که اول یک آرایه هشت تایی از نوع بایت تعریف می کنیم. سپس به به هر بایت آن به صورت باینری عددی را اختصاص می دهیم. همان طور که در برنامه می بینید هر بیتی را به صورت یک ذخیره می کنیم یک پیکسل در LCD روشن می شود.
بعد از طریق همین تابع به آرایه ی خودمون یک عدد می دهیم. یعنی آرایه ای را که برای کارکتر خودمان ساخته ایم را از این به بعد با یک شماره صدا می زنیم. توجه داشته باشید که هشت کارکتر بیشتر نمی توانید ایجاد کنید و عددی که به آن نسبت می دهید از صفر تا هفت می تواند باشد.
;()lcd.Write
با این تابع می توانید یک کارکتر را بر روی LCD نشان بدهید. در پرانتز این تابع عدد اسکی کارکتر را می نویسیم. همچنین می توانیم از این تابع برای نوشتن هشت کارکتری که با تابع قبل ایجاد کردیم، با نوشتن عدد مربوط به آن – که از صفر تا هفت است – استفاده کنیم. همچنین دستوراتی که عدد اسکی به ما بر میگردانند را می توانیم داخل این پرانتز قرار دهیم.
lcd.Write(read.Serial());
در این فیلم از یک سنسور دمایی طریقه ی ارتباط آن با I2C است، استفاده می کند. ولی ما از DS18B20 استفاده می کنیم.
بعدا در یک مطلب دیگر به شرح دستورات کتابخانه DallasTemperature.h خواهیم پرداخت. فقط بدانید که این کتابخانه برای استفاده از سنسورهای DS18B20, DS18S20, DS1822, DS1820 می باشد و استفاده از آن بسیار راحت است.
برای آشنایی با سنسور دمای DS18B20 به این مطلب مراجعه کنید.
خواندن دما از سنسور DS18B20 و نشان دادن آن بر روی LCD:
/********************************************************************/ // First we include the libraries #include <OneWire.h> #include <DallasTemperature.h> #include <LiquidCrystal.h> /********************************************************************/ // Data wire is plugged into pin 10 on the Arduino #define ONE_WIRE_BUS 10 /********************************************************************/ // Setup a oneWire instance to communicate with any OneWire devices // (not just Maxim/Dallas temperature ICs) OneWire oneWire(ONE_WIRE_BUS); /********************************************************************/ // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); /********************************************************************/ LiquidCrystal lcd(2,3,4,5,6,7); /********************************************************************/ //Create Character byte sotoon1[8] = { B10000, B10000, B10000, B10000, B10000, B10000, B10000, B10000 }; byte sotoon2[8] = { B11000, B11000, B11000, B11000, B11000, B11000, B11000, B11000 }; byte sotoon3[8] = { B11100, B11100, B11100, B11100, B11100, B11100, B11100, B11100 }; byte sotoon4[8] = { B11110, B11110, B11110, B11110, B11110, B11110, B11110, B11110 }; byte sotoon5[8] = { B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111 }; byte daraje[8] = { B01100, B10010, B10010, B01100, B00000, B00000, B00000, B00000 }; /********************************************************************/ void setup(void) { /********************************************************************/ lcd.createChar(0,sotoon1); lcd.createChar(1,sotoon2); lcd.createChar(2,sotoon3); lcd.createChar(3,sotoon4); lcd.createChar(4,sotoon5); lcd.createChar(5,daraje); /********************************************************************/ // start LCD lcd.begin(16,2); // start serial port Serial.begin(9600); /********************************************************************/ //Wellcoming Serial.println("-----Temperature System-----"); lcd.setCursor(0,0); lcd.print("---TempSystem---"); /********************************************************************/ for(int i=0;i<16;i++) { for(int j=0;j<5;j++) { lcd.setCursor(i,1); lcd.write(j); delay(100); } } lcd.setCursor(0,1); lcd.print(" "); /********************************************************************/ // Start up the library sensors.begin(); } void loop(void) { // call sensors.requestTemperatures() to issue a global temperature // request to all devices on the bus /********************************************************************/ Serial.println(); Serial.print(" Requesting temperatures..."); sensors.requestTemperatures(); // Send the command to get temperature readings Serial.println("DONE"); /********************************************************************/ Serial.print("Temperature is: "); Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"? // You can have more than one DS18B20 on the same bus. // 0 refers to the first IC on the wire lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,0); lcd.print("Temp Out= "); lcd.print(sensors.getTempCByIndex(0)); lcd.write(5); delay(2000); }
نحوه ی اتصال LCD به آردوینو:
در ادامه می توانید فیلم آموزشی را مشاهده کنید:
دیدگاه ها :