Bonjour tout le monde. Je suis dans le monde du RC, j'ai monté ma voiture de gendarmerie, j'ai fait les phares, feux et gyrophare avec un arduino nano. Je souhaite activer également la sirène lorsque mon signal est supérieur à 1500ms, mais mon code ne fonctionne pas comme je le veux.
J'ai mis un delay de 10000 dans mon code, mais ce que je voudrais, et je n'y parviens pas, c'est que la musique soit jouée uniquement lorsque le signal reçu est supérieur à 1500, hors là, même si le signal est inférieur, il continue à jouer la musique tout pendant que les 10 secondes ne sont pas écoulées.
voici mon code:
#include "SD.h"
#define SD_ChipSelectPin 10
#include "TMRpcm.h"
#include "SPI.h"
TMRpcm tmrpcm;
const int rcPin = 3;
volatile bool musicPlaying = false;
void setup() {
Serial.begin(9600);
pinMode(rcPin, INPUT);
attachInterrupt(digitalPinToInterrupt(rcPin), rcInterrupt, CHANGE);
tmrpcm.speakerPin = 9;
if(!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD fail");
return;
}
tmrpcm.setVolume(6);
tmrpcm.quality(1);
}
void loop() {
if(!musicPlaying) {
// code pour lire le signal du récepteur RC
int rcValue = pulseIn(rcPin, HIGH);
Serial.print("RC Value: ");
Serial.println(rcValue);
if(rcValue > 1300) {
// code pour commencer la lecture de la musique
tmrpcm.play("test.wav");
delay(10000);
musicPlaying = true;
}
}
}
void rcInterrupt() {
if(musicPlaying) {
// code pour arrêter la lecture de la musique
tmrpcm.stopPlayback();
musicPlaying = false;
}
}
je ne vois pas où est mon erreur. Si il y a quelqu'un pour m'aiguiller, et si possible, m'expliquer pourquoi je me suis trompé?
void loop() {
// code pour lire le signal du récepteur RC
int rcValue = pulseIn(rcPin, HIGH);
Serial.print("RC Value: ");
Serial.println(rcValue);
if(rcValue > 1500) {
// code pour commencer la lecture de la musique
tmrpcm.play("test.wav");
musicPlaying = true;
} else {
tmrpcm.stopPlayback();
musicPlaying = false;
}
}
Je ne suis pas certain que musicPlaying soit toujours utile du coup. A moins que tu l'utilises dans une autre partie de ton programme.
Je ne vois pas non plus la raison de la fonction rcInterrupt()
J'avoue m'être inspiré d'autres post pour m'aider, je ne maitrise que les sorties de lumières pour le moment sur arduino, cela fait pas très longtemps que je m'y suis mis.
Sur cet arduino, c'est le seul programme que j'utilise, aucun autre, et qu'un seul son, celui de la sirène.