Bonjour à tous,
Cela fait plusieurs jours que je butte sur un problème me bloquant dans mon projet.
Voici le matériel que j'utilise :
- carte Arduino MEGA 2560
- Shield Ethernet Arduino
- Ecran TFT LCD Screen 1.77" arduino
Les 3 éléments sont branchés ensemble.
Lorsque je ne déclare rien pour le réseau, tout fonctionne parfaitement. Le programme est bien transféré, l'écran s'allume et mon programme fonctionne (activation de différentes sorties numériques et affichage des états sur l'écran).
Lorsque je rajoute la configuration réseau, le programme ne se transfère plus et l'écran reste blanc.
J'ai un gros doute concernant les ports numériques utilisés.
D'après le site internet arduino, le TFT et le shield ethernet doivent utiliser des sorties communes, entre autres les sorties 50, 51 et 52 de la Mega 2560.
TFT LCD Screen
MISO: 50 on Mega 2560 (Miso on ADK)
SCK: 52 on Mega 2560 (Sck on ADK)
MOSI: 51 on Mega 2560 (Mosi on ADK)
Ethernet shield
This is on digital pins 10, 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used to select the W5100 and pin 4 for the SD card. These pins cannot be used for general I/O. On the Mega, the hardware SS pin, 53, is not used to select either the W5100 or the SD card, but it must be kept as an output or the SPI interface won't work.
Je ne maîtrise pas trop la bibliothèque SPI, je ne vois pas comment résoudre mon problème.
Peut être ai-je oublié une déclaration dans mon programme ?
Au cas où, voici mon code. Si quelqu'un pouvait m'aider ... UN GRAND MERCI D'AVANCE.
arrosage.ino (10.1 KB)
Bonjour,
Essaie d'ajouter au début du setup():
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);
pinMode(10,OUTPUT);
digitalWrite(10,HIGH);
pinMode(53,OUTPUT);
Bonjour Cbrandt,
Merci pour cette aide.
Ça fonctionne ... mieux.
Maintenant, le programme est transféré, l'écran s'allume et le programme s’exécute.
En revanche, pas moyen de me connecter au réseau.
Ça fait 2 heures que je tourne le problème dans tous les sens et que j'essaye des exemples pour vérifier.
Quand je vérifie l'adresse IP (localIP), il m'indique 0.0.0.0
Bizarre ...
Une piste ?
J'espère que ce n'est pas un problème matériel.
Merci pour l'aide.
Ton écran est en spi apparemment...
Ajoute
pinMode(pin-cs-de-l-ecran, OUTPUT);
digitalWrite(pin-cs-de-l-ecran,HIGH);
au début du setup()
et
delay(3000);
après ethernet.begin
Et si ça ne marche toujours pas, sketch minimal:
- les pinMode etc que j'avais déjà indiqués
- ethernet.begin
- loop() vide
Ping ta carte depuis le Pc pour voir
Bonjour,
Je viens donc de faire de nouveaux essais avec les modifs que tu m'as indiqué.
Résultat : rien ne change.
En revanche, je viens de faire un test avec un exemple tout simple. Le réseau fonctionne si ... je n'alimente pas le TFT. Dès que je le rebranche, ca plante.
Il y a donc un blocage soit au niveau de l'alimentation, soit au niveau des ports utilisés.
J'ai fait un essai avec une alim externe, et rien ne change.
Donc, c'est plutôt au niveau des ports.
Je continu à chercher mais si tu vois une explication, je suis preneur ...
Merci.
Bon, je vais de faire un nouvel essai en alimentant le TFT indépendamment.
J'utilise une autre carte Arduino pour récupérer le +5V.
Eh bien là, tout fonctionne
.
Bizarre, c'est donc un problème d'alimentation.
L'écran consomme trop ? L'alimentation de l'arduino 2560 est trop juste ?
Vous avez une idée du problème ? Il faut que je prévois une alim séparée pour mon montage définitif ?
Merci pour votre retour.
Oui il est tout à fait possible que le shield ethernet plus le shield tft soient trop pour l'arduino... L'alimentation séparée semble nécessaire.
Bonjour,
j'ai le même problème, je viens d'essayer avec un deuxieme arduino qui ne sert que d'alimentation pour l’écran. mais impossible de faire fonctionner le shield ethernet et l’écran en même temps.
pour info lorsque je ping a partir du pc il ne me met pas d'erreur, par contre modbus doctor (la connection me sert à récupérer des infos modbus) ne peut pas se connecter.
je ne comprend pas.
C'est bon j'ai trouvé 
J'utilise le constructeur :
Adafruit_ST7735 screen = Adafruit_ST7735(CS, DC, MOSI, SCLK, RESET);
au lieu du TFT screen = TFT(cs, dc, rst)
ce qui me permet de changer les pin mosi et sclk ailleurs que sur les pins commun a l'ethernet Shield.
et :
screen.initG();
screen.setRotation(1);
au lieu du screen.Begin()
et voila tout sur la même carte.... même l'alimentation 5V, pas d'alim supplémentaire.