Probleme radio...

Bonjour, Déjà désolé de poster dans "le bar" mais impossible de poster dans le forum "francais" car contrairement a ce qui est indiqué dans le sujet "Créer un nouveau sujet" il n'existe pas d'onglet "New Topic" [bizarre...]

J'ai un petit soucis qui me prends la tête depuis plusieurs heures et j'ai besoin qu'on m'aide a sortir de cette situation.
Avec mes neveux qui adorent les pistolets a flèches, on fait souvent des batailles et pour pimenter le tout j'ai développer des cibles qui détectent les impacts...
Chaque cible est équipée d'un module radio 433Mhz en émission et réception et j'ai un boitier "maitre" équipé aussi en radio émetteur et récepteur qui "pilote" le tout.
Une photo parle mieux que beaucoup d'écrit :

Jusque là tout ce passe bien, pour l'instant je n'ai qu'un mode de jeu en appuyant sur le bouton vert, une cible s'allume rouge et bleu et le nombre d'impact s'affiche sur l’écran LCD du boitier. Quand j'appuie sur un bouton STOP du boitier les cibles deviennent jaune et attende un nouveau mode de jeu.

Le problème vient maintenant : si j’appuie une nouvelle fois sur le bouton vert pour relancer une partie, le boitier maitre affiche bien les scores ( 0 à 0 ) et continu de fonctionner mais les cibles restent en attentent comme si le boitier n'avait pas émis l'ordre ???
Si je redémarre SEULEMENT le boitier ça refonctionne une seule fois (une mise en route du jeu et un arrêt) pas plus.
Comme si la mémoire de l'arduino etait saturée et que la commande : mySwitch.send(XXX, 24); ne fonctionne plus... et que seul un redémarrage permet de refaire fonctionner une seul et unique fois...

Je vous mets une partie (sinon je dépasse les 9000 caractères) du code du boitier maitre puisque je suis casi certain que le problème vient de lui :

if (boutonVert)
{


// Affichage des scores sur le LCD
  lcd.clear();
  lcd.setCursor(0, 0);// Colone 1 Ligne 0
  lcd.print(F("Equipe bleue:")) ;
  lcd.print(CompteurBleu);
  lcd.setCursor(0, 1);// Colone 1 Ligne 0
  lcd.print(F("Equipe rouge:")) ;
  lcd.print(CompteurRouge);
  
  // transmet le debut du jeu
  delay(1000);
  mySwitch.send(120, 24);
  mySwitch.setRepeatTransmit(2);// repete 2 fois l'envoi
  delay(1000);
  int Cible1;
  int Cible2;
  int Cible3;
  int Cible4;
  CompteurRouge = 0;
  CompteurBleu = 0;

do{ 
if (mySwitch.available()) {
    
    Reception = mySwitch.getReceivedValue();
    mySwitch.resetAvailable();
    
    if( (Reception > 1000) && (Reception < 1999) )// c'est la cible 1 qui envoie le signal d'un nouveau compte
    Cible1 = Reception-1000;
    
    if( (Reception > 2000) && (Reception < 2999) )// c'est la cible 2 qui envoie le signal d'un nouveau compte
    Cible2 = Reception-2000;
    
    if( (Reception > 3000) && (Reception < 3999) )// c'est la cible 3 qui envoie le signal d'un nouveau compte
    Cible3 = Reception-3000;
    
    if( (Reception > 4000) && (Reception < 4999) )// c'est la cible 4 qui envoie le signal d'un nouveau compte
    Cible4 = Reception-4000;

    CompteurBleu = Cible2 + Cible4;
    CompteurRouge = Cible1 + Cible3;
    Reception = 0; 
    // Affichage des scores sur le LCD
    lcd.clear();
    lcd.setCursor(0, 0);// Colone 1 Ligne 0
    lcd.print(F("Equipe bleue:")) ;
    lcd.print(CompteurRouge);
    lcd.setCursor(0, 1);// Colone 1 Ligne 0
    lcd.print(F("Equipe rouge:")) ;
    lcd.print(CompteurBleu);
    
}



boutonStop.actualiser();

}while( boutonStop != true );


// Affichage des scores sur le LCD
  lcd.clear();
  lcd.setCursor(0, 0);// Colone 1 Ligne 0
  lcd.print(F("Fin de partie")) ;

//transmet la fin du jeu
delay(1000);
mySwitch.send(67, 24);
mySwitch.send(67, 24);
lcd.clear();


}// fin du IF d'appui sur le bouton vert

Je me tiens a dispo pour de plus amples informations si nécessaire...

Bonsoir

le bouton 'New Topic' pour le Forum principal est placé en bas de page...il faut 'faire avec'...içi nous n'avons pas la main sur la structure du Forum

Pour que ton message ait une bonne visibilité tu peux demander au Modérateur (lien 'Report to Moderator') le déplacement dans le Forum Principal

Par ailleurs un code qui dépasse les 9000 caractère peut être joint au message.

al1fch:
Bonsoir

le bouton 'New Topic' pour le Forum principal est placé en bas de page...il faut 'faire avec'...içi nous n'avons pas la main sur la structure du Forum

Pour que ton message ait une bonne visibilité tu peux demander au Modérateur (lien 'Report to Moderator') le déplacement dans le Forum Principal

Par ailleurs un code qui dépasse les 9000 caractère peut être joint au message.

Merci des conseils, je viens de vérifier et en effet "New Topic" est en bas mais aussi en haut, je crois que hier c’était un peu la cata après un long moment sans me connecter j'ai du faire plein d’étape pour sécuriser ma connexion en téléchargeant une appli sur mon téléphone et y a du avoir un beau bug car il n'y avait ni onglet en haut ni en bas contrairement à aujourd'hui... m'enfin c'est pas le sujet !

Cette nuit j'ai pensé que mon problème pouvait venir des interruptions (que je ne dois pas maitriser suffisamment) car quand mon boitier maitre ou l'une de mes cibles communique elle devrait capter directement son propre message et c'est peut être ça qui fait tout foirer... enfin c'est une hypothèse, après pourquoi ça fonctionne un peu mais pas tout le temps ça reste un mystère.

Je vais essayer de refaire mon projet avec la librairie Virtual Wire qui gère aussi la radio mais sans les interruptions...

je viens de repasser quelques heures a chercher mon problème, j'ai fabriqué un sniffer en 433MHz et j'ai testé presque toutes les lignes de codes suspectant une incompatibilité de librairies, jusqu’à me rendre compte que c'est une fonction même de RC-switch qui cause le problème.

quand je passe la ligne de la fonction de répétition du signal en commentaire :

  mySwitch.setRepeatTransmit(2);// répète 2 fois l'envoi

je n'ai plus de soucis... c'est bizarre car c'est une fonction que j'utilise ailleurs sans me poser de soucis ?!

Enfin ce qui est sur c'est que je ne vais plus utiliser cette fonction quitte a répeter plusieurs fois le signal a émettre...