2.4 "টিএফটি এলসিডি শিল্ড আরডুইনো মেগায় কাজ করছে না


9

এমনকি ইবেয়ের ওয়েবসাইটেও উল্লেখ করা হয়েছে যে আমি আরডুইনো মেগাকে সংযুক্ত করার জন্য ২.৪ "টিএফটি এলসিডি শিল্ড ডিসপ্লে ব্যবহার করতে পারি না। সমস্যাটি হ'ল আমি ভুল করে এই ieldালটি কিনেছি। আমি এই ieldালটি আরডুইনো মেগা 2560 এর উপরে রাখতে চাই। মেগা এবং 2.4 "ডিসপ্লে শিল্ড একত্রিত করার উপায়?

দ্রষ্টব্য: আমি আমার বন্ধুর আরডিনো ইউনোতে চেষ্টা করেছি। ঝাল খুব ভাল কাজ করছে।

দ্রষ্টব্য: নীচের ছবিটি আমার প্রশ্নটি নির্ধারণ করছে। প্রদর্শনটি আমার আরডিনো কোডটি চালায় না। এটি কেবল তার এলইডি চালায়।

এখানে চিত্র বর্ণনা লিখুন

    // UTFT_Demo_320x240 (C)2012 Henning Karlsen
// web: http://www.henningkarlsen.com/electronics
//
// This program is a demo of how to use most of the functions
// of the library with a supported display modules.
//
// This demo was made for modules with a screen resolution 
// of 320x240 pixels.
//
// This program requires the UTFT library.
//

#include <UTFT.h>
#define ILI9320_16 18
// Declare which fonts we will be using
extern uint8_t SmallFont[];

// Uncomment the next line for Arduino 2009/Uno
//UTFT myGLCD(UNO_24,A2,A1,A3,A4);   // Remember to change the model parameter to suit your display module!

// Uncomment the next line for Arduino Mega
UTFT myGLCD(ILI9320_16,38,39,40,41);   // Remember to change the model parameter to suit your display module!

void setup()
{
  randomSeed(analogRead(0));

// Setup the LCD
  pinMode(A0,OUTPUT);       // for the UNO_SHIELD_1IN1
  digitalWrite(A0,HIGH);    // the RD pin must be set high
  myGLCD.InitLCD();
  myGLCD.setFont(SmallFont);
}

void loop()
{
  int buf[318];
  int x, x2;
  int y, y2;
  int r;

// Clear the screen and draw the frame
  myGLCD.clrScr();

  myGLCD.setColor(255, 0, 0);
  myGLCD.fillRect(0, 0, 319, 13);
  myGLCD.setColor(64, 64, 64);
  myGLCD.fillRect(0, 226, 319, 239);
  myGLCD.setColor(255, 255, 255);
  myGLCD.setBackColor(255, 0, 0);
  myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1);
  myGLCD.setBackColor(64, 64, 64);
  myGLCD.setColor(255,255,0);
  myGLCD.print("<http://electronics.henningkarlsen.com>", CENTER, 227);

  myGLCD.setColor(0, 0, 255);
  myGLCD.drawRect(0, 14, 319, 225);

// Draw crosshairs
  myGLCD.setColor(0, 0, 255);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.drawLine(159, 15, 159, 224);
  myGLCD.drawLine(1, 119, 318, 119);
  for (int i=9; i<310; i+=10)
    myGLCD.drawLine(i, 117, i, 121);
  for (int i=19; i<220; i+=10)
    myGLCD.drawLine(157, i, 161, i);

// Draw sin-, cos- and tan-lines  
  myGLCD.setColor(0,255,255);
  myGLCD.print("Sin", 5, 15);
  for (int i=1; i<318; i++)
  {
    myGLCD.drawPixel(i,119+(sin(((i*1.13)*3.14)/180)*95));
  }

  myGLCD.setColor(255,0,0);
  myGLCD.print("Cos", 5, 27);
  for (int i=1; i<318; i++)
  {
    myGLCD.drawPixel(i,119+(cos(((i*1.13)*3.14)/180)*95));
  }

  myGLCD.setColor(255,255,0);
  myGLCD.print("Tan", 5, 39);
  for (int i=1; i<318; i++)
  {
    myGLCD.drawPixel(i,119+(tan(((i*1.13)*3.14)/180)));
  }

  delay(2000);

  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);
  myGLCD.setColor(0, 0, 255);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.drawLine(159, 15, 159, 224);
  myGLCD.drawLine(1, 119, 318, 119);

