Un ecran 3,2" sympa pour Arduino Mega

Ayant testé quelques écrans TFT, je vous partage ce modèle que j'apprécie et qui est parfaitement compatible avec un Arduino Mega... http://www.volumerate.com/product/open-smart-touch-screen-expansion-shield-w-touch-pen-for-arduino-450238

[u]Les plus:[/u] - pas cher (7,31€). - résolution 240x400 plutôt confortable à l'usage. - pas besoin de shield d'adaptation qui ajoute de l'épaisseur. - affichage relativement rapide par rapport à d'autres TFT que j'ai testé (Kuman). - qualité d'image (angle de vue, joli contraste et pas ou très peu de rémanence). - accès à la carte micro SD en spi hardware sur Arduino Mega contrairement à beaucoup de shields qui imposent au mieux d'en passer par le spi soft qui est bien moins performant. - le gabarit de la carte ne cache pas l'accès aux ports supérieurs du Méga (entrées/sorties 23 à 53).

[u]Les moins:[/u] - la qualité de l'alimentation qui fait que la luminosité de l'écran peut varier lors du rafraichissement. Le problème apparait chez moi avec l'alimentation Usb du PC ou un transfo externe. Le souci disparait presque totalement lorsque mon arduino est alimenté via un Ubec 5v. Un lissage de l'alim écran avec un condo me semble donc tout indiqué pour supprimer ce défaut.

En bonus, moyennant un coup de Dremel, on peut aussi récupérer facilement l’accès aux entrées/sorties A6 à A15 et 14 à 21… |374x500 |374x500 |500x272

Bref vraiment sympa cet écran. :)

Voici une image pour comparer le nouvel écran à droite et un Kuman K60 2.8" 320x240 à gauche... |500x329 En plus du confort apporté par le gain en résolution, on peut voir que le Kuman vire au bleuté dans les noirs alors que le modèle Open Smart reste parfaitement noir.

Un petit up pour montrer l'écran en action...

http://www.youtube.com/watch?v=LHpEZYp4NEY

Sympa, en effet il marcherait avec un Nano ?

N'ayant jamais joué avec un nano, je ne saurais dire.

j
Joli, quelle(s) librairie(s) utilises-tu pour le gérer ?

marscaper: N'ayant jamais joué avec un nano, je ne saurais dire.

On va poser la question autrement : Quelles sont les pins utilisées par l'écran ?

Edit j'ai la réponse :

  • Compatibility: As the SD card is connected to SPI pins of ICSP interface, compatible with Arduino UNO R3 / Arduino Mega2560 / Arduino Leonardo

S'il est compatible UNO il est compatible Nano.

  • Use the A0 ~ A3 pins, D4 ~ D13 pins. And I2C interface, D0 / D1 / D2 / D3 is available,

please refer to the product schematics for the details.

Pas de chance je n'ai pas trouvé de schéma.

68tjs: On va poser la question autrement : Quelles sont les pins utilisées par l'écran ?

Edit j'ai la réponse :S'il est compatible UNO il est compatible Nano. Pas de chance je n'ai pas trouvé de schéma.

Merci du complément d'infos 68tjs. Intuitivement, j'aurais pensé que le nano était plus limité qu'un Uno.

JFArdidi: Joli, quelle(s) librairie(s) utilises-tu pour le gérer ?

Merci JFArdidi. Il y a une librairie MCUFRIEND_kbv modifiée à télécharger (voir lien sur la fiche produit). La classe hérite de Adafruit_GFX donc compatible avec la librairie d'Adafruit pour les tracés.

Perso, je trouve ça fonctionnellement un peu trop limité donc je suis en train de développer une librairie de composants d'IHM (label, bouton, etc) inspirée des NSView de Cocoa sur Mac... Working with the View Hierarchy

