Shield RS232 en panne

Bonjour,

J’ai actuellement un Shield RS232 installé sur ma carte Arduino Leonardo que j’ai raccordée à une batterie et à un PC grâce à un câble RS232. Tout va bien je relie les câbles pour connecter le RX au TX, les deux LEDs sont allumées, tout sur l’image. Mais, je me suis absenté en laissant ma carte branchée sur l’ordinateur et je reviens et les deux LEDs ne sont plus allumées. Rien à faire même si j’alimente la carte par l’ordinateur, elles ne s’allument plus malgré la configuration identique. Je me suis demandé si ça ne venait pas de ma carte ou de mon Shield mais en essayant en changeant l’un des deux ou les deux impossible, ça ne marche plus. Au passage, il n’y a pas de documentation assez conséquente je mets quand même le fichier avec.

Si quelqu’un à une idée, il peut me la proposer, Merci :wink:

http___www.gotronic.fr_ori-shield-rs232-pour-arduino-25645 - Copie.jpg

pj2-rs232-english-1453.pdf (912 KB)

Quelqu'un aurait une solution, maintenant ?

Bonjour,

Pour voir si ta carte leonardo fonctionne, tu enlèves ton shield, tu relies TX et RX et tu lances ce programme

void setup() {
  Serial.begin(115200);
  Serial1.begin(115200);
  while(!Serial);
  Serial.begin("begin");
}

void loop() {
  while (Serial.available())
    Serial1.write(Serial.read());
  while (Serial1.available())
    Serial.write(Serial1.read());
}

Tu tapes quelque chose dans le moniteur série et il doit apparaître quand tu envoies.

Je n'aime pas beaucoup la carte leonardo car j'ai eu de nombreux déboires avec: port qui disparaît subitement ou qui change de numéro tout seul.

D'abord merci de répondre :slight_smile:

Je viens d'essayer ton programme dans Arduino et il me renvoie :

exit status 1
invalid conversion from 'const char*' to 'long unsigned int' [-fpermissive]

C'est plus que bizarre. A quelle ligne?

A la ligne 5 : Serial.begin("begin");

oups, je voulais mettre Serial.println(“begin”);

Ah d’accord merci !

Ça marche parfaitement, maintenant les deux LED sur le Shield sont allumées (J’ai branché RX au GND)
Mais maintenant je modifie quoi dans le programme pour passer à travers le câble RS232 ?

Tu ne modifies rien, tu enlève le strap entre tx et rx sur la carte et tu mets le shield sur la carte.
Ensuite sur le connecteur RS232 tu courcircuites les pins 2 et 3 et tu ressaies.

Qu'entends-tu par courcircuiter les pins ?

Sur le connecteur rs232 tu relies les broches 2 et 3. Su tu as des fils pour breadboard, tu peux le faire avec ça.

C'est bon, ça a du marcher, j'ai les deux LED éteintes.

est ce que tu reçois ce que tu envoies?

Oui, ça marche !
Qu'est-ce que je fais maintenant ?

Tout semble fonctionner, tu remontes ta manip et tu retestes.

J'ai tout remonté. Maintenant, je dois envoyer un message à travers le câble RS232 pour un afficheur lumineux défilant (McCrypt 590998), je dois le traduire en ASCII ou je le laisse comme tel ? Suis-je sensé retrouver une valeur en sortie même si je n'ai pas de COM associé ?

Il faut regarder la documentation de l'afficheur.
Généralement la transmission à ce type d'afficheur se fait en ASCII, mais il y a un protocole à respecter (code de commande, checksum, ...)

Je n’arrive pas à trouver de documentation pour trouver le pin du RX et du TX. De plus, je n’arrive pas à envoyer du texte à travers un pin, faut-il utiliser le Serial ou autre chose ?

 #include <SoftwareSerial.h>
const char* mes = "<ID01><L1><PA><FE><MA><WC><FE>Feu de foret declare !10<E>";
int RX = 3;
int TX = 2;
const int BTN = 0;
SoftwareSerial Panneau(12, 11);

void setup() {
  pinMode(RX, INPUT);
  pinMode(TX, OUTPUT);
  pinMode(BTN, INPUT);
  Serial.begin(9600);
  Panneau.begin(9600);
  while (!Serial) {
    ;
  }
  Panneau.begin(9600);
}

void loop() {
  if (analogRead(BTN) <= 10 && analogRead(BTN) >= 0) {
    Serial.println("Bouton 1");
    Panneau.println(mes);
  }
    else if(analogRead(BTN)<=150 && analogRead(BTN)>=130){
    Serial.println("Bouton 2");
    Panneau.println(mes);
    }
    /*else if(analogRead(BTN)<=400 && analogRead(BTN)>=250){
    analogWrite(TX, mes);
    Serial.println("Bouton 3");
    }
    else if(analogRead(BTN)<=600 && analogRead(BTN)>=450){
    analogWrite(TX, mes);
    Serial.println("Bouton 4");
    }
    else (analogRead(BTN)<=800 && analogRead(BTN)>=700);{
    analogWrite(TX, mes);
    Serial.println("Bouton 5");
    }*/

Je vous laisse juger ce code, j’ai essayé de mettre à travers un pin ou dans le Serial ça n’actualise pas le panneau mais j’arrive à voir le courant passer avec un Voltmètre.

Merci de vos réponses et de pouvoir m’aider si je me trompe…

Essayes déjà d’afficher simplement un message

#include <SoftwareSerial.h>
const char* mes = "<ID01><L1><PA><FE><MA><WC><FE>Feu de foret declare !10<E>";
SoftwareSerial Panneau(12, 11);

void setup() {
  Serial.begin(9600);
  Panneau.begin(9600);
  Panneau.println(mes);
}

void loop() {
}

Tu es sur de la vitesse? Tu es sur du protocole?

Ça ne m'affiche rien, peut-être parce que je n'ai pas les bons pins, j'en ai essayé beaucoup mais toujours le même résultat...

Je ne suis pas expert, je ne sais pas trop ce qu'est la vitesse ou le protocole. :confused: