Bonsoir, déjà préalablement sous Smartphone, 3 catégorie dans lesquelles on peut poster : le Bar, Développement, Projets finis.
J ai déjà eu 2 remarques concernant le lieu de post du message. Je tente donc ici puisque je ne sais où poster.
Voilà, j'essaie quelque chose de très simple. Relier 2 Uno via UART.
La première envois toutes les 10s un 1 puis 0 sur TX 11. La seconde en réaction, sur un 1 reçus sur Rx8, doit faire clignoter sa LED on board.
La carte émettrice envois correctement sur le Tx. Par contre la réceptrice semble ne recevoir qu un "-1" et donc ne réagit pas. Par ailleurs sa LED TX est toujours allumée.
Faut-il d ailleurs nécessairement connecter Rx-Tx en croisé où puis je me contenter du TX côté émetteur arrivant sur le RX côté récepteur ?
Bonsoir toupie
A la réception, tu lis le port série en permanence ce qui fait que tu lis, la plus part du temps comme quoi, il n'y a rien.
il faut tester s'il y a quelque chose à lire:
void loop() {
if (SerialUART_Rx.available()) {
receptionOrdre = SerialUART_Rx.read();
Serial.println(receptionOrdre);
Côté émission, au lieu de SerialUART_Tx.print(1);, écris SerialUART_Tx.write(1);
En faisant print, tu envoies le code ASCII du 1, sot 49.
Si tu penses que la charte graphique du forum est mal faite je suis d;accord avec toi.
Les sous forum localisés sont mal accessibles et sont la dernière roue du carrosse.
Les gestionnaires du forum n'ont rien à faire de nos remarques, c'est comme cela on n'y peut rien.
Néanmoins, les autres demandeurs sur smartphone y arrivent, c'est que c'est possible moyennant un effort.
Les seuls que tu gênes, sont des bénévoles qui sont obligés de faire le ménage.
Donc un peu de compréhension.
Merci.
Lorsque tu arrives dans "International/Français", dans le milieu de la fenêtre près du bord droit, tu vois, une icône qui représente une feuille avec un crayon, tu tapes sur cette icône et une fenêtre de saisie va s'ouvrir. Ce n'est d'ailleurs pas très différent de ce que tu vois lorsque tu es sur PC, sauf que sur PC après l'icône, il est écrit "New Topic"
Merci pour ces précisions concernant l'ergonomie, je tâcherais de poster au bon endroit quand je pianote sur mon tel...
J'ai procédé aux différentes modifications. Néanmoins pas mieux...
Le Tx se fait bien côté emmeteur. Par contre quand l'envois se fait, c'est la LED Tx qui s'allume sur le récepteur.
Je précise, j'ai juste brancher Tx-Rx et la masse commune mais pas le retour croisé.
Côté reception, mon moniteur série de m'envois plus en permanence des -1 mais une suite continue de "49", "48", "10"...
tu n'envoies qu'une fois '1' ou '0' avec à chaque fois une attente de 4 sec : ton récepteur ne reçoit qu'une fois '1' ou '0' pendant ces 4 sec, ta DEL (LED_BUILTIN) ne doit donc clignoter qu'à 1/8 Hz
N'hésites pas à poser des questions.
Maintenant si tu veux commander plus qu'une LED depuis un autre Arduino, il faudra faire évoluer ton protocole de transmission, si tu veux de l'aide...
OK, je suis d’accord effectivement, ce qui me chagrinais plus c’était de ne rien voir sur le Rx…
Je ne vois toujours rien d’ailleurs…
Le gros soucis était donc le format de l’envoi en byte ! Ainsi celà fonctionne (merci pour votre assistanat !!), mais pas comme je l’attendais :
Pour moi, durant la pause de 4 s déclenchée après l’envoie de l’ordre 1, je pensais faire clignoter toutes les 500ms ma LED de l’autre côté… donc au moins 6-7 fois.
En fait l’ordre n’est pas envoyé en continu sur le port UART. Il est envoyé 1 fois, Le récepteur le voit 1 fois et point barre.
Elle ne clignotait donc que très peu souvent donc certainement à la fréquence évoquée par 5cylindres (Mercedes ??)
J’ai donc corrigé mon code et là, ça fonctionne comme je l’imaginais. Ouf ! Je suis pas prêt d’envoyer un satellite sur Mars avec Arduino !
// Arduino émetteur Tx
#include <SoftwareSerial.h>
SoftwareSerial SerialUART_Tx(10,11);
byte commandeON =1;
byte commandeOFF =0;
void setup(){
Serial.begin(9600);
SerialUART_Tx.begin(9600);
}
void loop(){
SerialUART_Tx.write(commandeON);
Serial.println("Envois 1 sur port UART Tx11");
delay(5000);
SerialUART_Tx.write(commandeOFF);
Serial.println("Envois 0 sur port UART Tx11");
delay(5000);
}
//Arduino récepteur Rx
#include <SoftwareSerial.h>
SoftwareSerial SerialUART_Rx(8,9);
byte receptionOrdre;
void setup(){
Serial.begin(9600);
SerialUART_Rx.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);}
void loop(){
if (SerialUART_Rx.available()){ //si quelque chose se présente sur le port UART
receptionOrdre = SerialUART_Rx.read();}
Serial.println("Ordre reçu sur port UART Rx8 : ");
Serial.println(receptionOrdre);
if (receptionOrdre == 1) {
digitalWrite(LED_BUILTIN, HIGH) ;
delay(500) ;
digitalWrite(LED_BUILTIN, LOW);
delay(500);}
else if (receptionOrdre == 0) {
digitalWrite(LED_BUILTIN, LOW);}}