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

شِفر (کود) آردوینو برای استفاده از جوی‌استیک دو محوره (X و Y) با صفحه‌نمایش LCD نوکیا 5110

شِفر (کود) آردوینو برای استفاده از جوی‌استیک دو محوره (X و Y) با صفحه‌نمایش LCD نوکیا 5110

این آموزش شما را در فرایند استفاده از جوی‌استیک دومحوره XY برای کنترل یک نقطه نمایش داده‌شده روی صفحه‌نمایش Nokia 5110 LCD راهنمایی می‌کند. این پروژه شامل خواندن موقعیت جوی‌استیک و به‌روزرسانی نمایش مطابق آن است. تا پایان این راهنما، شما یک راه‌اندازی عملیاتی خواهید داشت که با حرکت جوی‌استیک، موقعیت یک نقطه روی صفحه تغییر می‌کند (در ویدیو در 00:00).

Nokia 5110_LCD

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

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

اجزای اصلی این پروژه شامل آردوینو، جوی‌استیک دومحوره XY و صفحه‌نمایش LCD نوکیا 5110 هستند. آردوینو به‌عنوان میکروکنترلر عمل می‌کند، ورودی‌های جوی‌استیک را پردازش کرده و نمایشگر LCD را کنترل می‌کند.

جوی‌استیک معمولاً دو پتانسیومتر دارد — یکی برای محور X و یکی برای محور Y. وقتی جوی‌استیک را حرکت می‌دهید، این پتانسیومترها مقاومتشان را تغییر می‌دهند و سطوح ولتاژ متغیر را به پایه‌های ورودی آنالوگ آردوینو می‌فرستند. صفحه‌نمایش LCD نوکیا 5110 از طریق ارتباط SPI کنترل می‌شود که امکان انتقال کارآمد داده و به‌روزرسانی نمایش را فراهم می‌کند.

جزئیات مشخصات فنی

تولیدکنندهتگزاس اینسترومنتس
شماره قطعهL293D
ولتاژ منطق/ورودی-خروجی5 ولت
ولتاژ تغذیه4.5-36 V
جریان خروجی (برای هر کانال)۶۰۰ میلی‌آمپر
جریان پیک (برای هر کانال)1.2 A
راهنمای فرکانس PWM20 کیلوهرتز
آستانه‌های منطقی ورودیسازگار با TTL
افت ولتاژ / Rدرین-تا-سورس (روشن)/ اشباعحداکثر 1.5 V
محدودیت‌های حرارتی150 °C
بستهDIP-16
یادداشت‌ها / انواعبه‌طور گسترده در کاربردهای درایور موتور استفاده می‌شود

  • برای عملکرد مداوم، از وجود هیت‌سینک مناسب اطمینان حاصل کنید.
  • برای تأمین تغذیه پایدار از خازن‌های دکوپلینگ استفاده کنید.
  • برای جلوگیری از آسیب دیدن قطعات، مشخصات ولتاژ را بررسی کنید.
  • با سیگنال‌های PWM محتاط باشید؛ مطمئن شوید که در محدوده‌های مشخص‌شده قرار دارند.
  • برای جلوگیری از اتصال کوتاه، اتصالات سیم‌کشی را بررسی کنید.

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

Arduino wiring for Nokia 5110 LCD  with Joystick
Arduino wiring for Nokia 5110 LCD with Joystick

برای سیم‌کشی جوی‌استیک و نمایشگر LCD به آردوینو، با وصل کردن پایه VCC جوی‌استیک به 5V آردوینو و پایه GND به GND آردوینو شروع کنید. خروجی محور X جوی‌استیک را به پایه آنالوگA0و خروجی محور Y را به پایه آنالوگA1. خروجی سوئیچ جوی‌استیک باید به پایه دیجیتال متصل شود2.

برای LCD نوکیا 5110، پایه‌های زیر را وصل کنید: VCC به 5V، GND به GND، SCE به پایه7, RST به پایه6، D/C به پایه5, DN(MOSI) به پایه11، و SCLK را به پایه13در آخر، پایه LED را از طریق یک مقاومت 330 اهم به پایه وصل کنید9برای کنترل نور پس‌زمینه.

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

در تابع setup، ارتباط سریال و LCD را مقداردهی اولیه می‌کنیم. فرمانlcdBegin()پایه‌ها را پیکربندی کرده و نمایشگر را مقداردهی اولیه می‌کند. کنتراست برای دید بهینه تنظیم شده است.

