Bonjour à tous,
Dans le cadre d'un projet, je cherche à interfacer un relais et un ordinateur grâce à une carte Arduino.
Côté relais, aucun problème : l'envoi d'un niveau haut sur une pin digitale de ma carte Arduino permet la saturation d'un transistor, qui permet alors la commutation de mon relais.
Côté ordinateur, j'ai mis en place une liaison série RS232 TTL avec ma carte Arduino grâce à un câble convertisseur USB-to-TTL et la bibliothèque SoftwareSerial, afin de pouvoir utiliser 2 pins digitales. J'utilise HTerm sur mon ordinateur pour transmettre et recevoir des données de mon Arduino. Mon programme (que je vous partage plus bas dans le message) doit me renvoyer une information quand le relais commute, afin que je sache s'il est ouvert (OFF) ou fermé (ON).
Mon problème est le suivant : lors de mon PREMIER envoi de commande (envoi, via HTerm, d'un "ON" ou d'un "OFF"), ma carte Arduino me retourne une série de caractères qui ne correspondent pas du tout aux réponses attendues.
Mais, dès le second envoi d'une commande, aucun problème et je reçois bien ce que je m'attends à recevoir.
J'aimerais pouvoir régler ce problème "proprement" (que le premier retour de ma carte soit exploitable) ou du moins comprendre pourquoi ce phénomène se produit.
Merci d'avance de votre aide !
Mon programme :
#include <SoftwareSerial.h>
const byte rxPin = 7;
const byte txPin = 8;
SoftwareSerial RS232(rxPin,txPin);
const byte relayPin = 2;
String command = String();
void setup() {
RS232.begin(9600);
while(!RS232){
;
}
pinMode(relayPin, OUTPUT);
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
}
void loop() {
if (RS232.available() > 0) {
command = RS232.readString();
if(command == "ON") {
RS232.println("ON DONE");
digitalWrite(relayPin, HIGH);
} else if (command == "OFF") {
RS232.println("OFF DONE");
digitalWrite(relayPin, LOW);
}
}
}

