[resolu]interruption qui ne se déclenche pas

Bonsoir

je veux faire un petit montage tout simple et j'ai la mauvaise impression de mal m'y prendre . :roll_eyes:

Le but final de mon montage c'est d’émettre un signal à 40 kHz en continu , ou une trame constituée alternativement d'un signal à 40kHz pendant 50 ms et d'un mute de 50 ms. Le passage de l'un à l'autre se fait par appuis sur un bouton.

voila mon sketch :

const byte ledPin = 13;
const byte interruptPin = 3;
volatile byte state = LOW;
byte outputPin = 6;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(interruptPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(interruptPin), blink, FALLING);
  pinMode (outputPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, state);
 if (state = HIGH) {
    tone(outputPin, 40000);
  }
  else {
    tone(outputPin, 40000, 50);
    delay(50);
 }
}

void blink() {
  state = !state;
}

J'utilise la led sur d13 pour contrôler si le passage de continu à trame se fait.
Mon problème, c'est que j'ai toujours un signal continu. Mais si je supprime les parties if et else, le bouton joue bien son rôle et la led s'allume et s'éteint.

PS :J'utiise un nano. et j'ai pas mis de condo ou fait de pullup sur le bouton (normalement ouvert)

Olivier

Ooops... if (state [color=red]=[/color] HIGH) {

@J-M-L

?? lapin compris ??

qu'est ce qui change ?

lisez bien...

petit indice: il y a une différence fondamentale en C/C++ entre [color=red][b]=[/b][/color] et [color=green][b]==[/b][/color]... sauriez vous dire laquelle ? :slight_smile:

@J-M-L

Je suis vraiment un boulet ... :kissing:

Merci, Olivier

Mais non mais non... on est tous passé par là, quand à force de regarder le code on ne voit pas le gros bug... :slight_smile:

Bons bricolages !