به نام خدا : تو این مطلب از سری مطالب پروژه آردوینو ، به درخواست و حمایت آقای Ali Ghahramani میخوام آموزش کار با نمایشگر KS0108 رو براتون بگم، و پروژه KS0108 با آردوینو رو براتون میزارم، و آموزش ساخت فونت برای نمایشگر KS0108 رو براتون میگم، آموزش ساخت عکس و نمایش در KS0108 رو براتون میگم، توابع کتابخونه KS0108 رو براتون توضیح میدم و بعدش برای هر تابع یه پروژه نمونه قرار میدم براتون >>>> آموزش نمایشگر گرافیکی ks0108 با arduino جلسه۱
آموزش نمایشگر گرافیکی ks0108 با arduino جلسه۱
داستان کربلا رفتن ما(قسمت۳) : تو راه نجف بودیم، سر یه چیزایی من از بچه ها جدا شدم، مسیر رو داشتم میرفتم که به دو راهی خوردم، مسیر اصلی نجف به کربلا رو داشتن تعمیر میکردن و اندازه جاده رو کوچیک کرده بودن برا بحث تعمیرات تا هم بتونن کار تعمیرات رو انجام بدن و هم مردم به پیاده رویشون ادامه بدن ولی چون اون جاده نصف شده کفاف این جمعیت رو نمیداد به همین خاطر یه راه دیگه هم ایجاد کرده بودن برای رسیدن به کربلا تا زائر ها راحت باشن، به همین خاطر میگم دو راحی کربلا، تقریبا این دو راهی تو حدودای عمود ۱۱۰۰ بود فک کنم، دقیقا خاطرم نیست، ۱۴۰۰ فک میکنم میشد حرم حضرت عباس ع ، یه چیز تو این مایه ها، دقیقش رو خاطرم نیست، این مسیر نجف تا کربلا کلی عمود(همون تیر برق خودمون^_^) داشت – حدودا هر ۵۰ متر یه عمود بود(اندازش رو حدودی دارم میگم) و بین نجف تا حرم حضرت عباس ع حدودا ۱۴۰۰ تا علم بود یعنی ۷۰ کیلومتر (حالا خدا فقط میدونه این آماری که من دارم میدم چقدر دقیق هستش!!! ^_^) – میگفتم آقا ما از بچه ها جدا شده بودم و سر دو راهی موندم از کدوم طرف برم، با بچه ها هماهنگ کردم و من سر همون دو راهی موندم تا بچه ها بهم برسن، رفتم تو یه موکبی و نشستم تا استراحتی کنم تا بچه ها برسن، ما هم که آدمی نیستیم که ساکت یه گوشه بشینیم^_^، یه عربستانی اومد پیشم نشست، یکم باهاش حرف زدم (حالا من نه زبون اونو بلدم و نه اون زبون منو، خودتون یه بار اگه رفته باشید کربلا میدونید که من چطوری با اینا صچبت میکردم، حالا شده به کمک ایما اشاره، عکس، و هر چیزی که فک کنید^_^ حتی مترجم گوگلO_o) بهش با پانتومیم(همون نشون دادن منظورم با حرکات بدنم) گفتم تو عربستان شما شیعه ها رو سر میبرید، گفت نه نه نه، ما هم خندیدیم(چون طرف خودش شیعه بود^_^)، بعد یه چند نفری اومدن کنارم نشستن، از بچه های "کتاب حزب الله" عراق بودن فک کنم یا "حزب الله در عراق" دقیقا خاطرم نیست کدومش بودن، چون پرچمشون "کتاب حزب الله" بود ولی کارت شناساییشون رو که ازشون گرفتم نوشته بود "حزب الله در عراق" زیرش هم امضای سید حسن نصرالله بود، بهشون با کلی زور و زحمت گفتم میخوام تو گروهتون عضو بشم، آخر سر بعد کلی حرف زدن بهم گفتن از طریق تلگرام خبرت میکنیم، ولی نامردا تا الان هم خبر نکردن(این میشه تجربه که به حرف آدم نظامی جماعت نباید زیاد اعتماد کرد، چون به احتمال زیاد میخوان بپیچوننت، تو ایران هم همین طور هستش، به اندازه موهای سرتون پیچیده شدم که دارم میگم^_^)، نماز رو خودم و بعد بچه ها بهم رسیدن، یکی از بچه ها ترکش خورده بود بهش^_^؛ در اثر پیاده روی پاش تاول زده بود فک کنم، بنده خدا با پای پیاده اومده بود و ما با کفش O_o، بعد ۱۰ دقیقه استراحت، رفتیم یه موکب پیدا کردیم و شب اونجا موندیم.
مطالب مرتبط با KS0108 :
- پروژه AVR ساعت آنالوگ با نمایشگر KS0108
- پروژه ساعت دیجیتال با LCD گرافیکی
- زیباترین دماسنج با lcd گرافیکی نسخه۲
- زیباترین دماسنج با lcd گرافیکی
- کامل ترین پروژه اسیلوسکوپ به زبان C
- پروژه lcd گرافیکی به همراه آموزش کامل
- آموزش جامع کار با LCD گرافیکی جلسه دوم
- آموزش جامع کار با LCD گرافیکی جلسه سوم
- راه اندازی ks108 با at91sam7x256
توابع کتابخانه نمایشگر گرافیکی ks0108
خب در این قسمت به توضیح توابع و کلا کد نویسی نمایشگر گرافیکی KS0108 میپردازم.
دانلود کتابخانه نمایشگر گرافیکی ks0108 برای آردوینو
1 |
#include <openGLCD.h> |
برای استفاده از این نمایشگر در پروژتون باس فایل کتابخونه این نمایشگر رو در خط اول برنامه قرار بدید، تا بتونید از توابع این کتابخونه استفاده کنید و نمایشگر گرافیکی تون رو راه اندازی کنید.
1 |
GLCD.Init(glcd_device_mode); |
در شروع پروژه برا راه انداری کتابخونه باید این تابع رو فراخونی کنید(در اول تابع SETUP)، اون پارامتری که به تابع میدیم تعیین رنگ پس زمینه نمایشگر هستش، میتونید یکی از موارد زیر به به این تابع بدید(داخل پرانتز قرار بدید^_^) :
NON_INVERTED : رنگ پس زمینه سفید و چیزای دیگه سیاه نمایش داده میشن
INVERTED : رنگ پس زمینه سیاه و چیزای دیگه(متن، خط و...) به صورت سفید نمایش داده میشن
1 |
void SelectFont(Font_t font, uint8_t fgcolor=BLACK, FontCallback callback=ReadPgmData); |
این تابع برا انتخاب فونت متنی که میخوایم نشون بدیم هستش، این کتابخونه فونت های زیر رو داره(فقط حواستون باشه که اگه بخواین از همه فونت ها استفاده کنید ظرفیت حافظه میکرو پر میشه، این نکته رو در نظر بگیرید.)
توجه : تا برا متنی فونت تعیین نکنید و یا در اول پروژه یه فونت کلی تعریف نکنید متن نمایش داده نمیشود.
۳۹ فونت موجود به شرح زیر هستش که باید در مکان پارامتر اولی قرارشون بدید :
- Callibri11
- CalLite24
- cp437font8x8
- font8x8
- Roosewood22
- TimesNewRoman13_italic
- Verdana_digits_24
- Arial_bold_14
- Callibri11_bold
- Cooper19
- newbasic3x5
- TimesNewRoman13
- utf8font10x16
- Wendy3x5
- fixed_bold10x15
- Iain5x7
- Roosewood26
- TimesNewRoman16
- TimesNewRoman16
- Verdana12
- Arial14
- Callibri11_italic
- Cooper21
- fixednums7x15
- Callibri15
- Corsiva_12
- fixednums15x31
- lcdnums12x16
- System5x7
- TimesNewRoman16_bold
- Verdana12_bold
- CalBlk36
- Callibri14
- Cooper26
- fixednums8x16
- lcdnums14x24
- SystemFont5x7
- TimesNewRoman16_italic
- Verdana12_italic
- Callibri10
WHITE : رنگ متن سفید شده و رنگ پس زمینه سیاه
BLACK : رنگ متن سیاه شده و رنگ پس زمینه سفید
پارامتر سوم رو هم متوجه نشدم.
فیلم آموزشی ساخت فونت : خب برا بحث آموزش استفاده از فونت ها و ساخت فونت و یه سری چیزای کوچولو یه فیلم ضبط کردم که براتون برای دانلود میزارم تو سایت :
توجه مهم : به نظرم این کد فونت های آماده رو کپی کنید و در برنامه تون پیس کنید، انگار یه فونت جدید ساختین و اون کاراکتر های اضافی فونت رو حذف کنید تا هم حجم برنامه کم بشه و هم بتونید از تعداد فونت های بیشتری در برنامه استفاده کنید، مثلا برنامه شما نمایش ساعت هستش، حالا شما چه نیازی به کاراکتر ؟ خب معموله مثلا اعداد یا در بعضی حالات به یه سری حروف انگلیسی نیاز دارید، خب اگه کاراکتری رو نیاز نداشتید از مجموعه کاراکترهای فونت حذفش کنید تا حجم برنامه بیاد پایین و حافظه کمتری از میکرو اشغال کنه، و هم بتونید از فونت های بیشتری استفاده کنید.
سایت سازنده : نرم افزار ساخت فونت
دانلود نرم افزار ساخت فونت برای نمایشگر KS0108
آموزش ساخت فونت برای نمایشگر گرافیکی KS0108
تو آموزش بالا یه سری مقدمات رو گفتم و از یه نرم افزاری استفاده کردیم که باهاش همه جور فونتی نمی تونستیم بسازیم، ولی در فیلم آموزشی زیر یه نرم افزاری رو معرفی و استفاده میکنم که به کمکش همه جور فونتی میتونیم بسازیم - اول فیلم بالا رو ببینید و بعد این فیلم زیر رو ببینید :
توجه : اگه کسی نتونست فونتی رو بسازه و نمایش بده و یا اگه کسی شک داره به صحت فیلم بالا^_^ ، بگه تا فیلم بگیرم، البته بدبختی موبایل خودم ندارم باس رفیقم اومد خونمون ازش بگیرم و فیلم بگیرم و براتون بزارم تو این مطلب(دیگه چیکار کنم آخه) >>>> اینا ر ومیگم که مطمئن بشید آموزش بالا ۱۰۱% عملی هستش و اگه مشکلی باشه از شما هستش و باس ببینید کجا سوتی دادید
توجه : نرم افزار (Java Runtime Environment (JRE رو هم برید از نت دانلود کنید.
دانلود نرم افزار open GLCD Font Creator
دانلود فونت های پیکسلی
1 2 3 |
GLCD.print("DMF313.IR"); GLCD.println("DMF313.IR"); GLCD.Printf("DMF313.IR"); |
تابع اولی فقط متن رو نشون میده – ولی تابع دومی بعد از نمایش متن میره خط بعدی
تابع سومی هم اطلاعات رو از حافظه flash میخونه(اگه اشتباه نکنم.)
این تابع ها رو میشه به فرم های مختلفی استفاده کرد که در زیر میبینید
1 2 3 4 5 6 7 8 |
GLCD.println('A'); // نمایش یه کاراکتر GLCD.println(313.1); // این تابع اگه عددی صحیح بهش بدید یا عددی اعشاری، براتون نمایشش میده GLCD.println(313, DEC); // این تابع همانند تابع بالا هستش، فقط حواستون باشه فقط عدد صحیح به این تابع بدید GLCD.println(313, HEX); // اگه یه عدد صحیح به این تابع بدیم برامون عدد رو به فرم هگزا دسیمال نمایش میده GLCD.println(313, OCT); // اگه یه عدد صحیح به این تابع بدیم برامون عدد رو به فرم اکتا دسیمال نمایش میده GLCD.println(313, BIN); // اگه یه عدد صحیح به این تابع بدیم فرم باینری عدد رو برای ما نمایش میده GLCD.println(313.1234, 3); // نمایش یه عدد اعشاری با قابلیت تعیین تعداد ارقام اعشار GLCD.print("DMF313.IR"); // نمایش یه رشته |
1 |
GLCD.write('+'); |
1 |
GLCD.CursorTo(column, line); |
پارامتر اول هم ستون هستش(شمارش از ۰ شروع میشه) و دومی هم سطر نمایشگر(شمارش از ۰ شروع میشه)
1 |
void gText::CursorToXY( uint8_t x, uint8_t y) |
او دو تا پارامتر هم مختصات X و Y ایی هستش که متن ما از اون مکان شروع به نمایش میکنه.
1 |
void ClearScreen(uint8_t color = PIXEL_OFF); |
اگه نمایشگر در مد NON_INVERTED باشه :
WHITE : کل صفحه به رنگ سفید در میاد.
BLACK : کل صفحه به رنگ سیاه در میاد.
ولی اگه نمایشگر در مد INVERTED باشه چون همه چیز معکوس میشه لذا اگه WHITE قراربدید صفحه رو سیاه میکنه و BLACK صفحه رو سفید میکنه.
1 2 |
void DrawCircle(uint8_t xCenter, uint8_t yCenter, uint8_t radius, uint8_t color= PIXEL_ON); void FillCircle(uint8_t xCenter, uint8_t yCenter, uint8_t radius, uint8_t color= PIXEL_ON); |
xCenter و yCenter : مختصات x وy مرکز دایره.
Radius : شعاع دایره
Color : رنگ دایره رو تعیین میکنه این پارامتر، BLACK بزاری دایره سیاه رسم میشه و WHITE بزاری دایره سفید رسم میشه(نمایشگر در مد NON_INVERTED هستش)
ولی اگه نمایشگر در مد INVERTED باشه چون همه چیز معکوس میشه لذا اگه WHITE قراربدید صفحه رو سیاه میکنه و BLACK صفحه رو سفید میکنه.
1 2 |
void DrawEllipse(uint8_t xCenter, uint8_t yCenter, uint8_t xRadius, uint8_t yRadius, uint8_t color= PIXEL_ON(; void FillEllipse(uint8_t xCenter, uint8_t yCenter, uint8_t xRadius, uint8_t yRadius, uint8_t color= PIXEL_ON(; |
xCenter و yCenter : مختصات x وy مرکز لوزی
xRadius و yRadius : شعاع افقی و عمودی لوزی
Color : رنگ لوزی رو تعیین میکنه این پارامتر، BLACK بزاری لوزی سیاه رسم میشه و WHITE بزاری لوزی سفید رسم میشه(نمایشگر در مد NON_INVERTED هستش)
ولی اگه نمایشگر در مد INVERTED باشه چون همه چیز معکوس میشه لذا اگه WHITE قراربدید صفحه رو سیاه میکنه و BLACK صفحه رو سفید میکنه.
1 2 |
void DrawRect(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color= PIXEL_ON); void FillRect(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t color= PIXEL_ON); |
x و y : مختصات نقطه سمت چپ بالای ۴ ضلعی (مربع/مستطیل)
Width و height : طول و عرض ۴ ضلعی ما(مربع/مستطیل)
color: رنگ ۴ ضلعی رو تعیین میکنه این پارامتر، BLACK بزاری لوزی سیاه رسم میشه و WHITE بزاری لوزی سفید رسم میشه(نمایشگر در مد NON_INVERTED هستش)
ولی اگه نمایشگر در مد INVERTED باشه چون همه چیز معکوس میشه لذا اگه WHITE قراربدید صفحه رو سیاه میکنه و BLACK صفحه رو سفید میکنه.
1 2 |
void DrawRoundRect(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t radius, uint8_t color= PIXEL_ON); void FillRoundRect(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t radius, uint8_t color= PIXEL_ON); |
این دو تابع برای رسم مربع تو خالی و تو پر با گوشه های قابل گرد شدن هستن
پارامترهاش که مثل تابع بالا هستش فقط یه پارامتری این دو تابع نسبت به دو تابع بالا اضافه تر دارن که در زیر توضیح میدم:
Radius : این پارامتر میزان گرد بودن گوشه های ۴ ضلعی ما رو تعیین میکند، که مقدارش از ۱ شروع میشه تا نصف طول و یا عرض یکم کمتر
1 |
void InvertRect(uint8_t x, uint8_t y, uint8_t width, uint8_t height); |
x و y : مختصات سمت چپ و بالای مربع
Width و height : طول و عرض ۴ ضلعی ما(مربع/مستطیل)
1 2 |
void DrawTriangle(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t x3, uint8_t y3, uint8_t color=PIXEL_ON); void FillTriangle(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t x3, uint8_t y3, uint8_t color=PIXEL_ON); |
x1 و y1 : اولین راس مثلث(همون طور که میدونید مثلث ۳ تا راس داره – اگه اشتباه نکنم بهش راس میگن، همون ۳ نقطه زاویه دار مثلث یا هر چی که اسمش رو بزارین)
x2 و y2 : دومین راس مثلث
x3 و y3 : سومین راس مثلث
Color : اینم صد دفه دربالا برای شونصد تا تابع توضیحش دادم، اینجا دیگه توضیح نمیدم، چون حسش نیست، کسی مشکلی داره؟ ^_^
1 |
void DrawLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t color= PIXEL_ON); |
x1 و y1 : مختصات راس اول خط(نمیدونم ولی فک کنم راس اشتباه باشه، حالا شما گیر ندید دیگه ^_^)
x2 و y2 : مختصات راس دوم خط
Color : به توابع بالا مراجعه کنید.
1 2 |
void DrawVLine(uint8_t x, uint8_t y, uint8_t height, uint8_t color= PIXEL_ON); void DrawHLine(uint8_t x, uint8_t y, uint8_t width, uint8_t color= PIXEL_ON); |
که باید در این حالت مختصات راس اول خط رو به تابع بدیم و بعد طول(عرض) خط رو تعیین کنیم.
تابع اولی : مختصات راس اول خط رو به تابع میدیم(پارامترهای xوy) و بعد ارتفاع خط رو به کمک پارامتر height تعیین میکنیم و بعد رنگ این خط رو به کمک پارامتر color تعیین میکنیم.
تابع دومی : با پارامترهای xوy راس اول خط رو تعیین کرده و با پارامتر width طول خط رو تعیین میکنیم و با color هم رنگ رو تعیین میکنیم.
1 |
void DrawHBarGraph(uint8_t x, uint8_t y, int width, int height, uint8_t border, int minval, int maxval, int curval); |
Xوy : مختصات شروع نمایش این نمودار
Width و height : طول عرض این نمودار
Border : میزان حاشه های دور این نمودار
Minval و maxval : مقدار مینیمم و ماکزیمم این نمودار
Curval : مقاداری که باید در این نمودار نمایش داده شود.(مثلا ۲۰% رو تو نودار عمودی نشون میدیم.)
1 |
void DrawVBarGraph(uint8_t x, uint8_t y, int width, int height, uint8_t border, int minval, int maxval, int curval); |
1 |
GLCD.SetDisplayMode(glcd_device_mode invert); |
NON_INVERTED : حالت عادی، رنگ سیاه سیاه و سفید سفید میمونه.
INVERTED : رنگ ها معکوس میشه؛ سیاه سفید میشه و سفید سیاه.
1 2 3 4 5 6 7 8 |
static const uint8_t Width = DISPLAY_WIDTH; // Display width in pixels static const uint8_t Height = DISPLAY_HEIGHT; // Display height in pixels static const uint8_t Left = 0; // Left most pixel x coordinate on Display (0 zero) static const uint8_t Right = DISPLAY_WIDTH-1; // Right most pixel x coordinate on Display (equals Width -1) static const uint8_t Top = 0; // Top most pixel y coordinate on Display (0 zero( static const uint8_t Bottom = DISPLAY_HEIGHT-1; // Bottom most pixel y coordinate on Display (equals Height -1) static const uint8_t CenterX = DISPLAY_WIDTH/2; // Horizontal center pixel on Display (equals Width/2) static const uint8_t CenterY = DISPLAY_HEIGHT/2; // Vertical center pixel on Display (equals Height/2) |
Width : طول نمایشگر رو نشون میده = ۱۲۸
Height : عرض نمایشگر رو نشون میده = ۶۴
Left : مختصات سمت چپ ترین پیکسل نمایشگر رو نشون میده = ۰
Right : مختصات سمت راست ترین پیکسل نمایشگر رو نشون میده = ۱۲۷
Top : مختصات بالاترین پیکسل نمایشگر رو نشون میده = ۰
Bottom : مختصات پایین ترین پیکسل نمایشگر رو نشون میده = ۶۳
CenterX : مختصات x مرکز صفحه نمایش رو میده = ۶۴
CenterY : مختصات y مرکز صفحه نمایش رو میده = ۳۲
1 2 |
void DrawString(const char *str, int hpos, int vpos, eraseLine_t erase = eraseNONE); void DrawString(String &str, int hpos, int vpos, eraseLine_t erase = eraseNONE); |
به جای str متنمون رو قرار میدیم.
Hpos و vpos : این دو پارامتر مختصات xوy شروع نمایش متن هستن، به جای دادن مقدار عددی طول و عرض میتونید از متغییر جدید تعریف شده gTextfmt_t استفاده کنیم برای ترتمیزی کار، این نوع متغییر جدید رو در زیر براتون توضیح میدم :
enum gTextfmt_t |
|
gTextfmt_left |
سمت چپ صفحه نمایش |
gTextfmt_right |
سمت راست صفحه نمایش |
gTextfmt_top |
بالای صفحه نمایش |
gTextfmt_bottom |
پایین صفحه نمایش |
gTextfmt_center |
وسط صفحه نمایش |
gTextfmt_current |
موقعیتی که قبلا فعال بوده |
Erase : این پارامتر تعیین میکنه که متن در چه وضعتی نمایش داده شود، اتدا کل اون خط پاک شود و بعد متن ما داخلش نمایش داده شود، فقط همون محدوده ای که متن نمایش قراره داده بشه پاک بشه و... که کلا ۴ حالا داره که در زیر مشاهده میکنید.
1 2 3 4 |
eraseTO_EOL // پاک کردن دیتا از جایی که متن شروع به نوشتن میشه تا آخر خط eraseFROM_BOL // پاک کردن دیتا از ابتدای خط تا جایی که متن تموم میشه eraseFULL_LINE // پاک کردن دیتای خط جاری eraseNONE // از ابتدا تا انتهای مکانی که دیتا نمایش داده میشه |
خب به کمک متغییر جدید gTextfmt_t هم میتونید دیگه از مقدار دهی عددی برای تعیین موقعیت متنمون استفاده نکنیم
مثال زیر رو ببینید که در تمام ۹ موقعیت ممکمن متنمون رو نمایش دادیم :
1 2 3 4 5 6 7 8 9 |
GLCD.DrawString("DMF1", gTextfmt_left, gTextfmt_top); // چپ بالا GLCD.DrawString("DMF2", gTextfmt_left, gTextfmt_center); // چپ وسط GLCD.DrawString("DMF3", gTextfmt_left, gTextfmt_bottom); // چپ پایین GLCD.DrawString("DMF4", gTextfmt_center, gTextfmt_top); // وسط بالا GLCD.DrawString("DMF5", gTextfmt_center, gTextfmt_center); // وسط وسط GLCD.DrawString("DMF6", gTextfmt_center, gTextfmt_bottom); // وسط پایین GLCD.DrawString("DMF7", gTextfmt_right, gTextfmt_top); // راست بالا GLCD.DrawString("DMF8", gTextfmt_right, gTextfmt_center); // راست وسط GLCD.DrawString("DMF9", gTextfmt_right, gTextfmt_bottom); // راست پایین |
1 2 |
int glcd_Device::On(void); int glcd_Device::Off(void); |
این دو تابع برای نمایش/عدم نمایش دیتا در نمایشگر هستن.
اگه از تابع off استفاده کنید هر چی که تو نمایشگر باشه غیب میشه(پاک نمیشه، غیب میشه فقط) و بعدش اگه از تابع on استفاده کنیم دیتاهای توی نمایشگر دوباره ظاهر میشه.(حالا این دو تابع کجا میتونه مفید باشه من چیزی به ذهنم نمیرسه – اگه کسی میدونه بگه)
1 |
void SetPixels(uint8_t x, uint8_t y,uint8_t x1, uint8_t y1, uint8_t color); |
این تابع یه ۴ ضلعی(مربع/مستطیل) رسم میکنه که میتونیم رنگش رو سفید و یا سیاه در نظر بگیریم – برا سیاه/سفید کرده یه محوطه میتونه این تابع مناسب باشه، دقیقا میشه گفت همون کار تابع "رسم ۴ ضلعی توپر" رو انجام میده این تابع
Xوy : مختصات نقطه سمت چپ و بالای ۴ ضلعی
x1وy1 : مختصات نقطه سمت راست بالای ۴ ضلعی
Color : رنگ داخل این ۴ ضلعی
1 |
void SetDot(uint8_t x, uint8_t y, uint8_t color); |
رسم یه پیکسل سیاه/سفید
به کمک این تابع میتونید یه نقطه/پیکسل به رنگ سیاه/سفید نمایش بدید تو نمایشگر.
xوy : مختصات نمایش این نقطه/پیکسل
Color : تعیین رنگ این پیکسل
1 |
uint8_t CharWidth(uint8_t c); |
این تابع تعداد پیکسل(طول) هر کاراکتر فونت جاری رو به شما نشون میده.
مثلا یه متنی با فونت۱ نمایش دادید، طول یه کاراکتر در فونت ۱ برابر ۸ پیکسل و مثلا برا فونت ۳ برابر ۵ پیکسل و برا فونت ۳ برابر ۶ پیکسل هستش.
کلا طول هر کاراکتر(اندازه هر کاراکتر بگم به نظرم بهتر باشه) بستگی به فونتش داره.
این مورد برا جاهایی که نیاز دارید کارتون دقیق باشه نیاز دارید مثلا یه متن نمایش بدید و مختصات ته متن رو داشته باشید تا یه کاری انجام بدید، این تابع میتونه مفید باشه.
1 |
uint8_t CharHeight(uint8_t c); |
این تابع همانند تابع بالا هستش فقط با این تفاوت که تابع قبلی طول یه کاراکتر رو نشون میداد ولی این تابع عرض(ارتفاع) کاراکتر رو نشون میده.
1 2 |
uint16_t gText::StringWidth(const char* str); uint16_t gText::StringWidth(String &str); |
این دو تابع هم مثل دو تابع بالا هستن، تابع دومی رو کاری نداریم چون مربوطه به کتابخونه String در آردوینو.
توضیح تابع اولی : یه رشته ای رو به عنوان پارامتر به این تابع میدید و ان تابع تعداد پیکسل هایی دین متن شما رو بهتون برمیگردونه، که بسته به این که متن شما با چه فونتی داره نمایش داده میشه و خود متن چند تا کاراکتر هستش این تابع اعداد متفاوتی رو نشون میده
توجه : برا پیدا کردن ارتفاع(عرض) این متن هم میتونید از تابع CharHeight استفاده کنید که یه کاراکتر رو بهش میدید و اندازه ارتفاعش رو بهتون میده برا فونتی که روی متن اعمال شده است.
1 2 3 4 |
uint8_t DefineArea(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, gTextMode mode=DEFAULT_Gtextmode); uint8_t DefineArea(uint8_t x, uint8_t y, uint8_t columns, uint8_t rows, Font_t font, gTextMode mode=DEFAULT_gTEXTMODE); uint8_t DefineArea(predefinedArea selection, Font_t font, gTextMode mode=DEFAULT_gTEXTMODE); uint8_t DefineArea(predefinedArea selection, gTextMode mode=DEFAULT_gTEXTMODE); |
خب این ۴ تا تابع بهترین تابع های این برنامه هستن به نظرم، فوق العاده میتونن کاربری باشن تو پروژه های سنگین برا ساده کردن کار، کارشون اینه که میان محدوده هایی تعریف میکنن، برا اون محدوده فونت تعیین میکنن، میتونیم تعیین کنیم متن یا کلا دیتای ما در کدوم محدوده نمایش داده بشه، دیتای ما از اون محدوده بیرون نمیزنه، یعنی اگه تو اون محدوده دیتا زیاد بریزید از اون محدوده خارج نمیشه و فقط تو همون محدوده نمایش داده میشه.
توجه : این محدوده ای که ما تعریف میکنیم به صورت یه ۴ ضلعی هستش.
توضیح تابع اولی :
x1وy1 : مختصات نقطه سمت چپ بالای ۴ ضلعی
X2وy2 : مختصات نقطه کوشه سمت راست پایین ۴ ضلعی
Mode : این پارامتر هم برا تعیین اطلاعاتی از نحوه نمایش دیتا در این محدوده هستش که در زیر توضیحش میدم.
1 2 3 4 5 |
typedef enum gTextMode { SCROLL_UP = 0, SCROLL_DOWN = 1 }; |
خب یه نوع متغییر تعریف شده وجود دارد به نام gTextMode که در هر ۴ تابع بالا از همین نوع متغییر استفاده شده، در زیر تمام مقادیری که این متغییر میتونه بگیره رو توضیح میدم؛ هر چند که از اسمشون هم معلومه کارشون.
همون طور که میدونید اگه یه محدوده ی محدودی رو داشته باشیم یه سری متن مثلا میتونیم داخلش نمایش بدیم، این کار رو تا زمانی میتونیم انجام بدیم که تو اون محدوده جا برا نمایش دیتای جدید وجود داره، حالا یه سوال؟ اگه اون محدوده پر از دیتا شد و دیگه جای خالی برا نمایش دیتای جدید نبود باید چیکار کنیم؟ مثلا بیایم تو اون محدوده یه قسمتی رو پاک کنیم و دیتایمون رو نمایش بدیم؟ یا مثلا بیایم و دیتامون رو روی دیتاهای قبلیمون بنویسیم یا...؟ کدوم روش؟ خب جواب معلومه هر کدوم رو دوست دارید ^_^ یه روش دیگه هم برا حل این مشکل وجود داره، که در ۴ تابع بالا این موشکل در نظر گرفته شده که در زیر توضیح میدم :
SCROLL_UP : اگه از این مقدار برای پارامتر آخر هر ۴ تابع بالا استفاده کنید، وقتی جایی برای نمایش دیتای جدید نیستش، تمام دیتاها یه خط به بالا ششیفت داده میشوند و خط اول دیتاش پاک میشه و تمام خطوط یه واحط میان بالا و دیتا در خط آخر که خالی شده نمایش داده میشود.
SCROLL_DOWN : خب این مورد عکس مقدار بالا هستش، در این حالت در صورت کمبود فضا، خط آخر حذف شده، تمام خطوط یه واحد به سمت پایین شیفت داده میشوند و بالاترین خط که الان خالی هستش، دیتای جدید در اون مکان نمایش داده میشود.
خب بریم سراغ توضیح توابع دیگه :
توضیح تابع دومی :
xوy : مختصات نقطه سمت چپ بالای ۴ ضلعی
Columns و rows : تعداد ستون و ردیف این ۴ ضلعی ما
Font : تعیین فونت این ناحیه تعریف شده، اسم یکی از فونتهای موجود رو قرار بدید.
Mode : در بالا توضیح دادمش
توضیح تابع سومی :
Font : دربالا توضیح دادمش.
Mode : در بالا توضیح دادمش.
Selection : به جای این پارامتر باید از یکی از مقادیر زیر استفاده کنید، که این پارامتر برا تعیین موقعیت ناحیه جدید ما هستش.
1 2 3 4 5 6 7 8 9 10 11 12 |
typedef enum predefinedArea { textAreaFULL, // کل صفحه نمایش textAreaTOP, // نیم صفحه ی بالای صفحه نمایش textAreaBOTTOM, // نیم صفحه ی پایین صفحه نمایش textAreaLEFT, // نیم صفحه ی سمت چپ صفح نمایش textAreaRIGHT, // نیم صفحه ی سمت راست صفحه نمایش textAreaTOPLEFT, // اگه صفحه نمایش رو به ۴ قسمت مساوی تقسیم کنید، این میشه قسمت سمت چپ بالا صفحه نمایش textAreaTOPRIGHT, // اگه صفحه نمایش رو به ۴ قسمت مساوی تقسیم کنید، این میشه قسمت سمت راست بالا صفحه نمایش textAreaBOTTOMLEFT, // اگه صفحه نمایش رو به ۴ قسمت مساوی تقسیم کنید، این میشه قسمت سمت چپ پایین صفحه نمایش textAreaBOTTOMRIGHT // اگه صفحه نمایش رو به ۴ قسمت مساوی تقسیم کنید، این میشه قسمت سمت راست پایین صفحه نمایش }; |
خب توضیحات متغییر جدید predefinedArea رو در همون بالا دادم لذا دیگه توضیحش نمیدم.
توضیح تابع چهارمی :
این تابع همانند تابع شماره ۳ هستش فقط با این تفاوت که قسمت تعیین فونت رو نداره، بقیه پارامترها رو در بالا توضیح دادم.
توجه : اون پارامترهایی که مقدار اولیه دارن، رو هم اگه مقدار بهشون ندید زیاد مهم نیست، اینو دیگه همتون میدونم که میدونید که نمیدونید که میدونید ^_^ >>> گفتم که گفته باشم فقط ^_^
1 2 |
void glcd::DrawBitmap(Image_t bitmap, uint8_t x, uint8_t y, uint8_t color) void glcd::DrawBitmapXBM(ImageXBM_t bitmapxbm, uint8_t x, uint8_t y, uint8_t color) |
تابع اولی :
این تابع برای نمایش عکس استفاده میشه (یه نمایش یه آرایه)
Bitmap : در این پارامتر نام عکسمون رو قرار میدیم، که باید به صورت آرایه ای با فرمت
const uint8_t PROGMEMGLCD تعریف شود.
xوy : این دو پارامتر مختصات فقطه سمت چپ بالای عکس هستن.
Color : در این قسمت اگه BLACK قرار بدید، عکس ما همون طور که تو نرم افزار "نقاشی" رسمش کردیم نمایش داده میشه.
و اگه WHITE قرار بدیم، رنگ ها معکوس میشه.
تابع دومی :
این تابع هم برای نمایش عکس هستش که در بالا میبینید ولی این که چطور برای این تابع ما میتونیم عکس تولید کنیم و اونم به کمک چه نرم افزاری خودم هم نمیدونم فعلا
در فیلم زیر درباره نحوه ساخت عکس و گرفتن کد عکس و ... رو توضیح دادم که میتونید ببینید :
1 |
void gText::SetFontColor(uint8_t fgcolor) |
به کمک این تابع میشه رنگ متن رو تغییر داد، مثلا میخواین یه متن نمایش بدید که خود متن سیاه باشه و رنگ پس زمینه سفید، میاید و مقدار BLACK به تابع میدید و اگه بخواین رنگ متن سفید باشه و رنگ پس زمینه سیاه باید مقدار WHITE رو به تابع میدیم و بعد باید متنمون رو نمایش بدیم.
1 |
void gText::ClearArea(void); |
پاک کردن تمام دیتای های محیط مد نظر، خب قبلا گفتم که چطور یه محیط ایجا کنید، حالا اگه خواستید دیتای اون محیط رو پاک کنید از این تابع باید استفاده کنید.
1 |
void gText::SetAreaMode(gTextMode mode) |
برای تنظیم مد نمایش اطلاعات محیط انتخاب شده هستش هستش.
1 |
int gText::GetAreaProp(gTextProp_t property) |
توضیح توابع بالا هم بمونه برا بعد دیگه حال ندارم توضیح بدم بیش از این.
خب این مطلب هم تموم شد، امیدوارم براتون مفید بوده باشه، اگه بود دعا کنید ما رو، بیمار هارو، مسئولین خدمت گزار رو، رهبر انقلاب و علمای اسلام رو (هزینه ی مطلب هستش این کار ^_^)
مهمان
سلام توی پروتیوس برنامه ران نمیشه و ال سی دی فقط روشن میشه کانکشن ها رو هم چک کردم درست بود برد های مختلف هم امتحان کردم نشد به نظرتون مشکل از کجاست؟
مهمان
با عرض سلام و خسته نباشید
بنده در راه اندازی نمایشگر گرافیکی به مشکل بر خوردم.لطفا در صورت امکان راهنمایی کنید
نمایشگر گرافیکی ۱۹۲×۶۴ با درایور ks0108
مشکل اینه که هر چیزی که از اردوینو به lcd ارسال میشه در سه مکان نمایش داده میشه انگار که هر کدوم از چیپ های lcd به صورت جدا اطلاعات رو نمایش میده
مهمان
سلام
خیلی آموزش خوب و کاملی بود. خیلی کمک کرد .ممنون.
مهمان
سلام .
من با esp32 کار میکنم و موقع کامپایل کد این ارور را به من میده …..
exit status 1
no matching function for call to ‘min(int, const uint8_t&)’
مهمان
وقتی به ۴۵ میرسه دیگه ادامه پیدا نمی کنه و ۵و۶ قاطی میشه
مهمان
اصلا فرمت مثال هاش فرمت ARDUINO نبود شناسایی اصلا نمی کنه اونی که از اینجا دانلود کردم از یه سایته دیگه چند ورژن بالا ترشا گرفتم بازم کار نکرد
مهمان
برای نمایش باید منبع قطع میکردم دوباره وصل میکردم اون مشکل رفع شد ولی یه مشکل دیگه این لینکا ببین
http://uupload.ir/view/k4g_۲۰۱۹۰۸۰۳_۱۷۱۲۰۶.mp4/
وقتی به یه قسمت میرسه تصویر خراب میشه
نویسنده این مطلب
یعنی چی؟ متوجه نشدم – فیلم هم دیدم…
مهمان
سلام من جواب گرفتم
http://uupload.ir/files/xtjr_img_20190803_154353_383.jpg
ولی پایه ریستا زدم به مثبت رفت دیگه چیزی نمایش نمیده مشکل چیه
نویسنده این مطلب
سلام مجدد – مشکل قبلی از کجا بود؟
خب ولتاژ بالای 5 ولت ( تقریبا، برا دقیقش به دیتاشیتش نمایشگر مراجعه کن ) به نمایشگر ندی، نباید چیزیش بشه.
با اون پتاسومتره و مدارش ور برو.
مهمان
مشکل کتابخانه که شما دادین اینه
http://uupload.ir/view/0f8j_2019_08_03_17_30_17_1600x900.wmv/
خودم با کتابخانه U8g2اجرا کردم
مهمان
سلام اقا مهدی این کتابخانه توی برنامه ARDUINO شناسایی نمیشه مشکل از چیه
نویسنده این مطلب
سلام – فایل کتابخونه رو در مسیر کتابخونه های آردوینو کپی کردی؟ خطای چی میده؟
مهمان
سلام،یه متنی که داخل یه متغیر String ذخیره شده رو چجوری میتونم روی ال سی دی نمایش بدم؟
نویسنده این مطلب
سلام-در مطلب بالا، قسمت “print – println – Printf” رو بخون –
مهمان
سلام دوستان بجای تابع void SelectFont();
از تابع (GLCD.SelectFont(System5x استفاده کنید اصلا دردسر نداره داخل پرانتز نوع فونت رو مشخص میکنید تمام
مهمان
سلام بر برادر گرامی و تشکر بابت آموزشهای مفیدتون.
لطفا در مورد اتصال سخت افزاری انواع آردوینو به ال سی دی گرافیکی کمی توضیح دهید چون من در مطالب بالا چیزی در این مورد ندیدم.
نویسنده این مطلب
سلام.تو جلسه 2 گفتم.
مهمان
اردوینو رو چه جوری به Ks0108 تو پروتئوس وصل کنم pin هاش چیه
مهمان
سلام برادر
ممنون از طراحی سایت بسیار خوب و مطالب مفیدی که ارائه کردین
من میخوام با یه دوربین تصویر (فیلم) رو به صورت در لحظه (یا همون Real Time) روی یه LCD نمایش بدم و علاوه بر اون یه سری پارامتر هم (مثل لوگو) در حد محدود به تصویر اضافه کنم.
آیا میشه تصویر رو مستقیما بفرستم به LCD و این وسط اون مواردی رو میخوام رو هم به صورت موازی روی تصویر یه جوری نمایش بدم؟
اصولا برای چنین کاری حداقل چردازنده ای که جواب کارمو بده چی هست؟ با آردوینو یا رزپری میشه به صورت در لحظه تصویر رو گرفت (با مثلا ۳۰ فریم بر ثانیه) یا نه باید برم سراغ FPGA؟
لازم به ذکره که رزولوشن تصویر زیاد بالا نیست و در حد زیر یک مگاپیکسل هست فعلا
با تشکر
نویسنده این مطلب
سلام-کار نکردم در این زمینه – با رزبری که میشه ولی با آردوینو رو نمیدونم – با آرمهای فرکانس بالا هم میتونی.
مهمان
سلام به سوال داشتم وقتی lcd گرافیکی پین RST رو به مثبت وصل می کنم اتصال کوتاه می شه یعنی رگولاتور آردوینو خیلی داغ می شه و نور ال سی دی هم کم می شه به نظرتان ال سی دی سوخته؟ هر کاری هم کردم چیزی نشون نداد
مهمان
سلام به سوال داشتم وقتی lcd گرافیکی پین RST رو به مثبت وصل می کنم اتصال کوتاه می شه یعنی رگولاتور آردوینو خیلی داغ می شه و نور ال سی دی هم کم می شه به نظرتان ال سی دی سوخته؟ هر کاری هم کردم چیزی نشدن نداد
مهمان
آقا مهدی من میخوام صفحه رو به دو ناحیه تقسیم کنم در واقع به دو تا مستطیل . مستطیل بالا باید طولش 128و عرضش 47 باشه و توش یک عکس نشون بدم و یک مستطیل پایین که طولش 128 باشه و عرض 16 . از این دو تا دستور هم استفاده میکنم ولی اصلا اونجایی که میخوام در نمیاد
textArea1.DefineArea(GLCD.Left,GLCD.Top,GLCD.Right,47, Callibri15, SCROLL_UP);
textArea3.DefineArea(GLCD.Left,GLCD.Bottom,GLCD.Right,16,Callibri15, SCROLL_UP);
نویسنده این مطلب
چیزی خاطرم نیست از این مطلب – هر چی هستش تو مطلب گفتم.
مهمان
آقا این تابع drawstring نمیتونه یک متغیر رشته ای رو چاپ کنه؟اون تابع پرینت متغیر رو می تونه چاپ کنه ولی هیج تنظیمی نمیشه روش داد مثلا کجای صفحه چاپ کنه و …
نویسنده این مطلب
تو مطلب گفتم :
عدد هم میتونی بدی – از اون ماکرو ها هم میتونی استفاده کنی
مهمان
ما که هر جا نگاه کردیم شما جایی نگفته بودی یک جا فقط گفته بودی بهتره بذارین در صورتی که اگر نذارین اصلا کار نمیکنه و به مشکل من دچار میشه من منظورم این بود که از حالت مستحب درش بیارین و صراحتا بگین واجب هست که این کارو بکنن . حالا بگذریم
نکته دیگه این لینک رو نگاه کنین
http://forum.arduino.ir/4/14/318.html
آخر پست اول یک بنده خدایی اومده برای avr فونت رو درست کرده و لینک دانلودش رو هم گذاشته حالا از اون چطوری میشه توی آردوینو استفاده کرد
نویسنده این مطلب
فونت پیش فرض خود کتاب خونه رو ببین-طبق همون ، اون هر کاری کرده بود تو هم همون کار رو بکن.
مهمان
ای بابا چرا قطره قطره جواب میدین
اینقدر همش میگین نظر بذارین و سوالاتونو بپرسین و … وقتی هم که می پرسیم تیکه تیکه و قطره قطره جواب میدین
الان جواب خودتون رو بخونین واقعا کسی از خوندن این جواب چیزی دستگیرش میشه ؟!؟؟!؟!
فونت پیش فرض کدوم کتابخونه رو میگین؟کتابخونه خود openglcd یا کتابخونه ای که این بنده خدا نوشته ؟؟؟؟ من اومدم اطلاعات آرایه این فونت فارسی که این بنده خدا نوشته رو توی یکی از فونت های پیش فرض openglcd مثلا فونت cooper21 کپی کردم ولی بازم فارسی رو درست نشون نداد
نویسنده این مطلب
ببخشید من معضرت میخوام – تو Eca مطرح کنید.
مهمان
آقا مهدی بالاخره بعد از حدود 5-6 ساعت مشکل رو پیدا کردم اگر لطف کنید این دو تا نکته رو یک جا توی پست اصلی آموزش قرار بدید ممنون میشم که بقیه بچه ها اینقدر مثل من وقتشون گرفته نشه
اول از همه توی اینترنت و توی سایت های مختلف نحوه اتصال پین ها بر اساس نوع پنل هست که چندین حالت داره و من همشون رو امتحان کردم ولی هیچکدومش درست نیست نمونه اون اتصالات پین ها رو از سایت های معتبر توی پست های قبلی بهتون نشون دادم ولی هیچکدوم کار نمی کنه و نمونه درست همونی هست که شما توی پست گذاشتین و خود سایت وین استار که تولید کننده این ال سی دی هست هم توی دیتاشیتش همین رو گفته .
نکته دوم اگر کسی پتانسیومتر نداره میتونه پین 3 و 18 رو با یک مقاومت 10 کیلو به هم وصل کنه اینطوری تصویر با کیفیت خیلی خوبی نمایش داده میشه در غیر اینصورت اگر اون پین 3 و 18 رو به امان خدا رها کنه ال سی دی روشن هست ولی هیچی روش نشون داده نمیشه
نویسنده این مطلب
فک نکنم نیازی باشه به مطلب اضافه بشه چون شما طبق شماتیک من عمل نکردی و جواب نگرفتی – در غیر این صورت اگه بود تو مطلب پیوست میکردم.
مهمان
الان این نحوه های مختلف اتصال پینها جریانش چیه
اون داستان پنل ها که توی پست قبلیم گفتم و لینک دادم
اینو نگاه کنید سایت خود کتابخونه openglce اینو گفته اوایل صفحه رو ببیند جدول رو
https://www.pslib.cz/david.kadanik/MIT/openGLCD-v1.0rc2-14-ga8b9f57/openGLCD/doc/html/page_ks0108_family.html
اینم سایت خود آردوینو که حالت های مختلف پینها رو بسته به مدل پنل گفته وسطهای صفحه رو نگاه کنید جدول رو
http://playground.arduino.cc/Code/GLCDks0108
مهمان
اردینو میشه ایمیل یا شماره تماس بدین
سلام و عرض ادب ..من چنتا سوال داشتم آقا نیما در مورد راه اندازی ال سی دی گرافیکی با
مهمان
الان طبق پی دی اف نحوه اتصال پینها خیلی با هم فرق میکنه من طبق پی دی اف و اون جدول اتصالات مربوط به پنل A رو وصل کردم به آردینو ولی مشکل داره چون چند ثانیه بعد از وصل کردن آردینو به سیستم آردینو سریع خاموش میشه . دیگه نمیدونم چی کار کنم .
پی دی اف رو نگاه کردین من طبق چیزی که شما گفتین پین ها رو وصل کردم اونطوری شد طبق این پی دی اف وصل کردم اونطوری شد. یعنی واقعا مشکل از اون نبود پتانسیومتر هست؟؟؟
نویسنده این مطلب
کار پتاسیومتر ور که بهت گفتم
مهمان
حتما باید وصل باشه چون ندارم الان ضمن اینکه مثکه این 108 سه تا پنل داره A B C و هر کدوم نحوه اتصالاتش فرق میکنه . این سایت سازنده خود ماژول که شرکت وین استار هست
http://winstar.com.tw/product_show.php?pd_num=WG
اینم یک PDF که نحوه سیم بندی هر پنل رو توضیح داده و با هم فرق میکنن
http://p30up.ir/uploads/f297881219.rar
نویسنده این مطلب
برا نور اطلاعات هستش تا جایی که یادمه
در ضمن فایل رو تو پیکو فایل آپلود کن تا پاک نشه بعد یه مدت – بعد لینکش رو بده
مهمان
آقا مهدی من این ks108 رو به UNO وصل کردم برنامه شما رو هم ریختم روش ال سی دی هم روشن میشه ولی هیچی نشون نمیده چندین پایه ها رو چک کردم درست هست ولی نمیدونم چرا هیچی روی صفحه نشون نمیده . فقط بگم که پایه های 3 و 18 رو به هیچی وصل نکردم
نویسنده این مطلب
این دو رو هم وصل کن – بعد با پتاسیمتر یکم ور بری اطلاعات تو نمایشگر ظاهر میشه.
مهمان
الان نفهمیدم این جواب شما چه ربطی داشت به سوال من
سوال اول این بود . اون عکس که لینکش رو فرستادم توی پیام قبلیم اون مربع ها که نشون میده یعنی اگر از این فونت استفاده بشه توی نمایشگر نوشته ها درست نشون داده نمیشن؟
سوال دومم الان برای اینکه روی این نمایشگر فارسی نشون بدم باید تک تک حروف رو خودم طراحی کنم؟
نویسنده این مطلب
گفتم که.
ربطی نداره.
ولی باز تست کردنش ظرر نداره
=======
میتونی این کارو بکنی – نرم افزار هم برا این کار هستش – سرچ کن – نرم افزار طراحی فونت برا LCD – فارسی گشتی نبود – انگلیسی سرچ کن
مهمان
نرم افزار glcd fone creator رو میگم این قسمت
http://p30up.ir/uploads/f5241761.png
یعنی حتی یک فونت هم نیست که الان بشه ازش استفاده کرد و نخواد حرف حرف حروف رو طراحی کرد؟؟
نویسنده این مطلب
فک نکنم ربظی به نمایشگر داشته باشه – تست کن
مهمان
توی این نرم افزار دومی که برای ساخت فونت معرفی کردین این فونت های فارسی معروف مثل B titr B nazanin ,… اینها رو به صورت مربع مربع نشون میده این یعنی اگر از این فونت توی پروژه استفاده کنیم حروف فارسی همینطوری مربع مربع نشون داده میشن؟
نویسنده این مطلب
تو این مطلب نرم افزاری نمیبینم که تازه معرفیش هم کرده باشم
خب نمایشگر یه ستونی از مربع های ریز هستش دیگه – 64 تا ردیف در 128 تا ستون که میشه 64*128 = 8192 تا مربع ریز – فک کنم درست گفتم
مثلا کلمه “ل” رو یه خونه 8در8 مربع ریز در نظر بگیر – کدوم خونه ها باید روشن بشه تا حرف”ل” نمایش داده بشه و ساخته بشه – خب به این میگن تعریف حرف”ل” حرف حرف تعریف کنی …، یه نرم افزار هم برا این کار باید باشه قبلا دیدم!!!
مهمان
آقا مهدی توی این ال سی دی 108 نمیشه عکس رنگی نشون داد ؟ باید حتما از اون نوع tft بخرم؟اگر از اون نوع tft بخرم علاوه بر عکس متن فارسی هم میشه نمایش داد؟
نویسنده این مطلب
نه نمیشه – بله.
متن فارسی اگه تابعش رو پیدا کنی آره وگرنه خودت باید دست بکار بشی یا متن فارسی رو به صورت عکس نشون بده.
مهمان
نحوه اتصال پین ها رو هم لطفا بگین
نویسنده این مطلب
جلسه 2 رو ببین
مهمان
از این ال سی دی میشه برای UNO هم استفاده کرد؟
نویسنده این مطلب
جلسه 2 رو ببین
مهمان
راستی از برد اردوینو نانو استفاده می کنم
نویسنده این مطلب
نمیدونم
مهمان
سلام
موقع کامپایل کد خطای زیر میده
In file included from C:\Users\Nasr\Documents\Arduino\libraries\openGLCD-v1.0rc2/include/glcd_io.h:53:0,
from C:\Users\Nasr\Documents\Arduino\libraries\openGLCD-v1.0rc2/include/glcd_Device.h:36,
from C:\Users\Nasr\Documents\Arduino\libraries\openGLCD-v1.0rc2/include/gText.h:36,
from C:\Users\Nasr\Documents\Arduino\libraries\openGLCD-v1.0rc2/include/glcd.h:41,
from C:\Users\Nasr\Documents\Arduino\libraries\openGLCD-v1.0rc2/openGLCD.h:5,
from H:\aaBOL\abol2\DigitalReadSerial\DigitalReadSerial.ino:8:
C:\Users\Nasr\Documents\Arduino\libraries\openGLCD-v1.0rc2/include/avrio.h:1615:0: warning: "PIN_A0" redefined
#define PIN_A0 AVRIO_PIN(AVRIO_PORTA, 0)
^
In file included from C:\Program Files\Arduino\hardware\arduino\avr\variants\eightanaloginputs/pins_arduino.h:23:0,
from C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:249,
from sketch\DigitalReadSerial.ino.cpp:1:
C:\Program Files\Arduino\hardware\arduino\avr\variants\eightanaloginputs/../standard/pins_arduino.h:56:0: note: this is the location of the previous definition
#define PIN_A0 (14)
از پین A0 تا پین A7 این خطا رو میده….مشکل کجاست؟
مهمان
سلام با تشکر از مطالبتون
آردینو من uno هست و کتباخونه هم دان کردم و موقع آپلود با خطا مواجح میشه
نویسنده این مطلب
سلام
فایل پسورد داره – فایل رو از حالت فشرده خارج کنید – و اون فایل خارج شده رو اد کنید
مهمان
سلام.عالی بود.
فقط من موندم سخت افزار رو چکار کنم؟؟
آردینو من مگا هست و کتباخونه هم دان کردم و موقع آپلود با خطا مواجح میشه
آقا مهدی امکانش هست یه مثال ساده با نحوه اتصال رو در سایت بزارین؟؟
نویسنده این مطلب
سلام
خطا چیه؟ پروژه رو کامپیایل هم میکنید ارور میده یا فقط تو بحث آپلود ارور میده؟
مهمان
سلام ممنون از مطالب عالی و فوق العاده
فقط یه سوال
چه جوری میشه تو همین lcd فارسی نوشت
منظورم فارسی رو تایپ کرد نه این که با عکس نشون داد
نویسنده این مطلب
سلام-خب طراحی فونت فارسی – ببین میتونی فونت ها رو ویرایش کنی – چون این فونت ها هم یه شکل هستن که طراحی شدن و به ازای هر کاراکتر برنامه میاد و اون کد/شکل رو نمایش میده.
مهمان
سلام
ممنون از مطالب عالی شما و سایت عالی تر شما
فقط یه سوال
چه جوری میشه تو همین ال سی دی فارسی نوشت؟؟
نویسنده این مطلب
سلام
طراحی فونت فارسی/عکس
مهمان
سلام خیلی خیلی ممنون بابات مطالب مفیدتون بعد یک روز ور رفتن تونستم با برد مگا 2560 راه بندازم
مهمان
اول دمت گرم که پای ولایت هستی و بع دست درد نکنه که این مطلب را گذاشتی.(حسین سرباز ولایت)
مهمان
سلام. نمایشگر ks0108 را از چه فروشگاهی می تونم تهیه کنم؟؟
نویسنده این مطلب
سلام
eca-roboeq و…
مهمان
هولی …
خعلی عاولی بوت…
بسیار به این آموزش نیاز مند بودم
السپاسات
مهمان
جالبه.. فدای شما…