void setup() {
  Serial.begin(9600);
  lcdBegin(); 
  setContrast(40); 
  delay(1000);
  clearDisplay(BLACK);
  updateDisplay();
}

این مؤلفه‌های لازم پروژه را مقداردهی اولیه می‌کند و اطمینان می‌دهد که نمایشگر LCD آماده نمایش اطلاعات است.

Nokia 5110_LCD back view

در تابع loop، موقعیت جوی‌استیک را می‌خوانیم و آن را به ابعاد صفحه نگاشت می‌کنیم. موقعیت نقطه بر اساس مقادیر X و Y جوی‌استیک به‌روزرسانی می‌شود.

void loop() {
  int x = analogRead(A0); // read the x position of joystick
  int y = analogRead(A1); // read the y position of joystick
  int xPos = map(x, 0, 1023, 0, screenWidth); // map x to screen
  int yPos = map(y, 0, 1023, 0, screenHeight); // map y to screen
  setCircle(xPos, yPos, thickness, BLACK, 2); // display the dot
  updateDisplay();
  delay(10);
}

این شِفر (کود) به‌طور پیوسته موقعیت نقطه روی LCD را بر اساس حرکت جوی‌استیک به‌روزرسانی می‌کند.

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

وقتی مدار را روشن می‌کنید، LCD یک نقطه را نمایش می‌دهد. حرکت جوی‌استیک، موقعیت نقطه را در زمان واقعی بر اساس حرکت‌های محور X و Y جوی‌استیک جابه‌جا می‌کند. اگر کلید جوی‌استیک فشار داده شود، می‌تواند عملکردهای اضافی‌ای را که ممکن است پیاده‌سازی کنید فعال کند. مراقب ورودی‌های شناور احتمالی باشید اگر جوی‌استیک در مرکز قرار نداشته باشد، زیرا ممکن است منجر به حرکت‌های غیرمنتظرهٔ نقطه شود (در ویدیو در 01:30).

برچسب‌های زمانی ویدیو

  • 00:00- معرفی پروژه
  • 01:30- توضیح سیم‌کشی
  • 02:45- مرور شِفر (کود)
  • 04:10- نمایش عملکرد

تصاویر

Nokia 5110_LCD back view
Nokia 5110_LCD back view
Arduino wiring for Nokia 5110 LCD  with Joystick
Arduino wiring for Nokia 5110 LCD with Joystick
Nokia 5110_LCD
Nokia 5110_LCD
81-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 screen to move a dot on the screen.
 * It also reads the 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/zqDZybR5JSE
 * This code is offered "as is" without any warranty.
 * If you are sharing this code, you must keep this copyright note.
 */
 /*
/* Nokia 5100 LCD Example Code with Added Joystick by Robojax
   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 at Ajax, Ontario, Canada
*/
#include <SPI.h>
#include "LCD_Functions.h"

#define sw 2 // pint 2 is used for joystick switch input
#define screenWidth 83 // NOkia screen width
#define screenHeight 47 // Nokia screen height
int thickness =1;// the thickness of the dot


void setup()
{
  // Robojax Dual Axis joystick  with Nokia 5110 LCD screen project
  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(1000);

  clearDisplay(BLACK);
  updateDisplay();
}


void loop()
{
  clearDisplay(WHITE);  
   // Robojax Dual Axis joystick  with Nokia 5110 LCD screen project
  int x = analogRead(A0);// read the x position of joystick
  int y = analogRead(A1); // read the y position of joystick
  int xPos = map(x, 0, 1023,0,screenWidth);// map or translate the x of joystick to x of screen
  int yPos = map(y, 0, 1023,0,screenHeight); // map or translate the y of joystick to y of screen
  int sStat = digitalRead(sw);//read the switch from pin 2
  Serial.print("X: ");
  Serial.print(xPos);
  Serial.print(" Y: ");
  Serial.println(yPos);// Robojax prints y

  // Robojax Dual Axis joystick  with Nokia 5110 LCD screen project
   //setCircle(xPos, yPos, thicness, BLACK, 2);
   // xPos is the position of x
   // yPos is the position of y
   // thickness
  setCircle(xPos, yPos, thickness, BLACK, 2);// display the dot on the screen
    updateDisplay();
  delay(10);


}

مواردی که ممکن است به آن‌ها نیاز داشته باشید

منابع و مراجع

هنوز هیچ منبعی موجود نیست.

فایل‌ها📁

فایل مورد نیاز (.h)

فایل فریزینگ