Il m'est ainsi possible de créer des interfaces assez sympas en C++ avec un minimum d'effort. Voici un aperçu de code...

  GradientBackgroundView *background = new GradientBackgroundView();
  background->setFrame(_screenView->frame());
  _screenView->addSubview(background);
  
  View *header = new HeaderView();
  header->setFrame(MakeRect(0, -20, _screenView->width(), 20));
  background->addSubview(header);
  
  LabelView *headerLabel = new LabelView();
  headerLabel->setFrame(MakeRect(32, 1, _screenView->width()-64, 17));
  headerLabel->setLabel("Gamepad");
  headerLabel->setTextSize(2);
  headerLabel->setHidden(true);
  header->addSubview(headerLabel);
  
  View *footer = new FooterView();
  footer->setFrame(MakeRect(0, _screenView->height(), _screenView->width(), 40));
  background->addSubview(footer);

A terme, je mettrais à dispo le code sur mon github.

68tjs: On va poser la question autrement : Quelles sont les pins utilisées par l'écran ?

Edit j'ai la réponse :S'il est compatible UNO il est compatible Nano.

Les puissances de sortie sont les mêmes ?

Qu'est ce que tu appelle puissance de sortie ?

La Nano c'est une Uno en petit format, les deux cartes utilisent le même microcontrôleur. La Uno est une carte Arduino. La Nano est une carte Gravitech. Le circuit d'alim est un peu différent mais il ne me viendrait jamais à l'idée de faire fournir de la puissance à ce genre de carte. Faire passer 20 mA dans une sortie revient à : i= 0 mA Niveau bas = 0 V Niveau haut = Vcc i= 20 mA Niveau bas = +0,5 V Niveau haut = Vcc -0,5 V

Le circuit imprimé de la nano est bien rempli et les connecteurs sont à souder. Le circuit de la UNO est vide, sa grande taille n'est là que pour accueillir les cartes d'extensions à enficher. Sur la Uno les contacts des connecteurs ne sont, a peu près, fiables qu'avec les "shields", la grande quantité de pins améliore la rigidité mécanique de l'ensemble, avec les fiches individuelles Dupont c'est du n'importe quoi

Merci Marscaper, je suivrai avec attention ton développement.

68tjs: Qu'est ce que tu appelle puissance de sortie ?

J'aurais du dire "les courants". Je ne connais pas le Uno, j'ai démarré avec des Nano directement.

La Nano est un bon choix. Au risque de me répéter la UNO, la nano et la micro-pro utilisent le même microcontrôleur donc elles ont les même performances : celles de la famille avr d'Atmel.

Démo d'avancement de ma nouvelle bibliothèque C++ ScreenView... https://www.youtube.com/watch?v=F3YhXU-TF5U Elle sera compatible avec les écrans exploitant la bibliothèque Adafruit.

Dans les grandes lignes la bibliothèque permettra: - Mise à dispo de composants graphiques de base (label, boutton, slider, image BMP 16 bits et 24 bits, conteneurs, etc). - Agencement hiérarchique des composants graphiques. - Rafraichissement optimisé pour ne mettre à jour que les zones modifiées. - Le tactile de la bibliothèque TouchScreen d'Adafruit a été amélioré pour gérer le touch down, touch move et touch up. - Possibilité de réaliser des captures d'écran en bmp vers carte micro SD (pratique pour faire de la doc). - Un mode "vision de nuit" est intégré d'origine pour les projets astro. :sunglasses:

Bonjour marscaper,

je vois que le projet avance, bravo, inclus la bibliothèque Arduino pour l'écran.

Je m'en suis procuré un et après avoir télécharger la mauvaise librairie, eu quelques doutes sur ce matériel ou sur mes compétences, ensuite avec la bonne bibliothèque j'ai exécuté les codes exemples sans problèmes.

ça marche et plutôt bien, bonne trouvaille.

Te sers-tu du réglage de la luminosité via la pin 3 de l'arduino en PMW, après suppression du pont de soudure en P4 et soudure de P3 ? (références du schéma "TFT Shield 3.2inch 8352B")

