شِفر (کود) جستجو

کتابخانه و شِفر (کود) آردوینو برای نمایشگر LCD2004 با I2C

کتابخانه و شِفر (کود) آردوینو برای نمایشگر LCD2004 با I2C

در این آموزش به بررسی نحوه استفاده از نمایشگر LCD2004 با ارتباط I2C می‌پردازیم. این تنظیم به شما امکان می‌دهد متن را روی چهار خط نمایش دهید و آن را برای کاربردهای مختلف ایده‌آل می‌کند. ما سیم‌کشی مورد نیاز، قطعه‌های شِفر (کود) و روش پیاده‌سازی مؤثر این قابلیت را پوشش خواهیم داد.

ما از کتابخانه LiquidCrystal_I2C برای مدیریت نمایشگر LCD استفاده خواهیم کرد. این کتابخانه با مدیریت ارتباط I2C تعامل با LCD را برای شما ساده می‌کند. برای درک جامع، حتماً ویدئو را برای راهنمایی تصویری تماشا کنید (در ویدئو، در :00).

سخت‌افزار به زبان ساده

جزء اصلی این پروژه نمایشگر LCD2004 است که دارای 20 ستون و 4 ردیف برای خروجی متن می‌باشد. این نمایشگر از طریق I2C ارتباط برقرار می‌کند، که در مقایسه با اتصالات موازی سنتی نیاز به خطوط اتصال کمتری دارد. این باعث می‌شود که برای پروژه‌هایی که دسترسی به پایه‌های آردوینو محدود است مناسب باشد.

رابط I2C از دو خط استفاده می‌کند، SDA (خط داده) و SCL (خط ساعت)، که به پایه‌های مربوطه روی آردوینو متصل می‌شوند. نمایشگر LCD همچنین به اتصالات تغذیه و زمین نیاز دارد. در این پیکربندی، نمایشگر را به یک منبع تغذیه 5V متصل می‌کنیم که می‌تواند مستقیماً از آردوینو تأمین شود.

جزئیات دیتاشیت

تولیدکنندهعمومی
شماره قطعهLCD2004
ولتاژ منطق/ورودی-خروجی5 ولت
ولتاژ تغذیه۵ ولت
جریان خروجی (برای هر کانال)معمولاً 20 mA
جریان پیک (برای هر کانال)معمولاً 40 mA
راهنمای فرکانس PWMقابل اعمال نیست
آستانه‌های سطح منطقی ورودی0.3 Vcc (سطح پایین)، 0.7 Vcc (سطح بالا)
افت ولتاژ روی RDS(روشن)/ اشباعمعمولاً 0.2 V
محدودیت‌های حرارتی0°C تا 50°C
بستهال‌سی‌دی استاندارد 4x20
یادداشت‌ها / واریانت‌هابا گزینه‌های مختلف نور پس‌زمینه موجود است.

  • برای جلوگیری از آسیب، از منبع تغذیه مناسب اطمینان حاصل کنید.
  • در صورت لزوم از مقاومت‌های پول‌آپ روی خطوط SDA و SCL استفاده کنید.
  • آدرس I2C را بررسی کنید؛ معمولاً برای این نمایشگر 0x27 است.
  • برای کاهش تداخل، اتصالات را کوتاه نگه دارید.
  • قبل از بارگذاری شِفر (کود)، اطمینان حاصل کنید که کتابخانه به درستی نصب شده است.

دستورالعمل‌های سیم‌کشی

برای سیم‌کشی نمایشگر LCD2004 با I2C به آردوینو، اتصالات زیر را دنبال کنید:

  • متصل کنیدVCCپایه LCD به5Vپایه روی آردوینو.
  • متصل کنیدGNDپایهِ LCD به aGNDپایه روی آردوینو.
  • متصل کنیدSDAپایهِ ال‌سی‌دی بهA4پایه روی آردوینو.
  • وصل کنیدSCLپایه ال‌سی‌دی بهA5پایه روی آردوینو.

اگر برد آردوینو شما پایه‌های I2C متفاوتی دارد، حتماً اتصالات را مطابق آن تنظیم کنید. ویدئو همچنین یک پیکربندی سیم‌کشی جایگزین را نشان می‌دهد (در ویدئو در 01:30).

نمونه‌های شِفر (کود) و راهنمای گام‌به‌گام

بیایید نگاهی به یک مثال ساده دربارهٔ مقداردهی اولیهٔ LCD و نمایش یک پیام بیندازیم. قطعهٔ شِفر (کود) زیر LCD را راه‌اندازی می‌کند و "Hello, world!" را روی صفحه چاپ می‌کند.

lcd.begin(); // Initialize the LCD
lcd.backlight(); // Turn on the backlight
lcd.print("Hello, world!"); // Display message

این شِفر (کود) نمایشگر LCD را راه‌اندازی کرده و نور پس‌زمینه را روشن می‌کند. سپس پیام را در سطر اول LCD نمایش می‌دهد. نور پس‌زمینه برای دیده‌شدن در شرایط کم‌نور ضروری است.

در ادامه، یک مثال پیچیده‌تر را بررسی خواهیم کرد که داده‌های پویا مانند قرائت‌های ولتاژ را نمایش می‌دهد.

lcd.setCursor(0,0); // Set cursor to the first line
lcd.print("Voltage: "); // Display voltage label
float v = 8.254; // Example voltage value
lcd.print(v); // Print voltage value

در این بخش، موقعیت کرسر را روی خط اول قرار می‌دهیم و یک برچسب ولتاژ چاپ می‌کنیم که در پی آن مقدار واقعی ولتاژ می‌آید. این امکان را به شما می‌دهد که اندازه‌گیری‌های بلادرنگ را به‌صورت کاربرپسند نمایش دهید.

برای افزودن قابلیت‌های بیشتر، می‌توانید ورودی سریال را پیاده‌سازی کنید تا به کاربران اجازه دهید کاراکترها را از طریق نمایشگر مسلسل وارد کرده و آنها را روی LCD نمایش دهند.

if (Serial.available()) { // Check for serial input
  lastChar = Serial.read(); // Read the last character
  lcd.write(lastChar); // Display character on LCD
}

این شِفر (کود) بررسی می‌کند که آیا داده‌ای روی پورت سریال در دسترس است یا خیر. اگر چنین باشد، آخرین خصیصه وارد شده را می‌خواند و آن را روی نمایشگر LCD نشان می‌دهد. این تعامل تجربه کاربری را با امکان نمایش‌های پویا بر اساس ورودی کاربر بهبود می‌بخشد.

برای مشاهدهٔ شِفر (کود) کامل، لطفاً به برنامهٔ کامل بارگذاری‌شده در پایینِ مقاله مراجعه کنید.

نمایش / آنچه باید انتظار داشته باشید

وقتی شِفر (کود) را اجرا می‌کنید، باید پیام اولیه روی LCD نمایش داده شود و سپس خوانش‌های ولتاژ و هر کاراکتری که از طریق نمایشگر مسلسل وارد شده است را ببینید. مطمئن شوید اتصالات محکم هستند تا از هرگونه مشکل نمایش جلوگیری شود. اگر LCD چیزی نشان نداد، سیم‌کشی و آدرس I2C را دوباره بررسی کنید (در ویدیو در 02:15).

تصاویر

LCD2004_display-3
LCD2004_display-3
LCD2004_display-1
LCD2004_display-1
LCD2004_display-2
LCD2004_display-2
121-Arduino code for LCD2004 with I2C: Hello World sketch
زبان: C++
/*
 *  Download library: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
 *  
 *  Updated by Ahmad Shamshiri on July 8, 2018 at 19:14 in Ajax, Ontario, Canada
 * for Robojax.com
 * Get this code from Robojax.com
 * Watch video instructions for this code at: https://youtu.be/DKmNSCMPDjE
 * 
 */
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 20 chars and 4 line display
LiquidCrystal_I2C lcd(0x27, 20, 4);

void setup()
{
	// initialize the LCD
	lcd.begin();

	// Turn on the backlight and print a message.
	lcd.backlight();
	lcd.print("Hello, world!");
}

void loop()
{
	// Do nothing here...
}
122-Arduino code for LCD2004 with I2C RoboJax custom sketch
زبان: C++
/*
 * 
 * *  Download library: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
 * This code is basic usage of an LCD2004 display with I2C.
 * It will display text in 4 lines, each with 20 characters.
 * It displays multiple float values and text on the same line.
 * 
 * 
 * 
 * Updated by Ahmad Shamshiri on July 08, 2018 at 09:20 in Ajax, Ontario, Canada
 * for Robojax.com
 * Get this code from Robojax.com
 * Watch video instructions for this code at: https://youtu.be/DKmNSCMPDjE
 * 

 */

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 20 chars and 4 line display
LiquidCrystal_I2C lcd(0x27, 20, 4);

