Bonsoir,
je vous explique mon problème dont je ne trouve pas de solutions.
j'envoi sur le port USB de l'arduino a partir d'un port USB du rasberrypi 2 des commandes au format numérique allant de 5 à 9 dont voici le code :
void loop()
{
if (Serial.available()) {
message = Serial.read()-'0'; // on soustrait le caractère 0, qui vaut 48 en ASCII
if (message == 5){
rf_send(902887872);
} else if (message == 6){
rf_send(969996736);
} else if (message == 7){
digitalWrite(pinRelais, LOW);
} else if (message == 8){
digitalWrite(pinRelais, HIGH);
} else if (message == 9){
float t = sensor.read();
Serial.println(t,1); // temperature is displayed with 1 decimal places
}
}
tout fonctionne à merveille, j'arrive a actionner mon relais (message 7 pour l'actionner et 8 pour l'arreter) ou a envoyer des données en radio fréquence (message 5 et 6)
Le problème est le suivant : si par exemple j'envoi le message 7 depuis mon raspberry à l'arduino, le relais de la platine relais connecter à la pin 8 de mon arduino va s'actionner sans problème mais si j'envoi une autre commande comme par exemple la 6 pour envoyer une trame en radiofréquence 433 mhz. La le relais va s'éteindre !
En faite j'ai remarqué dés que j'envoi une commande après avoir allumé le relais celui ci s'éteint !
pourtant j'alimente la platine relais en 5 volts séparément de l'arduino.
Je vous ai joint mon sketch complet si vous voyez une erreur :
#include <RCSwitch.h> // on inclus la bibliotheque RC-Switch
#include <Wire.h> // library used with I2C protocol pour la sonde de T
#include <TCN75A.h> // pour la sonde de T
// pour descendre les volets : 969996736
// pour monter les volets : 902887872
RCSwitch rf_cmd = RCSwitch(); // initialisation
const char rf_mode = 32; // mode 32 bits
const char rf_pin = 10; // l'emetteur est connecte au pin 10 de l'arduino
int message = 0;
// defini la sortie utilisé pour la carte relais du pelet
int pinRelais = 8;
TCN75A sensor; // pour la sonde de T
void setup(){
Serial.begin(9600);
//commandes RF 433 des volets roulants
rf_cmd.enableTransmit(rf_pin); // emetteur sur la broche 10
rf_cmd.setProtocol(2); // par defaut le protocole utilisé est le 1, mais les commandes OTIO utilisent le 2
rf_cmd.setRepeatTransmit(3); // on repete la transmission 3 fois pour etre sur qu'elle arrive bien
rf_cmd.setPulseLength(700); //
//definis la sortie pour le poele a pellets
pinMode(pinRelais, OUTPUT);
digitalWrite(pinRelais, HIGH); //on ouvre le relais au demarrage
//definis pour la sonde de T
int w_reg;
sensor.begin();
sensor.set_address(0);
sensor.set_resolution(3);
}
void rf_send(unsigned long rf_code) {
rf_cmd.send(rf_code, rf_mode);
}
void loop()
{
if (Serial.available()) {
message = Serial.read()-'0'; // on soustrait le caractère 0, qui vaut 48 en ASCII
if (message == 5){
rf_send(902887872);
} else if (message == 6){
rf_send(969996736);
} else if (message == 7){
digitalWrite(pinRelais, LOW);
} else if (message == 8){
digitalWrite(pinRelais, HIGH);
} else if (message == 9){
float t = sensor.read();
Serial.println(t,1); // temperature is displayed with 1 decimal places
}
}
}
et voici une photo de mon montage :
D'avance je vous remercie pour votre aide !