Envoie commande série par fichier exe

Bonjour à tous, et merci d'avance à ceux qui prendront le temps de me lire et de me répondre !

J'expose mon problème qui va sûrement sembler à certains d'entre vous très simple.
Voilà mon projet, pour mon futur mariage je suis en train de monter un photomaton principalement à base de matériel récupérer à droite et à gauche. J'ai intégrer dans le caisson 2 spots à led que j'aimerais contrôler directement depuis le pc intégré au caisson. En effet le logiciel de photo permet d'intégrer des interactions avec d'autre appli.

Jusque là pas de soucis, l'arduino est câblé avec un relais tout bête. Lorsque je rentre dans le moniteur série ou avec putty, 1 active le relais, 0 le coupe.
Mais est ce qu'il est possible de créer un petit fichier exécutable qui permettrait d'activer le relais directement sans passer par la procédure ouvrir un moniteur série, se connecter et envoyer la commande ?
Le but final est d'avoir un exe qui enclenche le relais, un autre qui le désactive pour pouvoir les intégrer dans mon logiciel de photomaton de sorte à activer les spots seulement à la mise en route d'une session photo.

Merci de m'avoir lu.

oui c'est possible... il faut ouvrir le bon port série, envoyer votre commande puis fermer le port série.

je n'utilise pas windows, mais j'ai vu ceci: SerialSend (ne prenez jamais un .exe sur un forum internet, recompilez le source...)

il faudra adapter la vitesse en BAUD à vos conditions

Merci pour votre réponse. En fouillant un peu j'ai trouvé les fichiers batch qui correspondent a ce que je veux faire. Mais encore une fois je bloque sur l'éxecution, je dois avoir des erreurs. Voici le code Arduino

int PinRelay = 2; // Relais branché sur le pin 2
void setup(){
 Serial.begin (9600);
 pinMode(PinRelay,OUTPUT);
}
void loop(){
 char val1,val2; 
 val1 = Serial.read(); // Lecture du port série
 val2=val1;
 if (val2=='1' ){ // Si on écrit 1 dans le moniteur série
    digitalWrite(PinRelay,HIGH); // On ouvre le relais (allume la LED)
 }
 if(val2=='0' ){ // Si on écrit 0 dans le moniteur série
    digitalWrite(PinRelay,LOW); // On ferme le relais (éteint la LED)
 }
}

et les fichiers batch, en premier celui censé activer le relais

@ECHO OFF
MODE COM5/9600,N,8,1 >NUL
ECHO 01 >COM5

et le second censé l'arreter

@ECHO OFF
MODE COM5/9600,N,8,1 >NUL
ECHO 00 >COM5

Encore une fois merci de prendre du temps pour mon problème, j'avoue être un peu une bille, je fouille sur le net et j'essaye d'adapter a mes besoins ce que je trouve mais là j'avoue que je séche.

vous êtes sûr que l’arduino est sur COM5 ?
vous n’avez pas le moniteur Série ouvert sur l’Arduino ?

essayez plutôt avec cela dans le script:

@ECHO OFF
MODE COM5/9600,N,8,1 >NUL
set /p x="1" <nul >\\.\COM5

et

@ECHO OFF
MODE COM5/9600,N,8,1 >NUL
set /p x="0" <nul >\\.\COM5

ça évitera d’envoyer un CR/LF (même si vous les ignorez) et avec ce format ça doit être envoyé en ASCII.

je ne suis pas à 100% sûr du mode, essayez sinon

mode COM5 BAUD=9600 PARITY=n DATA=8

sinon votre loop() arduino pourrait être plus simple

void loop() 
{
  switch(Serial.read()) { // retourne -1 s'il n'y a rien à lire
    case '0':  // Si on écrit '0' dans le moniteur série
      digitalWrite(PinRelay, LOW); // On ferme le relais (éteint la LED)
      break;

    case '1':  // Si on écrit 1 dans le moniteur série
      digitalWrite(PinRelay, HIGH); // On ouvre le relais (allume la LED)
      break;

    default:  break; // on ne fait rien si on reçoit autre chose
  }
  delay(1); // petite attente pour ne lire "que" 1000 fois par seconde 
 }

Oui l'arduino est bien sur le COM5 et quand je lance le fichier batch je ferme bien le moniteur série.
Quand je lance le fichier batch, la led tx clignote 1 fois et la led de la pin 13 2 ou 3 fois mais rien du coté du relais.

partagez un petit dessin du montage physique, comment tout cela est connecté et alimenté, ça aidera à y voir plus clair

Voila, j’ai laissé parlé mon talent d’artiste :confused:

l'image de l'artiste :slight_smile:

mais de l'autre côté du relais, il y a quoi ?

Haha merci, j'avoue avoir un peu tirer la langue pour me concentrer :smiley:
Pour le moment de l'autre côté du relais il n'y a rien mais une fois que tout sera bien en place je compte y mettre le 220v câblé aux spot du photomaton.

donc que voudriez vous voir, le relais se déclenche sans doute mais vous ne le voyez pas :slight_smile:

essayez avec ce code qui va allumer ou éteindre la LED qui est sur votre Arduino

void setup()
{
 Serial.begin (9600);
 pinMode(LED_BUILTIN, OUTPUT); // LED_BUILTIN est une constante déclarée pour vous dans l'IDE
}

void loop() 
{
  switch(Serial.read()) { // retourne -1 s'il n'y a rien à lire
    case '0':  // Si on écrit '0' dans le moniteur série
      digitalWrite(LED_BUILTIN, LOW); // On ferme le relais (éteint la LED)
      break;

    case '1':  // Si on écrit 1 dans le moniteur série
      digitalWrite(LED_BUILTIN, HIGH); // On ouvre le relais (allume la LED)
      break;

    default:  break; // on ne fait rien si on reçoit autre chose
  }
  delay(1); // petite attente pour ne lire "que" 1000 fois par seconde 
 }

Le relais dispose d'une led qui s'allume lorsqu'il est enclenché et il fait un petit clic et là il ne s'allume pas sur la pin 2.... Je voulais être sur de moi avant de jouer avec le 220v. Avec votre code qui allume la led, j'ai mis le relais sur la pin 13 et c'est bon il s'enclenche.
Un grand merci à vous pour le temps que vous avez pris pour m'aider je vais pouvoir avancer sur la suite.

c’est louche, ça veut dire que vous avez un souci avec votre pin #2

vous êtes sûr de ne pas avoir branché sur A2 ?

Oui oui il était bien sur la pin digital 2. L’arduino a peut être un soucis on me l’a donné, je ne sais pas à quoi il a servi, ce n’est pas impossible qu’il ai été malmené.