void setup() {

  // initialize the LCD, 
  lcd.begin();
  // Turn on the backlight and print a message.
  lcd.backlight();
  lcd.clear();
   lcd.setCursor (0,0); //
   lcd.print("Robojax LCD2004 Test"); 
   lcd.setCursor (0,1); //   
 
   lcd.print("Please Wait - 3");  
   lcd.setCursor (0,1); // 
   delay(1000);        
   lcd.print("Please Wait - 2");  
   delay(1000); 
   lcd.setCursor (0,1); //      
   lcd.print("Please Wait - 1");  
   delay(1000);       
}

void loop() {

    // Robojax.com LCD2004 with I2C custom code
  lcd.clear();// clear previous values from screen
  lcd.setCursor (0,0); //character zero, line 1
  lcd.print("LCD2004 I2C Example"); // print text  

  lcd.setCursor (4,1); //character 4, line 2
  lcd.print("Robojax.com"); // print text   

  lcd.setCursor (0,2); //character 0, line 3
  lcd.print("Voltage: "); // print text 
  float v = 8.254;// define or get voltage
  char VoltageStr[5];
  dtostrf(v, 5, 3, VoltageStr );
  lcd.setCursor (9,2); //character 9, line 3  
  lcd.print(VoltageStr); // print voltage
  lcd.setCursor (14,2); //character 14, line 3
  lcd.print("V"); // print V at the end of voltage  

  lcd.setCursor (0,3); //character 0, line 4
  lcd.print("X: "); // print x
  float xdeg = -123.87;// define or get x degree (just example)
  lcd.setCursor (3,3); //character 8, line 3  
  lcd.print(xdeg); // print xdeg value

  
  lcd.setCursor (12,3); //character 12, line 4
  lcd.print("Y: "); // print Y
  float ydeg = 32.8;// define or get y degree (just example)
  lcd.setCursor (15,3); //character 15, line 4  
  lcd.print(ydeg); // print ydeg value
      
                     
   delay(100);

}// loop end
123-Arduino code for LCD2004 with I2C: blinking sketch
زبان: C++
/*
 * 
 *  Download library: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
 * This code is basic usage of an LCD2004 display with I2C 
 * It will display a blinking cursor on the screen 
 * 

 * Get this code from Robojax.com
 * Watch video instructions for this code at: https://youtu.be/DKmNSCMPDjE
 * 

 */
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 20 chars and 4 line display
LiquidCrystal_I2C lcd(0x27, 20, 4);

void setup()
{
	// initialize the LCD
	lcd.begin();
}

void loop()
{
	bool blinking = true;
	lcd.cursor();

	while (1) {
		if (blinking) {
			lcd.clear();
			lcd.print("No cursor blink");
			lcd.noBlink();
			blinking = false;
		} else {
			lcd.clear();
      lcd.setCursor(0,1);
      lcd.print("Your name: ");
      lcd.blink();
			blinking = true;
		}
		delay(4000);
	}
}
124-Arduino code for LCD2004 with I2C serial monitor sketch
زبان: C++
/*
 * 
 *  Download library: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
 * This code is basic usage of an LCD2004 display with I2C.
 * This code will allow you to enter a character on the serial monitor and display it on the screen.
 * 

 * Updated by Ahmad Shamshiri on July 08, 2018 at 09:20 in Ajax, Ontario, Canada
 * for Robojax.com
 * Get this code from Robojax.com
 * Watch video instructions for this code at: https://youtu.be/DKmNSCMPDjE
 * 
 */
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 20 chars and 4 line display
LiquidCrystal_I2C lcd(0x27, 20, 4);

char lastChar ='_';
void setup()
{
	lcd.begin();
	lcd.backlight();
  lcd.print("Robojax.com Test");
	// Initialize the serial port at a speed of 9600 baud
	Serial.begin(9600);
}

void loop()
{

      lcd.clear();
      lcd.setCursor(0,1);
      lcd.print("Enter Letter: ");

      lcd.setCursor(13,1);  
	// If characters arrived over the serial port...
	if (Serial.available()) {
		// Wait a bit for the entire message to arrive
		delay(100);


		// Write all characters received via the serial port to the LCD.
		while (Serial.available() > 0) {
      lastChar =Serial.read();
      Serial.print("Entered: ");
      Serial.println(lastChar);
		}//while end
	}// if end

  lcd.write(lastChar);// display last entered character
  delay(1000);


}// loop end

منابع و مراجع

فایل‌ها📁

کتابخانه‌های آردوینو (zip)