// Draw a moving sinewave
  x=1;
  for (int i=1; i<(318*20); i++) 
  {
    x++;
    if (x==319)
      x=1;
    if (i>319)
    {
      if ((x==159)||(buf[x-1]==119))
        myGLCD.setColor(0,0,255);
      else
        myGLCD.setColor(0,0,0);
      myGLCD.drawPixel(x,buf[x-1]);
    }
    myGLCD.setColor(0,255,255);
    y=119+(sin(((i*1.1)*3.14)/180)*(90-(i / 100)));
    myGLCD.drawPixel(x,y);
    buf[x-1]=y;
  }

  delay(2000);

  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

// Draw some filled rectangles
  for (int i=1; i<6; i++)
  {
    switch (i)
    {
      case 1:
        myGLCD.setColor(255,0,255);
        break;
      case 2:
        myGLCD.setColor(255,0,0);
        break;
      case 3:
        myGLCD.setColor(0,255,0);
        break;
      case 4:
        myGLCD.setColor(0,0,255);
        break;
      case 5:
        myGLCD.setColor(255,255,0);
        break;
    }
    myGLCD.fillRect(70+(i*20), 30+(i*20), 130+(i*20), 90+(i*20));
  }

  delay(2000);

  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

// Draw some filled, rounded rectangles
  for (int i=1; i<6; i++)
  {
    switch (i)
    {
      case 1:
        myGLCD.setColor(255,0,255);
        break;
      case 2:
        myGLCD.setColor(255,0,0);
        break;
      case 3:
        myGLCD.setColor(0,255,0);
        break;
      case 4:
        myGLCD.setColor(0,0,255);
        break;
      case 5:
        myGLCD.setColor(255,255,0);
        break;
    }
    myGLCD.fillRoundRect(190-(i*20), 30+(i*20), 250-(i*20), 90+(i*20));
  }

  delay(2000);

  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

// Draw some filled circles
  for (int i=1; i<6; i++)
  {
    switch (i)
    {
      case 1:
        myGLCD.setColor(255,0,255);
        break;
      case 2:
        myGLCD.setColor(255,0,0);
        break;
      case 3:
        myGLCD.setColor(0,255,0);
        break;
      case 4:
        myGLCD.setColor(0,0,255);
        break;
      case 5:
        myGLCD.setColor(255,255,0);
        break;
    }
    myGLCD.fillCircle(100+(i*20),60+(i*20), 30);
  }

  delay(2000);

  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

// Draw some lines in a pattern
  myGLCD.setColor (255,0,0);
  for (int i=15; i<224; i+=5)
  {
    myGLCD.drawLine(1, i, (i*1.44)-10, 224);
  }
  myGLCD.setColor (255,0,0);
  for (int i=224; i>15; i-=5)
  {
    myGLCD.drawLine(318, i, (i*1.44)-11, 15);
  }
  myGLCD.setColor (0,255,255);
  for (int i=224; i>15; i-=5)
  {
    myGLCD.drawLine(1, i, 331-(i*1.44), 15);
  }
  myGLCD.setColor (0,255,255);
  for (int i=15; i<224; i+=5)
  {
    myGLCD.drawLine(318, i, 330-(i*1.44), 224);
  }

  delay(2000);

  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

// Draw some random circles
  for (int i=0; i<100; i++)
  {
    myGLCD.setColor(random(255), random(255), random(255));
    x=32+random(256);
    y=45+random(146);
    r=random(30);
    myGLCD.drawCircle(x, y, r);
  }

  delay(2000);

  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

// Draw some random rectangles
  for (int i=0; i<100; i++)
  {
    myGLCD.setColor(random(255), random(255), random(255));
    x=2+random(316);
    y=16+random(207);
    x2=2+random(316);
    y2=16+random(207);
    myGLCD.drawRect(x, y, x2, y2);
  }

  delay(2000);

  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

// Draw some random rounded rectangles
  for (int i=0; i<100; i++)
  {
    myGLCD.setColor(random(255), random(255), random(255));
    x=2+random(316);
    y=16+random(207);
    x2=2+random(316);
    y2=16+random(207);
    myGLCD.drawRoundRect(x, y, x2, y2);
  }

  delay(2000);

  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

  for (int i=0; i<100; i++)
  {
    myGLCD.setColor(random(255), random(255), random(255));
    x=2+random(316);
    y=16+random(209);
    x2=2+random(316);
    y2=16+random(209);
    myGLCD.drawLine(x, y, x2, y2);
  }

  delay(2000);

  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

  for (int i=0; i<10000; i++)
  {
    myGLCD.setColor(random(255), random(255), random(255));
    myGLCD.drawPixel(2+random(316), 16+random(209));
  }

  delay(2000);

  myGLCD.fillScr(0, 0, 255);
  myGLCD.setColor(255, 0, 0);
  myGLCD.fillRoundRect(80, 70, 239, 169);

  myGLCD.setColor(255, 255, 255);
  myGLCD.setBackColor(255, 0, 0);
  myGLCD.print("That's it!", CENTER, 93);
  myGLCD.print("Restarting in a", CENTER, 119);
  myGLCD.print("few seconds...", CENTER, 132);

  myGLCD.setColor(0, 255, 0);
  myGLCD.setBackColor(0, 0, 255);
  myGLCD.print("Runtime: (msecs)", CENTER, 210);
  myGLCD.printNumI(millis(), CENTER, 225);

  delay (10000);
}

1
ইবে বিজ্ঞাপনটিতে এই অযৌক্তিক বক্তব্য রয়েছে: "এই ঝালটি মেগা আরডুইনোসের সাথে কাজ করে না তবে মেগা সমস্ত পিনগুলি পুনরায় সাজানোর কারণে এটি ইউনো-টাইপ বোর্ডগুলির অর্ধেক গতি হতে চলেছে (আশেপাশে যাওয়ার কোনও উপায় নেই) এটি!) "কীভাবে এটি একই সাথে কাজ করতে পারে না, এবং অর্ধগতি হতে পারে?
বিশ্বব্যাপী

আপনি কি 8 বিট বা 16 বিট সংস্করণ ব্যবহার করছেন?
লোনওয়ल्फ

আপনার কোডটি পিনগুলি 38-41 ব্যবহার করতে বলেছে চিত্রটি দেখার সময় ঝালটি পিনের সাথেও 38-21 সংযোগ করে না। আপনি মেগা জন্য ইউএনওর চেয়ে আলাদা এলসিডি-মডেলটিও সংজ্ঞায়িত করছেন। আনো হিসাবে একই কোড ব্যবহার করার চেষ্টা করুন; সুতরাংUTFT myGLCD(UNO_24,A2,A1,A3,A4);
গারবেন

শব্দটির দিকে তাকিয়ে দেখে মনে হচ্ছে এটি কাজ করে না, তবে শেষ পর্যন্ত এটিকে কাজ করার জন্য তাদের কাছে ধীর গ্রন্থাগার থাকবে।

উত্তর:


7

আমি ঠিক একই এলসিডি ঢাল কিনতে কয়েক দিন আগে, একটি লাইব্রেরি খুঁজছেন একটি মেগা 2560 বোর্ড আমি দেখেছি সঙ্গে এটি ব্যবহার ঘটেছে https://github.com/Smoke-And-Wires/TFT-Shield-Example-Code যা ইউএনও এবং মেগা বোর্ড উভয়ই সমর্থন করে ।

ব্যবহার, খুব হয় সহজ আমরা জন্য এটি ব্যবহার করতে চান তাহলে মেগা আমরা হেডার পরিবর্তন করা উচিত #include "uno_24_shield.h"মধ্যে SWTFT.cpp করতে#include "mega_24_shield.h"

বর্ণনা (অন্যান্য লাইব্রেরিতে ঝালটির জন্য সাপোর্টপোর্ট যুক্ত করার জন্য দরকারী):

অসঙ্গতি মেগা এবং ইউএনওর মধ্যে আর্দুইনো পিন-আউটের জন্য বিভিন্ন পোর্ট ম্যাপিং থেকে আসে।

