Go Down

Topic: [Resolu] Affichage BMP avec SD.h ne fonctionne qu'avec le cable usb branché (Read 235 times) previous topic - next topic

Popol974

Bonjour,

j'ai pris l'exemple TFTBmp de ma librairie Adafruit_TFTLCD (ili9341),

ca fonctionne quand mon cable USB est branché.

Si j'alimente la carte avec l'adaptateur 9V 1A, ca ne fonctionne pas, l'écran reste noir après avoir démarré en blanc.

Idem avec une batterie Lipo 7.4V 1500mA...

J'avoue etre un peut dérouté, surtout que le 5V de la carte Mega 2560 est à 4.7v avec le cable USB branché et remonte à 4,93V avec l'adaptateur ou la batterie.

Est ce que quelqu'un a déja vu ce genre de soucis?

Merci par avance.
Beginer in Arduino but 30 years of electronic love :)

kamill

Bonjour,

Il n'y a pas longtemps quelqu'un sur le forum avait le même problème.
Dans son programme il y avait un 'while(Serial); Ce ne serait pas aussi ton cas?

Popol974

merci pour ta réponse Kamill,

j'ai cherché un truc "con" dans ce gout la mais il semble que la librairie sd.h est buggé et qu'il faut utiliser sdFat.h...problème de bus SPI au démarrage avec le CS...d'après ce que j'ai compris depuis 4h que je cherche...

Je ne trouve pas d'exemple d'utilisation de sdFat.h pour afficher un .bmp...

Je continu à chercher.

Merci pour ton aide, j'ai au moins 1 "reply" lol...
Beginer in Arduino but 30 years of electronic love :)

Popol974

Après 6h de recherche j'ai trouvé l'explication dans une documentation complète du chipset de l'afficheur tft lcd muni du lecteur SD :

SD card program is only working on UNO is that the IO of SPI bus of MEGA and UNO is different.

LoL

Si ca peut servir à ceux qui pourront galérer dans le futur...

Le pire c'est que ca fonctionne mais juste avec le cable USB, pas d'autres sources d'alimentation (sur une mega 2560).

Reste plus qu'à acheter un lecteur SD séparé pour la Mega 2560, est ce que quelqu'un pourrait me confirmer une référence qui fonctionne sur 2560 svp?
Beginer in Arduino but 30 years of electronic love :)

Popol974

Hello,

reprise des investigations ce matin!!!!!!!!!!!!!!!!!! CA MARCHE!!!!!!!!!!!!!!!!!!

Il "suffisait" d'adapter les niveaux (5V vs 3.3V) pour la partie SD intégré au TFT Geetech 2.8" car il n'y avait pas d'adaptation des signaux contrairement à toutes les autres broches.

L'idéal étant une adaptation digitale avec un 74xxx ou 4080, mais je me suis assez pris la tête et mon pont diviseur avec R1 à 2k et R2 à 4,7K fonctionne à merveille, et uniquement sur MOSI et CS!

Les niveaux sur MOSI et CS avant : 4.90V et après 3.40V sur batterie et 4,63V et 3,22V.

Donc conclusion, ne pas mettre un pont diviseur trop fort car ca ne fonctionne plus en USB sinon lol.

Quand je pense que c'est marqué dans la doc constructeur que ca ne fonctionne pas avec une MEGA 2560 et que avec une UNO, alors qu'il me semble que les niveaux sont les mêmes que ca soit une UNO ou une MEGA (dites moi si je me trompe) et qu'il suffit d'adapter les signaux en logique 3.3V....(pour faire sérieusement avec un 4080 ou 74xxxx).

Si ca peut servir par la suite à d'autres :)

Le constructeur a fait dans l'économie visiblement et pas posé le composant...
Beginer in Arduino but 30 years of electronic love :)

68tjs

Quote
Donc conclusion, ne pas mettre un pont diviseur trop fort car ca ne fonctionne plus en USB sinon lol.
Non la vraie conclusion est qu'il faut lire les données techniques des composants : les fameuses "datasheet".
Ce sont les seuls juges de paix, toutes autres informations ne provenant pas du site du fabricant du composant peut être en-tâchée "d'interprétations farfelues".

C'est valable en priorité pour les micro équipant les cartes Arduino : il faut aller chercher la datasheet sur le site d'Atmel/Microchip et consulter le chapitre "Electrical Characteristics" qui donne les niveaux électriques à respecter.

L'interprétation farfelue d'arduino la plus célèbre a été pendant longtemps les 40 mA max par sortie qui en fait ne sont que 20 mA et encore dans des conditions draconiennes. C'est actuellement rectifié mais le mal est fait et cette fausse information est bien ancrée dans la communauté.

Tu fais aussi une généralisation  en-tachée d'interprétation hâtive .
Le 5,0000V n'existe pas, il est impossible à obtenir.
Ce qui existe c'est des normes, et la norme pour l'alimentation 5V c'est justement que le 5V soit à +/- 5%. C'est à dire que le 5V sera compris entre 4,75V et 5,25V.

C'est à toi de t'assurer que si deux composants doivent dialoguer ils doivent pouvoir le faire dans toute l'étendue de la gamme du 5V.
En résumé :
  • Il faut connaître les valeurs min et max admissible par l'entrée de composant récepteur
  • Il faut vérifier que le niveau de sortie du  composant émetteur reste dans la gamme du composant récepteur dans les deux cas de figure :
       - Émetteur alim 4,75V ; récepteur alim 5,25V
      - Émetteur alim 5,25V ; récepteur alim 4,75V

En général cela se passe sans soucis parce que:
  • Les cartes arduino sont équipés de régulateurs de tension très précis
  • Idem pour alim USB des PC.

Ton PC est conforme, mais en limite de gamme autorisée (4,7V mesuré pour 4,75V min).
Comme quoi ce n'est pas parce que c'est rare que cela ne peut pas se produire un jour.

Popol974

mouaih...

généralisation et interprétation hative?

Heureusement que j'ai quelques restes de mon BTS électronique F2 passé il y a quelques décennies...

Quand personne ne répond à un POST, il faut bien se débrouiller tout seul, c'est ce que j'ai fait et solutionné mon problème.

Il me semble que les problèmes hardware intéressent peu de personnes, car force est de constater que pour le soft, ça répond vite et en nombre.

Je déplore donc ne pas avoir eu cette réponse de votre part avant, cela aurait été bien utile !
et accessoirement moins chronophage pour moi  :smiley-lol:

En tout cas, vu les post concernant ce genre de problème, je suis pas le premier, et encore moins le dernier, mais c'est toujours plaisant de trouver la bonne orientation à un problème rapidement (hard ou soft), ca évite de perdre du temps et d'aller à l'essentiel.

C'est pour cela que j'ai pris le temps de faire un retour précis sur la solution apportée, afin que ca profite à d'autres.

Bonne continuation.
Beginer in Arduino but 30 years of electronic love :)

Go Up