Bonjour à tous,
Totalement Newbie sur Arduino, je suis un peu perdu dans le choix des librairies, Pourquoi?
Et bien j'ai commencé un sketch "Menu" tout bête pour prendre la main sur mon TFT.
Je trace des traits, déplace un rectangle selon le choix du menu par le tactile et affiche un intitulé.
#include <stdint.h>
#include <SeeedTouchScreen.h>
#include <TFTv2.h>
#include <SPI.h>
#define GRAY1 0x8410
#define GRAY2 0x4208
//Tableaux
int YRecMenu[]={01,61,121,181};
unsigned int colors[] = {RED, GREEN, BLUE, YELLOW, BLACK};
char* MENU[]={"MENU 1: ACCUEIL","MENU 2: CONSOLE","MENU 3: LOCALISATION","MENU 4:PARAMETRES"};
//Variables
byte LimitMenu=40;
byte IndexBefMenu=0;
byte IndexTch=0;
int color = GREEN; //Paint brush color
TouchScreen ts = TouchScreen(XP, YP, XM, YM); //init TouchScreen port pins
void setup()
{
TFT_BL_ON; // turn on the background light
Tft.TFTinit(); //init TFT library
Serial.begin(115200);
//Orientation du TFT
Tft.setDisplayDirect(DOWN2UP); //where XXXXXX is LEFT2RIGHT, RIGHT2LEFT, DOWN2UP, or UP2DOWN, in your code
// Rectangle de selection Menu
Tft.fillRectangle(YRecMenu[0],39,59,5,RED);
//Dessiner le menu
Tft.drawHorizontalLine(0,LimitMenu,239,GRAY2);
Tft.drawVerticalLine(120,0,LimitMenu,GRAY2);
Tft.drawVerticalLine(180,0,LimitMenu,GRAY2);
//Tft.drawString("Hello",50,100,1,GRAY1);
}
void loop()
{
// a point object holds x y and z coordinates.
Point p = ts.getPoint();
//map the ADC value read to into pixel co-ordinates
p.x = map(p.x, TS_MINX, TS_MAXX, 0, 240);
p.y = map(p.y, TS_MINY, TS_MAXY, 0, 320);
if (p.z > __PRESURE) {
// Detect paint brush color change
if(p.y < LimitMenu)
{
IndexTch = p.x/60;
if ( IndexTch!= IndexBefMenu){
color = colors[IndexTch];
// Rectangle de selection Menu
Tft.fillRectangle(YRecMenu[IndexTch],39,59,5,color);
// Effacer le precedent Rectangle de selection Menu
Tft.fillRectangle(YRecMenu[IndexBefMenu],39,59,5,BLACK);
// Afficher le libellé du menu
Tft.fillRectangle(1,318,15,270,color);
Tft.drawString(MENU[IndexTch],5,314,1,GRAY1);
IndexBefMenu=IndexTch;
}
}
else
{
}
}
}
Comme vous avez pu le voir, j'ai cherché à faire une rotation de l'écran pour l'avoir en paysage
Tft.setDisplayDirect(DOWN2UP); //where XXXXXX is LEFT2RIGHT, RIGHT2LEFT, DOWN2UP, or UP2DOWN, in your code
Et c'est la que le bas blesse, l'écran passe bien en paysage, mais pas le point '0:0' qui reste en haut à droite (TFT en paysage)
J'ai donc cherché une autre solution, et j'ai trouvé rotate(x)
dans la librairie Adafruit-GFX-Library-master, mais ça ne fonctionne pas, et une pelle d'erreurs sont générées à la compilation, malgré l'appel
#include <Adafruit_GFX.h>
.
Comme dit plus haut, j'ai recu mon premier Arduino hier, et je découvre, si quelqu'un pouvait m'en dire comment faire le choix parmi la forêt des librairies existantes pour le même shield! Quels seraient les points d'attention?
Merci à tous