bonjour, Il manque le reflexe communautaire. Et un petit lien vers la bonne bibliothèque pour partager ton expérience et que ta ta mésaventure n'arrive pas aux autre ?

JFArdidi: Je m'en suis procuré un et après avoir télécharger la mauvaise librairie, eu quelques doutes sur ce matériel ou sur mes compétences, ensuite avec la bonne bibliothèque j'ai exécuté les codes exemples sans problèmes.

Comme je l'avais indiqué dans mon premier message, le lien est dans la fiche produit. Ca pointe vers un google drive. Par contre effectivement il faut faire gaffe au nom. Il y a plusieurs bibliothèques à dispo. il faut faire attention au nom.

JFArdidi: ça marche et plutôt bien, bonne trouvaille.

Content que cela puisse servir à d'autres. Moi je m'en suis commandé un second du coup. :)

JFArdidi: Te sers-tu du réglage de la luminosité via la pin 3 de l'arduino en PMW, après suppression du pont de soudure en P4 et soudure de P3 ? (références du schéma "TFT Shield 3.2inch 8352B")

Non mais ça m’intéresse. Pour l'instant, j'ai prévu un réglage de luminosité niveau soft mais pourquoi pas en hardware. Si tu peux détailler un peu je suis preneur. :)

68tjs: bonjour, Il manque le reflexe communautaire. Et un petit lien vers la bonne bibliothèque pour partager ton expérience et que ta ta mésaventure n'arrive pas aux autre ?

Je me permets de répondre à la place de JFArdidi c'est l'archive "[OPEN-SMART] TFT LCD Shield 3.2inch SP 20170406" de mémoire. Il faut faire attention car il y a une libraire pour un TFT 3.0inch à côté. Et je vois à l'instant qu'ils ont aussi ajouté une archive "[OPEN-SMART] TFT LCD Shield 3.2inch Update HX8352B".

Marscaper, bien au contraire merci d'avoir répondu "à ma place".

Je suis novice dans l’utilisation des forums, et donc de celui-ci, je ne tiens pas à mettre de mauvaises infos à la disposition de la communauté (J'ai grillé ainsi un driver de moteur pas à pas en suivant une démo erronée. Leçon prise pour moins de deux euros, ça va, toujours mon voltmètre je prendrai).

Par contre c'est avec l'archive "[OPEN-SMART] TFT LCD Shield 3.2inch Update HX8352B", que j'ai fais fonctionner l'écran (Comme cela fonctionnait je n'ai pas essayé celle que tu utilises "[OPEN-SMART] TFT LCD Shield 3.2inch SP 20170406" et ne peux dire s'il y a des différences)

Concernant le réglage de luminosité via D3 en PWM, j’expérimente cela dès que je peux et je le partage (peut-être pas avant septembre car les vacances approchent).

Salut toutes et tous,

il est possible de piloter la luminosité de l'écran via la pin 3 sur Arduino UNO, mais il convient de supprimer sur le circuit imprimé de l'écran le pont de soudure en P4 et d'en établir un en P3. Laisser P4 en reliant les points de P3 revient à mettre directement la pin 3 à +5V, ce qui ne manquera pas de causer des dégâts sur l'Arduino.

Les ponts P3 et P4 sont bien localisés sur le circuit imprimé dans le zone "backlight" entourée de pointillés :

|500x500

Question code, il convient de déclarer la pin 3 et d’écrire sur celle-ci la valeur de luminosité souhaitée sur un octet : 0->0% de luminosité, 255-> 100% de luminosité. Cela peut ressembler à :

const byte pinLuminosite = 3;
.
.
analogWrite(pinLuminosite, luminosite);

Voilà, c'est tout ça marche sans problème, je ne constate pas de scintillement, la fréquence de PWM "par défaut" de la pin 3 est adaptée. Bonnes réalisations.