Même sur le site Web d'Ebay, il est mentionné que je ne peux pas utiliser l'écran de blindage LCD TFT 2,4 "pour le connecter à Arduino Mega. Le problème est que j'ai acheté ce bouclier par erreur. Je veux mettre ce bouclier sur Arduino Mega 2560. Y a-t-il un moyen de combiner Mega et 2,4 "Display Shield?
note: J'ai essayé l'Arduino Uno de mon ami. Shield fonctionne très bien.
note: La photo ci-dessous détermine ma question. L'écran n'exécute pas le code de mon Arduino. Il ne fait fonctionner que sa LED.
// 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
baie
la source
la source
UTFT myGLCD(UNO_24,A2,A1,A3,A4);
Réponses:
Je viens d'acheter les mêmes écrans LCD il y a quelques jours, à la recherche d'une bibliothèque pour l'utiliser avec une carte MEGA 2560, j'ai trouvé https://github.com/Smoke-And-Wires/TFT-Shield-Example-Code qui prend en charge les cartes UNO et MEGA .
L'utilisation est très simple si nous voulons l'utiliser pour MEGA, nous devons changer l'en-tête
#include "uno_24_shield.h"
dans SWTFT.cpp en#include "mega_24_shield.h"
Description (utile pour ajouter un support pour le bouclier dans d'autres bibliothèques):
L'incompatibilité provient de différents mappages de ports pour le brochage Arduino entre Mega et UNO.
dans UNO LCD shield sera connecté par:
dans MEGA, il sera connecté via:
la source
Une façon de procéder consiste à créer une feuille de calcul indiquant les positions des broches utilisées par cette carte et les signaux de blindage Arduino auxquels ils se connectent. À côté de ceux-ci, vous avez besoin de colonnes montrant les signaux réels sur l'ATMega2560 (pour Mega2560) et l'ATMega328 (pour Uno) auxquels ces broches de blindage se fixent. Vous pouvez obtenir ces informations à partir des dessins schématiques Uno et Mega2560.
En un coup d'œil, il semble que les noms des broches de blindage Arduino pour Uno et Mega soient les mêmes: par exemple, la broche de blindage '0' (zéro numérique) est au même emplacement sur les deux cartes, et de même pour les autres broches.
Cependant, sur l'Uno digital-0 se connecte au bit 0 du port D ATMega328, tandis que sur le Mega2560, il se connecte au bit 0 du port E ATMega2560. Et les choses deviennent plus obtuses avec le numérique 2..7.
Désormais, lors du twiddling de bits individuellement à l'aide de digitalWrite (broche, valeur), la bibliothèque Arduino se charge sans aucun doute de traduire le port / les bits appropriés qui doivent être définis pour la puce ATMega et la carte Arduino qui sont en cours d'utilisation. Cependant, les bibliothèques qui utilisent des fonctions de niveau inférieur (en particulier si elles ont besoin d'écrire des octets entiers sur les ports, comme une bibliothèque LCD rapide peut le faire) devront prendre leurs propres mesures pour effectuer cette traduction.
Donc ... la première étape consiste à déterminer s'il existe une bibliothèque de pilotes LCD distincte pour Mega2560.
Ensuite, vérifiez si la bibliothèque que vous avez possède un code d'initialisation qui est censé déterminer sur quelle carte elle s'exécute (et votre carte est-elle incluse?), Ou vous demande de définir un indicateur pour lui indiquer quelle carte est utilisée.
À défaut, vous pourriez créer un gâchis de cavaliers ou un autre schéma de câblage pour brancher les signaux du Mega ATMega2560 de sorte qu'il soit câblé comme le ferait un Uno. Il n'est pas clair que cela soit possible, car une partie du port D de l'ATMega2560 n'est même pas câblée à un en-tête.
Ou vous pouvez regarder le code source de la bibliothèque et voir ce qu'elle fait réellement, et ce qu'il faudrait faire différemment pour faire fonctionner les broches ATMega 2560 auxquelles le bouclier se connecte.
la source
Avez-vous consulté la page d'accueil de la bibliothèque? Page de la bibliothèque de Henning Karlsen
Il a réalisé un manuel d'utilisation pour la bibliothèque. Il y a également une référence à quelle broche va où dans le document des exigences.
la source
Vous devez comparer les fonctions des broches entre votre Mega et l'Uno de votre ami. Ensuite, vous devez effectuer ces connexions électriques. J'en parle un peu dans la section "emplacements des broches" de ma réponse ici .
Cela nécessite un "piratage". Quelque chose doit être fait pour rediriger ces connexions physiques. J'utilise normalement un bouclier intermédiaire pour traduire les broches au besoin. Il y avait un bouclier spécialement conçu à cet effet, mais je ne l'ai pas trouvé. Peut-être que celui-ci fonctionnerait ?
la source