Search Code

Arduino কোড যা একটি ডুয়াল-অ্যাক্সিস XY জয়স্টিক এবং Nokia 5110 LCD স্ক্রিন ব্যবহার করে।

Arduino কোড যা একটি ডুয়াল-অ্যাক্সিস XY জয়স্টিক এবং Nokia 5110 LCD স্ক্রিন ব্যবহার করে।

এই টিউটোরিয়ালটি আপনাকে একটি ডুয়াল-অ্যাক্সিস XY জয়স্টিক ব্যবহার করে নকিয়া 5110 LCD স্ক্রিনে প্রদর্শিত একটি বিন্দু নিয়ন্ত্রণ করার প্রক্রিয়ার মাধ্যমে গাইড করবে। প্রকল্পটিতে জয়স্টিকের অবস্থান পড়া এবং সেই অনুযায়ী ডিসপ্লে আপডেট করা জড়িত। এই গাইডের শেষে, আপনার একটি কার্যকরী সেটআপ থাকবে যেখানে জয়স্টিক সরানো হলে স্ক্রিনে একটি বিন্দুর অবস্থান পরিবর্তিত হবে (ভিডিওতে 00:00 এ)।

Nokia 5110_LCD

এই প্রকল্পে, আপনি X এবং Y অক্ষে এর অবস্থান নির্ধারণ করতে জয়স্টিকের অ্যানালগ আউটপুট ব্যবহার করবেন। জয়স্টিক থেকে পড়া মানগুলি LCD স্ক্রিনের মাত্রার সাথে ম্যাপ করা হবে, যা বিন্দুর মসৃণ চলাচলের অনুমতি দেবে। অতিরিক্তভাবে, আপনি জয়স্টিকের সুইচ ইনপুট কীভাবে পড়তে হয় তা শিখবেন, যা আরও ইন্টারঅ্যাকশনের জন্য ব্যবহার করা যেতে পারে।

হার্ডওয়্যার ব্যাখ্যা

এই প্রকল্পের প্রাথমিক উপাদানগুলির মধ্যে রয়েছে Arduino, ডুয়াল-অ্যাক্সিস XY জয়স্টিক এবং নকিয়া 5110 LCD স্ক্রিন। Arduino মাইক্রোকন্ট্রোলার হিসেবে কাজ করে, জয়স্টিক থেকে ইনপুট প্রক্রিয়া করে এবং LCD ডিসপ্লে নিয়ন্ত্রণ করে।

জয়স্টিকে সাধারণত দুটি পটেনশিওমিটার থাকে—একটি X-অক্ষের জন্য এবং একটি Y-অক্ষের জন্য। আপনি জয়স্টিক সরানোর সাথে সাথে এই পটগুলি প্রতিরোধ পরিবর্তন করে, Arduino-এর অ্যানালগ ইনপুট পিনে বিভিন্ন ভোল্টেজ স্তর পাঠায়। নকিয়া 5110 LCD স্ক্রিনটি SPI যোগাযোগের মাধ্যমে নিয়ন্ত্রিত হয়, যা দক্ষ ডেটা স্থানান্তর এবং ডিসপ্লে আপডেটের অনুমতি দেয়।

ডেটাশিট বিবরণ

প্রস্তুতকারকTexas Instruments
পার্ট নম্বরL293D
লজিক/IO ভোল্টেজ5 V
সাপ্লাই ভোল্টেজ4.5–36 V
আউটপুট কারেন্ট (প্রতি চ্যানেল)600 mA
পিক কারেন্ট (প্রতি চ্যানেল)1.2 A
PWM ফ্রিকোয়েন্সি নির্দেশিকা20 kHz
ইনপুট লজিক থ্রেশহোল্ডTTL সামঞ্জস্যপূর্ণ
ভোল্টেজ ড্রপ / RDS(on) / স্যাচুরেশন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 স্ক্রিনটি Arduino-তে ওয়্যার করতে, প্রথমে জয়স্টিকের VCC পিনটি Arduino-এর 5V-এর সাথে এবং GND পিনটি Arduino-এর GND-এর সাথে সংযুক্ত করুন। জয়স্টিকের X-অক্ষ আউটপুটটি অ্যানালগ পিন A0-এর সাথে এবং Y-অক্ষ আউটপুটটি অ্যানালগ পিন A1-এর সাথে সংযুক্ত করুন। জয়স্টিকের সুইচ আউটপুটটি ডিজিটাল পিন 2-এর সাথে সংযুক্ত করা উচিত।

নকিয়া 5110 LCD-এর জন্য, নিম্নলিখিত পিনগুলি সংযুক্ত করুন: VCC থেকে 5V, GND থেকে GND, SCE থেকে পিন 7, RST থেকে পিন 6, D/C থেকে পিন 5, DN(MOSI) থেকে পিন 11, এবং SCLK থেকে পিন 13। সবশেষে, ব্যাকলাইট নিয়ন্ত্রণের জন্য LED পিনটি একটি 330 ওহম রোধের মাধ্যমে পিন 9-এর সাথে সংযুক্ত করুন।

কোড উদাহরণ ও ওয়াকথ্রু

সেটআপ ফাংশনে, আমরা সিরিয়াল যোগাযোগ এবং LCD আরম্ভ করি। কমান্ড lcdBegin() পিনগুলি সেট আপ করে এবং ডিসপ্লে আরম্ভ করে। সর্বোত্তম দৃশ্যমানতার জন্য কনট্রাস্ট সেট করা হয়।

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

এটি প্রকল্পের জন্য প্রয়োজনীয় উপাদানগুলি আরম্ভ করে, নিশ্চিত করে যে LCD তথ্য প্রদর্শনের জন্য প্রস্তুত।

Nokia 5110_LCD back view

লুপ ফাংশনে, আমরা জয়স্টিকের অবস্থান পড়ি এবং এটি স্ক্রিনের মাত্রায় ম্যাপ করি। জয়স্টিকের X এবং Y মানের উপর ভিত্তি করে বিন্দুর অবস্থান আপডেট করা হয়।

void loop() {
  int x = analogRead(A0); // জয়স্টিকের x অবস্থান পড়ুন
  int y = analogRead(A1); // জয়স্টিকের y অবস্থান পড়ুন
  int xPos = map(x, 0, 1023, 0, screenWidth); // x স্ক্রিনে ম্যাপ করুন
  int yPos = map(y, 0, 1023, 0, screenHeight); // y স্ক্রিনে ম্যাপ করুন
  setCircle(xPos, yPos, thickness, BLACK, 2); // বিন্দুটি প্রদর্শন করুন
  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)

ফ্রিটজিং ফাইল