Aduino Tutorial آموزش آردوینو

آردوینو (قسمت سیزدهم) – LCD

            نحوه ی اتصال 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 به آردوینو:

LCD Arduino

LCD Arduino

در ادامه می توانید فیلم آموزشی را مشاهده کنید:

 

دیدگاه ها :

من بات نیستم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *