كود البحث

كود أردوينو لشاشة نوكيا 5110 LCD

كود أردوينو لشاشة نوكيا 5110 LCD


في هذا البرنامج التعليمي، سنستكشف كيفية استخدام شاشة LCD نوكيا 5110 مع لوحة أردوينو لعرض رسومات ونصوص متنوعة. سيعرض المشروع كيفية رسم خطوط ودوائر ومستطيلات، وحتى عرض نص داخل تلك الأشكال. مع نهاية هذا الدرس، سيكون لديك فهم أفضل لكيفية التفاعل مع هذه الشاشة باستخدام كود أردوينو.

Nokia 5110_LCD

لتقديم توجيهات أوضح، أشجعك على مشاهدة الفيديو المصاحب للاطلاع بصريًا على توصيل الأسلاك وتنفيذ الكود (في الفيديو عند 00:00).

شرح الأجهزة

شاشة LCD نوكيا 5110 هي شاشة رسومية مدمجة تعمل عبر بروتوكول SPI، مما يتيح اتصالًا فعالًا مع لوحة أردوينو. تتميز بدقة 84x48 بكسل، وهي كافية لعرض الرسومات والنصوص الأساسية. تحتاج الشاشة إلى عدد قليل من الدبابيس للتشغيل، مما يجعلها خيارًا ممتازًا للمشاريع ذات خيارات الإدخال/الإخراج المحدودة.

بالإضافة إلى شاشة LCD، ستحتاج إلى لوحة أردوينو، عادةً أردوينو أونو أو ما يشابهها، ولوحة تجارب (بريدبورد)، وبعض أسلاك القفز. التوصيلات بسيطة، وتُغذى شاشة LCD بتوصيل دبوس VCC بمخرج 5V على لوحة الأردوينو.

تفاصيل ورقة البيانات

المصنّعفيليبس
رقم القطعةPCD8544
جهد المنطق/المدخلات والمخرجات3.3 فولت
جهد التغذية3.3 - 5.0 فولت
التيار الأقصى200 ميكروأمبير
دقة الشاشة84 × 48 بكسل
واجهةتسلسلي (SPI)
حزمةوحدة

  • استخدم مقاومًا لتحديد التيار عند دبوس LED لمنع تلفه.
  • تأكد من ثبات التوصيلات إلى VCC وGND لتجنب مشاكل العرض.
  • تحقق مجدداً من توصيلات دبابيس SPI: SCE، RST، D/C، DN، و SCLK.
  • حافظ على إعداد التباين ضمن النطاق الموصى به (40-60).
  • حدّث الشاشة بعد رسم الرسوميات لرؤية التغييرات.

تعليمات الأسلاك

Arduino wiring for Nokia 5110 LCD
Arduino wiring for Nokia 5110 LCD

لتوصيل شاشة Nokia 5110 LCD بالأردوينو الخاص بك، اتبع التوصيلات التالية:

  • قم بتوصيل شاشات LCDVCCالدبوس إلى الأردوينو5Vدبوس.
  • قم بتوصيل الـGNDالدبوس على شاشة الـLCD إلى أحد دبابيس الأردوينوGNDدبابيس.
  • قم بتوصيلSCEدبوس على شاشة LCD إلى دبوس7على الأردوينو.
  • قم بتوصيل الـRSTمن دبوس إلى دبوس6.
  • قم بتوصيل الـD/Cمن دبوس إلى دبوس5.
  • قم بتوصيل الـDN (MOSI)من دبوس إلى دبوس11.
  • قم بتوصيلSCLKمن دبوس إلى دبوس13.
  • أخيرًا، قم بتوصيل الـLEDمن دبوس إلى دبوس9عبر مقاوم بقيمة 330 أوم.

ستسمح هذه الوصلات للوحة Arduino بالتواصل مع شاشة LCD بفعالية. إذا احتجت إلى ضبط التوصيلات لتلائم إعدادك الخاص، فتأكد من أن دبابيس SPI تظل ثابتة.

أمثلة على الكود وشرح تفصيلي

مقتطف الشيفرة التالي يهيئ شاشة LCD ويضبط التباين:


void setup() {
  Serial.begin(9600);
  lcdBegin(); // Initialize the LCD
  setContrast(40); // Set contrast level
  delay(2000);
  clearDisplay(BLACK); // Clear the display
  updateDisplay(); // Update the display
}

في هذا المقتطف، الـlcdBegin()تقوم الدالة بإعداد الدبابيس اللازمة لشاشة LCD، بينماsetContrast(40)يعدّل تباين الشاشة. بعد تأخير قصير، تُمسح الشاشة للتحضير لمحتوى جديد.

Nokia 5110_LCD back view

بعد ذلك، يمكننا رسم خط على الشاشة:


setLine(1, 4, 70, 4, BLACK); // Draw a horizontal line
updateDisplay(); // Make the line visible

يستخدم هذا السطر من الكود الـsetLine()دالة، التي تأخذ إحداثيات البداية والنهاية بالإضافة إلى معامل اللون. بعد الرسم، من الضروري استدعاءupdateDisplay()لعكس التغييرات على الشاشة.

أخيرًا، يمكننا عرض نص داخل مستطيل:


setRect(10, 10, 70, 40, 1, BLACK); // Draw a filled rectangle
setStr("Robojax ", 15, 20, WHITE); // Display text inside
updateDisplay(); // Update to show the changes

هنا،setRect()ينشئ مستطيلاً، بينماsetStr()يضع نصًا بداخله. تحدد معاملات اللون كيفية ظهور المستطيل والنص على الشاشة.

عرض توضيحي / ما الذي تتوقعه

عند تشغيل الكود يجب أن ترى سلسلة من الرسومات معروضة على شاشة Nokia 5110 LCD، بما في ذلك خطوط ودوائر ومستطيلات ونصوص. تأكد من أن التوصيلات صحيحة لتجنب مشاكل مثل عكس القطبية أو المدخلات العائمة، والتي قد تمنع الشاشة من العمل (في الفيديو عند 02:30).

الطوابع الزمنية للفيديو

  • 00:00- مقدمة عن المشروع
  • 01:30- تعليمات الأسلاك
  • 03:00- إعداد الكود والشرح
  • 05:00عرض الرسومات والنصوص
  • 07:30- الخاتمة والتعديلات الإضافية

الصور

Nokia 5110_LCD back view
Nokia 5110_LCD back view
Arduino wiring for Nokia 5110 LCD
Arduino wiring for Nokia 5110 LCD
Nokia 5110_LCD
Nokia 5110_LCD
82-Arduino code: Dual-axis joystick with Nokia 5110 screen to display dots.
اللغة: C++
/* 
 * This is Arduino code to use a dual-axis XY joystick with a Nokia 5110 LCD.
 * It also reads a switch.
 * Other Arduino libraries and videos: https://robojax.com
 
 * Watch the video for this code to learn it fully.
  * Watch the video here: https://youtu.be/Pk5Wig5EO0s

 * 
 * Get this code and other Arduino codes from Robojax.com.
 Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
 all in one place. Purchase my course on Udemy.com: http://robojax.com/L/?id=62

If you found this tutorial helpful, please support me so I can continue creating 
content like this. You can support me on Patreon: http://robojax.com/L/?id=63

or make a donation using PayPal: http://robojax.com/L/?id=64

 *  * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact. * 
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

 
Nokia 5110 LCD Example Code
   Graphics driver and PCD8544 interface code for SparkFun's
   84x48 Graphic LCD.
   https://www.sparkfun.com/products/10168
   Original source code:
https://github.com/sparkfun/GraphicLCD_Nokia_5110

  This stuff could all be put into a library, but we wanted to
  leave it all in one sketch to keep it as transparent as possible.

  Hardware: (Note: most of these pins can be swapped)
    Graphic LCD Pin ---------- Arduino Pin
       1-VCC       ----------------  5V
       2-GND       ----------------  GND
       3-SCE       ----------------  7
       4-RST       ----------------  6
       5-D/C       ----------------  5
       6-DN(MOSI)  ----------------  11
       7-SCLK      ----------------  13
       8-LED       - 330 Ohm res --  9
   The SCLK, DN(MOSI), must remain where they are, but the other 
   pins can be swapped. The LED pin should remain a PWM-capable
   pin. Don't forget to stick a current-limiting resistor in line
   between the LCD's LED pin and Arduino pin 9!
   Modified by Ahmad S. for Robojax.com
   on Mar 11, 2018 at 20:49 in Ajax, Ontario, Canada
*/
#include <SPI.h>
#include "robojax-nokia5110.h"

void setup()
{
  Serial.begin(9600);

  lcdBegin(); // This will setup our pins, and initialize the LCD
  //updateDisplay(); // with displayMap untouched, SFE logo
  setContrast(40); // Good values range from 40-60
  delay(2000);

  clearDisplay(BLACK);
  updateDisplay();
}


void loop()
{
 
    // setPixel takes 2 to 3 parameters. The first two parameters
    // are x and y variables. The third optional parameter is
    // a "color" boolean. 1 for black, 0 for white.
    // setPixel() with two variables will set the pixel with
    // the color set to black.
    // clearPixel() will call setPixel with the color set to
    // white.
   // setPixel(random(0, LCD_WIDTH), random(0, LCD_HEIGHT));
    // After drawing something, we must call updateDisplay()
    // to actually make the display draw something new.

    //invertDisplay(); // This will swap all bits in our display

    // setLine(x0, y0, x1, y1, bw) takes five parameters. The
    // first four are coordinates for the start and end of the 
    // line. The last parameter is the color (1=black, 0=white).
    setLine(1, 4, 70, 4, BLACK);
    updateDisplay();
delay(2000);
    //analogWrite(blPin, i); // blPin is connected to BL LED

  /* setRect Example */
  clearDisplay(WHITE); // Start fresh

  // setCircle takes 5 parameters -- x0, y0, radius, bw, and
  // lineThickness. x0 and y0 are the center coordinates of the circle.
  // radius is the...radius. bw is the color (0=white, 1=black)
  // lineThickness is the line width of the circle, 1 = smallest
  // thickness moves in towards the center.
   setCircle(20, 30, 20, BLACK, 2);
  updateDisplay();
  delay(2000);
clearDisplay(WHITE);

  setStr("Welcome to ", 0, 0, BLACK);
      updateDisplay();
    delay(100);
  setLine(0, 9, 70, 9, BLACK);
    updateDisplay();
    delay(100);
   setStr("Robojax ", 20, 20, BLACK);
  updateDisplay();
  delay(2000);
  clearDisplay(WHITE);

  
  // setRect takes six parameters (x0, y0, x1, y0, fill, bw)
  // x0, y0, x1, and y0 are the two diagonal corner coordinates
  // fill is a boolean, which determines if the rectangle is
  // filled in. bw determines the color 0=white, 1=black.
    setRect(10, 10, 70, 40, 1, BLACK);
    setStr("Robojax ", 15, 20, WHITE);
    updateDisplay();
  delay(2000);

  /* setCircle Example */
  clearDisplay(WHITE);  
 
}

الأشياء التي قد تحتاجها

الموارد والمراجع

لا توجد موارد حتى الآن.

ملفات📁

Fritzing File