انجمن های گفتگوی روبوایکیو

لطفا به سیستم وارد یا ثبت‌نام کنید.

لطفا برای ورود نام کاربری و رمز عبورتان را وارد نمایید

لطفا برای استفاده بهتر از انجمن، ثبت نام کنید!

نویسنده موضوع: LCD 2*16 با آردوینو و فونت متفاوت  (دفعات بازدید: 1558 بار)

0 کاربر و 1 مهمان درحال دیدن موضوع.

آفلاین mehdijjc

  • کاربر جدید
  • *
  • ارسال: 3
  • امتیاز: 0
    • ديدن مشخصات
LCD 2*16 با آردوینو و فونت متفاوت
« : 13 تیر, 1396, 02:26:58 »
سلام

دوستان من میخوام یه ال سی دی 2 در 16 رو با فونت خودم برنامه نویسی کنم .
ازنرم افزار GLCD Font Creator استفاده کردم ولی نمیدونم باید چطور از خروجیش توی نرم افزار آردوینو استفاده کنم .

توی اینترنتم یکم گشتم و یه کد که تا حدودی به چیزی که میخوام شبیه هست رو پیدا کردم .
فقط مشکلش اینه که خیلی طولانی و برای هر کاراکتر باید یه فونت باینری درست کنی .

کد : /* in the name of god
 
 Made by Michael Pilcher at 2/9/2010
 Edited by Me at 2017
 
 */

// include the library
#include <LiquidCrystal.h>

// initialize the interface pins
LiquidCrystal lcd(12,11,5,4,3,2);
int x = 0;
// the 8 arrays that form each segment of the custom numbers
byte LT[8] =
{
  B00111,
  B01111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};
byte UB[8] =
{
  B11111,
  B11111,
  B11111,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000
};
byte RT[8] =
{
  B11100,
  B11110,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};
byte LL[8] =
{
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B01111,
  B00111
};
byte LB[8] =
{
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
  B11111
};
byte LR[8] =
{
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11110,
  B11100
};
byte UMB[8] =
{
  B11111,
  B11111,
  B11111,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111
};
byte LMB[8] =
{
  B11111,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
  B11111
};



void setup()
{
  // assignes each segment a write number
  lcd.createChar(8,LT);
  lcd.createChar(1,UB);
  lcd.createChar(2,RT);
  lcd.createChar(3,LL);
  lcd.createChar(4,LB);
  lcd.createChar(5,LR);
  lcd.createChar(6,UMB);
  lcd.createChar(7,LMB);

  // sets the LCD's rows and colums:
  lcd.begin(0, 2);

}

void custom0O()
{ // uses segments to build the number 0
  lcd.setCursor(x, 0);
  lcd.write(8); 
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(x, 1);
  lcd.write(3); 
  lcd.write(4); 
  lcd.write(5);
}

void custom1()
{
  lcd.setCursor(x,0);
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(x+1,1);
  lcd.write(255);
}

void custom2()
{
  lcd.setCursor(x,0);
  lcd.write(6);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(x, 1);
  lcd.write(3);
  lcd.write(7);
  lcd.write(7);
}

void custom3()
{
  lcd.setCursor(x,0);
  lcd.write(6);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(x, 1);
  lcd.write(7);
  lcd.write(7);
  lcd.write(5);
}

void custom4()
{
  lcd.setCursor(x,0);
  lcd.write(3);
  lcd.write(4);
  lcd.write(2);
  lcd.setCursor(x+2, 1);
  lcd.write(255);
}

void custom5()
{
  lcd.setCursor(x,0);
  lcd.write(255);
  lcd.write(6);
  lcd.write(6);
  lcd.setCursor(x, 1);
  lcd.write(7);
  lcd.write(7);
  lcd.write(5);
}

void custom6()
{
  lcd.setCursor(x,0);
  lcd.write(8);
  lcd.write(6);
  lcd.write(6);
  lcd.setCursor(x, 1);
  lcd.write(3);
  lcd.write(7);
  lcd.write(5);
}

void custom7()
{
  lcd.setCursor(x,0);
  lcd.write(1);
  lcd.write(1);
  lcd.write(2);
  lcd.setCursor(x+1, 1);
  lcd.write(8);
}

void custom8()
{
  lcd.setCursor(x,0);
  lcd.write(8);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(x, 1);
  lcd.write(3);
  lcd.write(7);
  lcd.write(5);
}

void custom9()
{
  lcd.setCursor(x,0);
  lcd.write(8);
  lcd.write(6);
  lcd.write(2);
  lcd.setCursor(x+2, 1);
  lcd.write(255);
}







void numbers()
{
  custom0O();    // displays custom 0 on the LCD
  x = x + 4;    // sifts cursor over 4 columns
  custom1();
  x = x + 4;
  custom2();
  x = x + 4;
  custom3();
  x = x + 4;
  custom4();
  x = x + 4;
  custom5();
  x = x + 4;
  custom6();
  x = x + 4;
  custom7();
  x = x + 4;
  custom8();
  x = x + 4;
  custom9();
  delay(500);
}



void loop()
{

  numbers();
  for (int positionCounter = 0; positionCounter < 24; positionCounter++) {
    lcd.scrollDisplayLeft();
    delay(500);
  }
  x = 0;
  lcd.clear();
  delay(500);
}



من دنبال یه Library هستم که شبیه به پیشفرض خود آردوینو باشه ولی فونتش فرق داشته باشه یا زبان عربی و فارسی رو ساپورت کنه . لطفا راهنماییم کنید .

آفلاین مسئول فنی

  • مدیر سایت
  • یه دنگ از سایت به نامشه
  • *****
  • ارسال: 1669
  • امتیاز: 650
    • ديدن مشخصات

آفلاین mehdijjc

  • کاربر جدید
  • *
  • ارسال: 3
  • امتیاز: 0
    • ديدن مشخصات
پاسخ : LCD 2*16 با آردوینو و فونت متفاوت
« پاسخ #2 : 14 تیر, 1396, 04:13:28 »
خیلی ممنون ، قبلا از این سایت بازدید کرده بودم ، در واقع مشکل من این هست که توی این کد یا کدی که بالا گذاشتم ما فقط قادریم 8 تا فونت ( کاراکتر ) بسازیم .
همینطور که میدونید LCD گرافیکی داری یک حافظه RAM هست که وقتی ما فونت ها رو میسازیم اونجا ذخیره میشن و فقط 8 ظرفیت داره که به کار من نمیاد .
البته فعلا زبان فارسی یا عربی برای کار من مهم نیست و فقط یه کتابخونه میخوام مثل خود آردوینو با یه فونت متفاوت .
یه مقدار هم در مورد ساخت کتابخانه آردوینو خوندم و اگر بشه همون  liquidcrystal خود آردوینو رو بیارم و فونت های داخلش رو ویرایش کنم خیلی بهتره .
البته من فکر میکنم فونت های پیش فرض داخل خود آی سی پشت ال سی دی هستن و قابلیت ویرایش ندارن ولی به نظر شما راه حل یا دستور یا تابعی نیست که من بتونم بیشتر از 8 فونت رو اضافه کنم یا فونت ها رو روی آردوینو ذخیره کنم ؟؟
« آخرين ويرايش: 14 تیر, 1396, 09:06:04 توسط mehdijjc »

آفلاین mehdijjc

  • کاربر جدید
  • *
  • ارسال: 3
  • امتیاز: 0
    • ديدن مشخصات
پاسخ : LCD 2*16 با آردوینو و فونت متفاوت
« پاسخ #3 : 17 تیر, 1396, 11:48:28 »
لطفا یکی راهنماییم کنه .