Fonction Switch Case ..... HELP ....

Bonjour à tous,

Je réalise actuellement un camion RC que je voudrais équipé de fonctions commandés par la radio par l’intermédaire d’un Arduino…
Je bute sur la commande des lumières (veilleuses, codes, phares …).
J’ai reussi à gérer la fonction “Stop” et “marche AR”, cligno droit et gauche en fonction de la position des manches …
Je tente de mettre en forme un sketch avec la fonction “Switch case” mais ca coince …
En gros je voudrais pouvoir activer une (ou successions) fonction en manœuvrant un inter ou un manche et que cette fonction reste active jusqu’à une autre action … je pousse vers le haut (valeur >1600) , sortie X à 1, après une autre action, sortie Y à 1 (avec ou pas X à 1) … je baisse le manche (valeur<1400), arret d’une ou toutes fonctions … en esperant avoir été clair …

Merci d’avance pour votre aide.

Olivier.

Bonjour,

Avec switch tu ne peux pas tester une plage de valeur.
Il faut utiliser une suite de if, else if.
Par exemple:

  if (valeur<400)
  {
    // traitement 1
    // ...
  }
  else if (valeur<800)
  {
    // traitement 2
    // ...
  }
  else if (valeur<1200)
  {
    // traitement 3
    // ...
  }
  else if (valeur<1600)
  {
    // traitement 4
    // ...
  }
  else
  {
    // traitement 5
    // ...
  }

Bonjour,

merci pour ta réponse. C'est le principe que j'ai utilisé pour les fonctions "freins" et "recul", mais je n'arrive pas à faire en sorte que ma LED reste allumée après un impulsion sur le manche et un retour au neutre (valeur neutre 1400, max 1900, mini 1100).

Olivier.

Bonjour,

Sans code, difficile de te répondre.

hello
un truc comme ça ?
si impulsion >1450 alors flag_led=1
si impulsion <1350 alors flag_led=0
si flag_led==1 alors led=HIGH
else led=LOW

Re,

Oui quelque chose comme cela ..... mais pas facile pour moi de vous fournir un exemple de code .... car je n'arrive pas à le mettre en forme ..... Mais en "français" cela donnerait:

Si valeur manche sup à 1450, alors sortie X à 1 (LED allumée)et ceci tant que la valeur du manche n'est pas repassée en dessous de 1200 (par exemple) Si la valeur repasse au dessus de 1450, la sortie X reste à 1 et activation de la sortie Y .... et desactivation des sorties X et Y apres action du manche à une valeur Inf à 1200 ....

Olivier.

alors comme ça
si impulsion >1450 et flag_led ==1 alors sortie_Y=HIGH
si impulsion >1450 et flag_led ==0 alors flag_led=1
si impulsion <1200 alors flag_led=0 et sortie_Y=LOW
si flag_led==1 alors led=HIGH
else led=LOW

if ((impulsion > 1450) & (flag_led==1)){digitalWrite(sortie_Y=HIGH);}

etc…

re,

Ok, merci pour les infos … je vais essayer ca … je reviens vers toi dès que possible … “Flag” et a déclarer ???

Merci,

Olivier.

if ((impulsion > 1450) & (flag_led==1)){digitalWrite(sortie_Y=HIGH);}

Bonjour, il serait logique d'écrire : if ((impulsion > 1450) && (flag_led)){digitalWrite(sortie_Y=HIGH);}

hello "&&", c'est pour les "boolean", me semble t'il

Ce sont des booléens

Bonjour à tous et merci pour votre aide,

J’ai un peu de mal avec tout cela, j’ai rédige un petit truc qui va peut etre vous aiguiller sur mon projet du moins de la façon dont je l’interprète …
avec des valeurs de manche de 1400 au neutre, 1900 max et 1100 mini … pour une LED c’est bon mais ca coince pour la suite

int pin7 = 7; // recepteur radio
int ledphares = 2;
int ledanti = 11;
int ledtoit = 12;
long voie3 ;

void setup() {
// put your setup code here, to run once:
pinMode(ledphares,OUTPUT);
pinMode(ledanti,OUTPUT);
pinMode(ledtoit,OUTPUT);
pinMode(pin7,INPUT);

digitalWrite(ledphares,LOW);
digitalWrite(ledanti,LOW);
digitalWrite(ledtoit,LOW);
}

void loop() {
// put your main code here, to run repeatedly:
voie3 = pulseIn(pin7,HIGH);
{
if (voie3 > 1600 & (voie3 < 1900))
{
digitalWrite(ledphares,LOW);
digitalWrite(ledanti,LOW);
digitalWrite(ledtoit,HIGH);
}

}

Si tu veux que les phares restent allumés jusqu'à la prochaine action sur ce manche, dans le if il faut mettre une variable qui dit que les phares doivent être allumés. Dans la boucle à un autre endroit tu testes l'état de la variable et tu actives l'état des phares en conséquence.