probleme : expected primary-expression before '>' token

bonjour
je viens de construire le code suivant qui me permet de detecter la frequence (tr/mn) d'un arbre d'un villebrequin a travers un encodeur ensuite commander un moteur pas a pas suivant la frequence
trouvée
j'ai l'erreur suivant "expected primary-expression before '>' token"
voila le code

#include <Stepper.h>
#define STEPS 48
const int stepsPerRevolution = 48;
double val=0;
byte PinA=2;
byte PinB=3;
int ASet;
int BSet;
Stepper myStepper(stepsPerRevolution,8,9,10,11);
void setup()
{
Serial.begin(9600);
pinMode(PinA, INPUT);
pinMode(PinB, INPUT);

ASet = digitalRead(PinA);
BSet = digitalRead(PinB); // read the input pin

attachInterrupt(0, INCRE, CHANGE);
attachInterrupt(1, DECRE, CHANGE);
}

void loop()
{
myStepper . setSpeed(300);
int time=millis()/1000;
if(time % 10==0)
{
Serial.print(time);
Serial.print(" \t ");
Serial.print(val6/200);
Serial.println(" rpm");
{
if (val
6/200) > 240 and (val6/200) < 260
step . myStepper(5)
else if (val
6/200)>490 and (val6/200)<510;
step . myStepper(6);
else if (val
6/200)>740 and (val6/200) <760;
step(8)
else if (val
6/200)>1090 and (val*6/200)<1110;
step(10)
}

val=0;
delay(1000);

}

}

void INCRE()
{
ASet = digitalRead(PinA) == HIGH;
val += (ASet != BSet) ? +1 : -1;
}

void DECRE()
{
BSet = digitalRead(PinB) == HIGH;
val += (ASet == BSet) ? +1 : -1;
}

if (val*6/200) > 240 and (val*6/200) < 260

The expression to be evaluated to determine the outcome of the if must be enclosed in parentheses

You possibly mean

   if ((val*6/200) > 240 and (val*6/200) < 260)

There are other errors but I am short of time.

merci c'est résolu.
j’espère quand vous aurez le temps, vous jetez un coup d’œil sur ce code et me permettre de corriger les autres fautes car je suis débutant et merci d'avance

Et toi quand tu auras le temps tu liras ça Bien editer son post pour les nuls - Français - Arduino Forum comme ça on pourra lire ton code plus facilement.

ok je vais corriger.
voila le code

#include <Stepper.h>
#define STEPS  48

double val=0;
byte  PinA=2;
byte PinB=3;
int ASet;
int BSet;
int previousval=0;
 Stepper myStepper(STEPS,8,9,10,11);
void setup()
{
  Serial.begin(9600);
  pinMode(PinA, INPUT);
  pinMode(PinB, INPUT);


  ASet = digitalRead(PinA);
  BSet = digitalRead(PinB);   // read the input pin
 
  attachInterrupt(0, INCRE, CHANGE);
  attachInterrupt(1, DECRE, CHANGE);
}

void loop()
{
  myStepper . setSpeed(200);
  int time=millis()/1000; 
 if(time % 10==0)
  {
    Serial.print(time);
    Serial.print("  \t  ");
    Serial.print(val*6/200);
    Serial.println(" rpm");
  }
  if (previousval != (val*6/200));
  {
    if ((val*6/200) > 240 and (val*6/200) < 260)
        Serial.print("1") ;
      else if ((val*6/200) > 490 and (val*6/200) < 510);
      step.myStepper(5)
        else if  ((val*6/200) > 740 and (val*6/200) < 760);
        step.myStepper(8);
        else if ((val*6/200) > 1090 and (val*6/200) < 1110);
        step.(10);
        previousval = val*6/200
    }
   
    val=0;
    delay(1000);
     
      
}

void INCRE()
{
  ASet = digitalRead(PinA) == HIGH;
  val += (ASet != BSet) ? +1 : -1;
}

void DECRE()
{
  BSet = digitalRead(PinB) == HIGH;
  val += (ASet == BSet) ? +1 : -1;
}

L'operateur and n'est pas un standard C ou C++

if ((val*6/200) > 240 and (val*6/200) < 260)

Il vaut mieux écrire

if ((val*6/200) > 240 && (val*6/200) < 260)

Le compilateur est censé respecter les priorités des opérateurs, mais si tu veux éviter de mauvaises surprises et des heures de recherche d'erreur, il vaut mieux isoler chaque expression par des parenthèses, dans le cas d'un test multiple

Ce qui devient

if ( ((val*6/200) > 240) && ((val*6/200) < 260) )

Alain46:
Le compilateur est censé respecter les priorités des opérateurs

Bonjour,

Non le compilateur n'est pas sensé respecter la priorité des opérateurs. Le compilateur respecte la priorité des opérateurs.
Personnellement, je trouve que trop de parenthèses nuisent à la lisibilité du programme, bien que dans quelques cas un peu litigieux elles se justifient (en particulier dans les combinaisons de && et de ||).

if (val*6/200 > 240 && val*6/200 < 260)

Même si effectivement ça alourdi, perso je préfère en mettre. Il suffit une fois de se gourer dans les priorités et la pour retrouver ce genre de bug c'est parfois l'enfer ...