Problème de remise a zéro de mon servomoteur

Bonjour,
pourriez-vous m’aider, j’ai un problème dans mon script mais je ne le trouve pas, le servomoteur revient en position initial et je ne sais pas pourquoi. Je vous explique le projet:
j’ai connecté deux cartes Arduino grâce à un kit de deux modules Rf, un émetteur et un récepteur, ce qui me permet de contrôler à distance un servomoteur grâce à un potentiomètre a un axe.
J’arrive bien a envoyer l’information de l’angle que je souhaite donner au servomoteur, mais il alterne entre la position envoyer et la position initial en boucle.

voici le cote émetteur :

#include <RCSwitch.h>
#include <Servo.h>
#include <SoftwareSerial.h>

RCSwitch mySwitch = RCSwitch();
Servo servo_direction;

unsigned long LED_OFF  = 1327124;
unsigned long LED_ON   = 1327125;
unsigned long LED_ON_1   = 1327126;
unsigned long LED_OFF_1   = 1327127;

int pos=0;
int variateur=0;
int pot=A0;
int val;

int pinBouton;
int pinBouton1;

void setup() {
  Serial.begin(9600);
  mySwitch.enableTransmit(9);
  Serial.begin(9600);
    pinBouton=10;
    pinBouton1=8;
    pinMode(pinBouton,INPUT);
    pinMode(pinBouton1,INPUT);
}

void loop() {

  val=analogRead(pot);
  val=map(val,0,1023,65,115);
  mySwitch.send(val, 24);
  
  boolean etatBouton=digitalRead(pinBouton);
  if (etatBouton == 1) {
  mySwitch.send(LED_ON, 24);
  }
  else
  {
  mySwitch.send(LED_OFF, 24);
  }

  boolean etatBouton1=digitalRead(pinBouton1);
  if (etatBouton1 == 1) {
  mySwitch.send(LED_ON_1, 24);
  }
  else
  {
  mySwitch.send(LED_OFF_1, 24);
  }
}

voici le code récepteur :

#include <RCSwitch.h>
#include <Servo.h>
#include <SoftwareSerial.h>

const int LED = 3;
const int LED_1 = 4;
int val;

Servo servo_direction;

RCSwitch mySwitch = RCSwitch();

void setup() {
  pinMode(LED, OUTPUT);
  pinMode(LED_1, OUTPUT);
  Serial.begin(9600);
  mySwitch.enableReceive(0);

  servo_direction.attach(6);
  servo_direction.write(90);
}

void loop() {
  

  
  if (mySwitch.available()) {
    
    int value = mySwitch.getReceivedValue();
    
    if (value == 0) {
      Serial.print("Unknown encoding");
    } 
    else {
      if (mySwitch.getReceivedValue()==1327125)
        digitalWrite(LED, HIGH);
      if (mySwitch.getReceivedValue()==1327124)
        digitalWrite(LED, LOW);
      if (mySwitch.getReceivedValue()==1327126)
        digitalWrite(LED_1, HIGH);
      if (mySwitch.getReceivedValue()==1327127)
        digitalWrite(LED_1, LOW);
      if (65<mySwitch.getReceivedValue()<115)
        val=mySwitch.getReceivedValue();

    }
    mySwitch.resetAvailable();
  }
  servo_direction.write(val);
}

Merci de votre aide.

ça n’est pas du C/C++if (65<mySwitch.getReceivedValue()<115)il faut séparer en 2 tests, liés par un &&

Vous devriez mettre des else entre vos if

Bonjour,

outre la remarque prédédente pourquoi fais tu plein d'appels à getReceivedValue() alors que tu as affecté value ?

Si tu utilises value déclare là du bon type : unsigned long

Après je n'ai pas la réponse précise à ton problème mais si cela ne fonctionne toujours pas, je serai toi, je chercherai en priorité à savoir lequel, de l'émetteur ou du récepteur, ne fait pas ce que tu penses.

Oui - je n’ai pas relevé le getReceivedValue() car je suis allé voir le code et ça ne fait qu’un return de la valeur, rien d’autre - donc il y a des chances que le compilateur/optimiseur mette la valeur en cache

Et votre point sur le bon type est pertinent

J-M-L:
ça n’est pas du C/C++

if (65<mySwitch.getReceivedValue()<115)

il faut séparer en 2 tests, liés par un &&

Vous devriez mettre des else entre vos if

Merci pour l’aide le problème venait bien de cette ligne de commande que j’avais mal écrite