Bahkan di situs web ebay disebutkan bahwa saya tidak dapat menggunakan layar LCD TFT 2.4 "yang terpasang pada Arduino Mega. Masalahnya adalah saya membeli perisai ini secara tidak sengaja. Saya ingin meletakkan perisai ini ke Arduino Mega 2560. Apakah ada cara untuk menggabungkan Mega dan 2.4 "Display Shield?
Catatan: Saya mencoba Arduino Uno teman saya. Shield bekerja dengan sangat baik.
Catatan: Foto di bawah ini menentukan pertanyaan saya. Layar tidak menjalankan kode Arduino saya. Ini hanya menjalankan LED-nya.
// 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);
}
arduino-mega
shields
lcd
Teluk
sumber
sumber
UTFT myGLCD(UNO_24,A2,A1,A3,A4);
Jawaban:
Saya kebetulan membeli Perisai LCD yang sama beberapa hari yang lalu, mencari perpustakaan untuk menggunakannya dengan papan MEGA 2560 yang saya temukan https://github.com/Smoke-And-Wires/TFT-Shield-Example-Code yang mendukung papan UNO dan MEGA .
Penggunaannya sangat, sederhana jika kita ingin menggunakannya untuk MEGA kita harus mengubah header
#include "uno_24_shield.h"
di SWTFT.cpp menjadi#include "mega_24_shield.h"
Deskripsi (berguna untuk menambahkan dukungan untuk perisai di perpustakaan lain):
Ketidakcocokan berasal dari pemetaan Port yang berbeda untuk pin-out Arduino antara Mega dan UNO.
di UNO LCD perisai akan terhubung melalui:
di MEGA itu akan terhubung melalui:
sumber
Cara untuk melanjutkan adalah membuat spreadsheet yang menunjukkan posisi pin yang digunakan oleh board ini, dan sinyal pelindung Arduino yang mereka tancapkan. Di sebelah ini, Anda perlu kolom yang menunjukkan sinyal aktual pada ATMega2560 (untuk Mega2560) dan ATMega328 (untuk Uno) yang ditempelkan oleh pin perisai ini. Anda bisa mendapatkan info ini dari gambar skematik Uno dan Mega2560.
Dalam sekilas, tampaknya nama pin perisai Arduino untuk Uno dan Mega adalah sama: misalnya, pin perisai '0' (nol digital) berada di lokasi yang sama di kedua papan, dan juga untuk pin lainnya.
Namun, pada Uno digital-0 menempel pada ATMega328 Port D bit 0, sedangkan pada Mega2560, ia melekat pada ATMega2560 Port E bit 0. Dan hal-hal menjadi lebih tumpul dengan digital 2..7.
Sekarang, ketika memutar-mutar bit secara individual menggunakan digitalWrite (pin, value), perpustakaan Arduino pasti akan menerjemahkan ke port / bit yang sesuai yang perlu diatur untuk chip ATMega dan papan Arduino yang digunakan. Namun, pustaka yang menggunakan fungsi tingkat rendah (terutama jika mereka perlu menulis seluruh byte ke port, seperti pustaka LCD yang cepat) akan perlu mengambil langkah mereka sendiri untuk membuat terjemahan ini.
Jadi ... langkah pertama adalah menentukan apakah ada pustaka driver LCD terpisah untuk Mega2560.
Selanjutnya, selidiki apakah pustaka yang Anda miliki memiliki kode inisialisasi yang seharusnya menentukan papan apa yang digunakannya (dan apakah papan Anda termasuk?), Atau mengharuskan Anda menetapkan beberapa tanda untuk memberi tahu papan apa yang sedang digunakan.
Jika gagal, Anda dapat membuat kekacauan jumper atau skema pengkabelan lainnya untuk melompati sinyal ATMega2560 Mega sehingga terhubung seperti Uno. Tidak jelas apakah ini mungkin, karena beberapa Port D ATMega2560 bahkan tidak ditransfer ke header.
Atau Anda dapat melihat kode sumber untuk pustaka dan melihat apa yang sebenarnya dilakukan, dan apa yang perlu dilakukan berbeda untuk mengoperasikan pin ATMega 2560 yang terhubung dengan perisai.
sumber
Sudahkah Anda memeriksa beranda Perpustakaan? Halaman perpustakaan Henning Karlsen
Dia telah membuat manual untuk perpustakaan. Ada juga referensi ke pin mana yang ada di dokumen persyaratan.
sumber
Anda perlu membandingkan fungsi pin antara Mega dan Uno teman Anda. Maka Anda perlu membuat sambungan listrik tersebut terjadi. Saya berbicara sedikit tentang ini di bagian "pin lokasi" dari jawaban saya di sini .
Ini membutuhkan "peretasan". Sesuatu harus dilakukan untuk mengubah rute koneksi fisik tersebut. Saya biasanya menggunakan perisai perantara untuk menerjemahkan pin sesuai kebutuhan. Ada perisai yang dibuat khusus untuk tujuan ini tetapi saya tidak dapat menemukannya. Mungkin yang ini akan berhasil ?
sumber