মধ্যে ইউএনও , LCD ঢাল মাধ্যমে সংযুক্ত হবে:

+---------------+-----+-----+-----+-----+-----+-----+-----+-----+
| LCD Data Bit  |  7  |  6  |  5  |  4  |  3  |  2  |  1  |  0  |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+
| Digital pin # |  7  |  6  |  5  |  4  |  3  |  2  |  9  |  8  |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+
| Uno port/pin  | PD7 | PD6 | PD5 | PD4 | PD3 | PD2 | PB1 | PB0 |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+

মধ্যে মেগা এটা মাধ্যমে সংযুক্ত হবে:

+---------------+-----+-----+-----+-----+-----+-----+-----+-----+
| LCD Data Bit  |  7  |  6  |  5  |  4  |  3  |  2  |  1  |  0  |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+
| Digital pin # |  7  |  6  |  5  |  4  |  3  |  2  |  9  |  8  |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+
| MEGA port/pin | PH4 | PH3 | PE3 | PG5 | PE5 | PE4 | PH6 | PH5 |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+

1
হে ভগবান!! এটি কাজ করছে: ডি প্রথমে আমি এড়ুইডো এনহান্সড রিলিজটি ডাউনলোড করুন এখান থেকে 1.0.5 : ফোরাম.আর্ডুইনো.সি.সি / ইন্ডেক্স.এফপি / টপিক , ১১৪৮৪০০.০.ইচটিএমএল এর পরে আমি আপনার গিটহাব কোডটি খুললাম তারপরে এটি ডাউনলোড করুন। আমি পূর্বে ডাউনলোড করা ডিভিসি / সি ++ প্রোগ্রামের মাধ্যমে swtft.cpp খুলি। আমি এর সাথে আনো লাইনগুলি পরিবর্তন করি: # "মেগা_৪৪_শিল্ড এইচ" অন্তর্ভুক্ত করুন তারপর আমি কোডটি মেগায় আপলোড করেছি এবং এটি কার্যকর হয়েছে। আমি কেবল মেগায় ২.৪ "টিএফটি এলসিডি রেখেছি, আমি আর কোনও সংযোগ তৈরি করিনি Just আমি কেবল মেগার উপরে theাল রেখেছি: ডি Godশ্বর আপনাকে রক্ষা করেছেন: ডি খুব বিশেষ ধন্যবাদ আপনাকে ত্রুটিটি এখনও months মাস হয়েছে। ধন্যবাদ।
বে

4

এগিয়ে যাওয়ার উপায় হ'ল এই বোর্ডের দ্বারা ব্যবহৃত পিনের অবস্থানগুলি প্রদর্শন করে একটি স্প্রেডশিট তৈরি করা এবং আরডুইনো শিল্ড সংকেতগুলি তারা প্লাগ ইন করে। এর পাশেই, আপনাকে এই কভারগুলি পিনগুলির সাথে সংযুক্ত এটিএমএগা 2560 (মেগা 2560 এর জন্য) এবং এটিএমগা 328 (ইউনোর জন্য) এর প্রকৃত সংকেতগুলি দেখানো কলামগুলির প্রয়োজন। আপনি ইউনো এবং মেগা 2560 স্কিম্যাটিক অঙ্কনগুলি থেকে এই তথ্যটি পেতে পারেন।

তাত্ক্ষণিকভাবে দেখুন, দেখে মনে হচ্ছে যে ইউনো এবং মেগা এর জন্য আরডুইনো শিল্ড পিনের নাম একই: উদাহরণস্বরূপ, ঝাল পিন '0' (ডিজিটাল শূন্য) উভয় বোর্ডে একই জায়গায় এবং অন্য পিনের জন্য একইভাবে।

যাইহোক, ইউনো ডিজিটাল -0 এ এটিএমইগা 328 পোর্ট ডি বিট 0-এ সংযুক্ত থাকে, মেগা 2560 এ এটি এটিএমগা 2560 পোর্ট ই বিট 0 এ সংযুক্ত থাকে এবং ডিজিটাল ২. with এর সাথে জিনিসগুলি আরও অবসন্ন হয়ে যায়।

এখন, যখন ডিজিটাল রাইট (পিন, মান) ব্যবহার করে স্বতন্ত্রভাবে বিটগুলি বিড়াল করার সময়, আরডুইনো গ্রন্থাগার কোনও সন্দেহ নেই যে এটিএমগা চিপ এবং আরডুইনো বোর্ডের জন্য ব্যবহৃত উপযুক্ত পোর্ট / বিটগুলিতে অনুবাদ করার ক্ষেত্রে কোনও সন্দেহ নেই। তবে, যে লাইব্রেরিগুলি নিম্ন-স্তরের ফাংশনগুলি ব্যবহার করে (বিশেষত যদি তাদের একটি দ্রুত এলসিডি লাইব্রেরি হিসাবে বন্দরগুলিতে পুরো বাইটগুলি লেখার প্রয়োজন হয়) এই অনুবাদটি করার জন্য তাদের নিজস্ব পদক্ষেপ নিতে হবে।

সুতরাং ... প্রথম পদক্ষেপটি মেগা 2560 এর জন্য আলাদা এলসিডি ড্রাইভার লাইব্রেরি আছে কিনা তা নির্ধারণ করা।

এরপরে, আপনার কাছে যে লাইব্রেরি রয়েছে সেটি কোন বোর্ডে চলছে তা নির্ধারণ করার জন্য (এবং আপনার বোর্ডটি অন্তর্ভুক্ত?) বা আপনি কী বোর্ড ব্যবহার করছে তা বলার জন্য আপনাকে কিছু পতাকা সেট করতে হবে কিনা তা অনুসন্ধান করুন investigate

যে ব্যর্থ, আপনি পারে মেগা এর ATMega2560 এর সংকেত যাতে এটি একটি Uno হবে মতো ওয়্যার্ড এর মাথা গলান জামাবিশেষ করতে মাথা গলান জামাবিশেষ একটি জগাখিচুড়ি অথবা অন্য কোনো তারের স্কীম তৈরি করুন। এটি সম্ভব কিনা তা পরিষ্কার নয়, যেহেতু এটিএমইগা 2560 এর কিছু পোর্ট ডি এমনকি শিরোনামের সাথে তারওযুক্ত না।

অথবা আপনি গ্রন্থাগারের জন্য সোর্স কোডটি দেখতে এবং এটি দেখতে পাচ্ছে যে এটি আসলে কী করছে এবং এটিএমটিগা 2560 পিনগুলি যেটি toাল সংযোগের সাথে সংযুক্ত রয়েছে তা পরিচালনা করতে এটির জন্য আলাদা কী প্রয়োজন।


2

আপনি কি লাইব্রেরির হোমপেজটি পরীক্ষা করে দেখেছেন? হেনিং কার্লসেনের লাইব্রেরির পৃষ্ঠা

তিনি গ্রন্থাগারের জন্য একটি ব্যবহারকারী ম্যানুয়াল তৈরি করেছেন। প্রয়োজনীয় নথিতে কোথায় পিন যায় তার একটি রেফারেন্সও রয়েছে।


0

আপনার মেগা এবং আপনার বন্ধুর ইউনোর মধ্যে পিনের ক্রিয়াগুলি তুলনা করতে হবে। তারপরে আপনার সেই বৈদ্যুতিন সংযোগগুলি হওয়া দরকার। আমি এখানে আমার উত্তরের "পিন অবস্থানগুলি" বিভাগে এই সম্পর্কে একটু কথা বলি ।

এটির জন্য "হ্যাকিং" দরকার। এই শারীরিক সংযোগগুলি পুনরায় তৈরি করার জন্য কিছু করা দরকার। আমি সাধারণত প্রয়োজন হিসাবে পিনগুলি অনুবাদ করতে একটি মধ্যবর্তী .াল ব্যবহার করি। এই উদ্দেশ্যে বিশেষত একটি ঝাল তৈরি করা হয়েছিল তবে আমি এটি খুঁজে পাইনি। এই এক কাজ করবে ?


SPালটি D0-D7 ছবি ব্যবহার করায় এসপিআই কোনও সমস্যা নয় । অন্য কোন জিনিস এটি প্রভাবিত করতে পারে?
বেনামে পেঙ্গুইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.