Pages: [1]   Go Down
Author Topic: Commande avec Capteur Sonore  (Read 392 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour je voudrais effectué une commande avec mon capteur sonore quand je tape des mains mon capteur me renvoie une valeur, si cette valeur dépasse
400 j'allume la lumière si elle était éteinte et j’éteins la lumière si celle ci était allumée.

const int Voie_0=0;

int mesure_brute=0;
int Led1 = 5;
int val=0;

void setup()   {

   Serial.begin(115200);
   pinMode(5, OUTPUT);
   
}

void loop(){

   mesure_brute=analogRead(Voie_0);

   Serial.println(mesure_brute);
   delay(10);
   if(val == 0 && mesure_brute >= 400)
   {
      val=255;
      digitalWrite(5, val);
   }
  else  if(val == 255 && mesure_brute >= 400)
   {
      val=0;
      digitalWrite(5, val);
   }

}




Le programme ne marche pas, j'arrive à allumer la Led met pas à l'éteindre je ne sais pas trop comment faire et j'aimerais également faire une facon plus propre pour quand le bruit dépasse 400 je ne prends pu de mesure pendant 5 sec et je reprends après car quand je tape des mains j'ai 7-8 valeurs qui dépassent.

Merci à vous Cordialement Quentin
Logged

france
Offline Offline
God Member
*****
Karma: 15
Posts: 846
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu peux rajouter une temporisation de 5s après allumage de la lampe
      digitalWrite(5, val);
      delay(5000);
Logged

Christian

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah oui bien vu merci smiley tu n'aurais pas une idée si non comment effectuer mes conditions pour allumer et éteindre mes lumières ?
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

La fonction digitalWrite() accepte en argument HIGH ou LOW (0 et 1 en valeur numérique) pas 0 / 255.
Dans le même genre utilise la notation Ax pour le numéro de broche de analogRead(), exemple A0 ici.

Essaye ça :
Code:
const byte PIN_CAPTEUR = A0;
const byte PIN_LAMPE = 5;

void setup() {
  Serial.begin(115200);
  pinMode(PIN_LAMPE, OUTPUT);
  digitalWrite(PIN_LAMPE, LOW);
}

void loop() {
  static byte etat = LOW;
  int mesure = analogRead(PIN_CAPTEUR);
 
  Serial.println(mesure);
  delay(10);
   
  if (mesure >= 400) {
    if (etat == LOW) {
      etat = HIGH;
      digitalWrite(PIN_LAMPE, HIGH);
    } else  {
      etat = LOW;
      digitalWrite(PIN_LAMPE, LOW);
    }
  }

  while (analogRead(PIN_CAPTEUR) >= 400);
}
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok merci je vais essayé sa j'ai réussi à trouver une solution mais la tienne me parait plus propre
Logged

Pages: [1]   Go Up
Jump to: