Allumer mon buzer (merci de votre aide!)

Bonjour, tout d'abord merci d'avance pour votre aide précieuse ! J'aimerais simplement faire jouer une mélodie à mon buzzer avec une boucle if dans mon programme.

Cela commencerait par :

if (distance)>1500
puis la melodie de mon buzzer avec ce code :

#include "pitches.h"  //add note library

//notes in the melody
int melody[]={NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4};



//note durations. 4=quarter note / 8=eighth note
int noteDurations[]={4, 8, 8, 4, 4, 4, 4, 4};


void setup(){

 


void loop(){



    //iterate over the notes of the melody
    for (int thisNote=0; thisNote <8; thisNote++){

      //to calculate the note duration, take one second. Divided by the note type
      int noteDuration = 1000 / noteDurations [thisNote];
      tone(8, melody [thisNote], noteDuration);

      //to distinguish the notes, set a minimum time between them
      //the note's duration +30% seems to work well
      int pauseBetweenNotes = noteDuration * 1.30;
      delay(pauseBetweenNotes);

      //stop the tone playing
      noTone(8);
    }
  }
}

Merci beaucoup de votre aide !!! :slight_smile:

Bonjour,

Et la question est?

Fais CTRL T pour formater correctement ton source et tu t’apercevras que loop() est inclus dans setup()
-> déplacer le + final après setup()

Bonjour kamill, je n'est pas bien compris ta réponse , ma question serait comment faire sonner le buzzer parce que je n'arrive pas à le faire sonner avec ce code, j'ai la mélodie mais pas le "lance la mélodie " je sais pas si tu comprend ^^

Ton programme ne se compile pas. Corrige déjà ça

oui ca m'écrit "Erreur de compilation pour la carte Arduino/Genuino Uno" mais je ne comprend pas pourquoi çela fait deux jours que je regarde le programme mais je ne vois pas l'erreur... je suis débutant ^^

je t'ai dis: le dernier } est mal placé. Il doit être après setup()

#include "pitches.h"  //add note library

//notes in the melody
int melody[] = {NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4};



//note durations. 4=quarter note / 8=eighth note
int noteDurations[] = {4, 8, 8, 4, 4, 4, 4, 4};


void setup() {
}




void loop() {



  //iterate over the notes of the melody
  for (int thisNote = 0; thisNote < 8; thisNote++) {

    //to calculate the note duration, take one second. Divided by the note type
    int noteDuration = 1000 / noteDurations [thisNote];
    tone(8, melody [thisNote], noteDuration);

    //to distinguish the notes, set a minimum time between them
    //the note's duration +30% seems to work well
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);

    //stop the tone playing
    noTone(8);
  }
}

ah oui ^^ merci à toi mais toujours impossible à compiler :confused:

c'est quoi l'erreur?
Tu as bien le fichier pitches.h ?

hello
testes ce prg

melodie_forum.zip (1.11 KB)

oh oui mince je suis bete je n'avais pas mis "pitches.h"..... merci à toi de nouveau
Ca se compile bien maintenant mais comment l'ajouter avec mon

if(distance)<1500

car je n'arrive pas non plus à faire le "lance la mélodie" il me semble que le code ne fait que créer la méodie rien de plus...

super merci à toi pour ce programme in fonctionne à merveille je vais l'insérer dans mon programme maintenant :slight_smile: merci beaucoup

oh non ca ne va pas mais la je ne comprend pas ca marche independament l'un et l'autre mais pas ensemble je ne comprend pas jai encore l'erreur de compilation avec l'arduino uno

mon programme est de savoir combien est ce quon a bu d'eau ( avec un capteur à ultrason et un ecran lcd I2C) et quand on a bu tant d'eau, alors le buzzer sonne . Tout fonctionne jusqu'au moment où je veux faire sonner mon buzzer... S'IL VOUS PLAIT JE TOUCHE AU BOUT DE MON PROJET MAIS JE N4Y ARRIVE PAS :confused:

merci beaucoooup de votre aide !

voici le programme en entier :

Carafe.ino (2.68 KB)

pitches.h (1.95 KB)

il faut revoir l'ultrason
la librairie nextping doit utiliser le meme timer que la fonction tone

oh mince oui c'est effectivement ça !

Le problème ce que je ne comprend pas bien la libraire du capteur à ultrasons "newping" assez compliqué et je ne m'y connais pas assez ducoup je ne sais pas si c'est possible mais peut on changer le timer de tone ?
il utilise le timer 2 tout comme "newping" je suis assez embêté c'est vraiment la dernière ligne de mon programme normalement ...

Merci beaucoup de ton aide !

hello
testes ce prg ( fonctionne chez moi)
attention, affectation des pins différente

#include "Wire.h"
#include "LiquidCrystal_I2C.h"
#include "pitches.h"  

#define echoPin 7 // Echo Pin
#define trigPin 8 // Trigger Pin
#define buzer   9 // buzer Pin

float _duree, distance,cm; // _duree used to calculate distance
LiquidCrystal_I2C lcd(0x27, 16, 2);//27

//notes in the melody
int melody[]={NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4};

//note _durees. 4=quarter note / 8=eighth note
int note_durees[]={4, 8, 8, 4, 4, 4, 4, 4};

int distance_aire_de_la_base = 109;


void setup()
{
 lcd.begin();
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 pinMode(buzer,  OUTPUT);
 lcd.print("Vous avez bu :"); 
}

void loop()
{
 digitalWrite(trigPin, LOW); 
 delayMicroseconds(2); 
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10); 
 digitalWrite(trigPin, LOW);
 _duree = pulseIn(echoPin, HIGH);
 distance = _duree/58.2;//Calculate the distance (in cm) based on the speed of sound.
 distance = cm - 1.5 ;//1.5 cm separe la marque maximale et le capteur ultrasons
 distance = distance * distance_aire_de_la_base ; // distance d'eau bu donc quantité d'eau bu fois l'aire de lan base

 lcd.setCursor (0,1); // go to start of 4th line
 lcd.print(distance);
 lcd.print(" mL /1500 mL");

 delay(500);
 //distance=2;
if(distance > 1) //si tu as bu plus de 1cm de hauteur
{ 
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Genial ! ");
  lcd.setCursor(0,1);
  lcd.print("Continuez ainsi!");
  delay(1000);
    
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Vous avez bu :");
  lcd.setCursor(0,1);
  lcd.print(distance);
  lcd.print(" mL /1500 mL");
  delay(1000);
  
  for (int thisNote=0; thisNote <8; thisNote++)
    {
      int note_duree = 1000 / note_durees [thisNote];
      tone(buzer, melody [thisNote], note_duree);
      int pauseBetweenNotes = note_duree * 1.30;
      delay(pauseBetweenNotes);
      noTone(buzer);
    }
  }
}

#include "LiquidCrystal_I2C.h"

LiquidCrystal_I2C lcd(0x27, 16, 2);//27

void setup()
{
lcd.begin();

pinMode(trigPin, OUTPUT);

quel ide et lib liquid crystal utilisez -vous ?

en copiant votre sketch à l'identique : je dois changer :

LiquidCrystal_I2C lcd(0x27, 16, 2);//27 en

LiquidCrystal_I2C lcd(0x27);//27

et lcd.begin(); en

lcd.begin(16,2);

sinon compiler error

include est identique

#include <LiquidCrystal_I2C.h>

hello

librairie ci jointe

ide 1.6.12

je n'ai pas pu tester l'ultra son
en forçant "distance à 2, la musique se joue bien, ( ne pas oublier le fichier pitches)

l'afficheur indique
Genial !
continuez ainsi !

vous avez bu:
2.00ml /1500ml

LiquidCrystal_I2C.zip (7.95 KB)

merci de ton aide ,malheureusement cela ne se compile pas chez moi : /

Voici les messages d'erreur :

Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':

(.text+0x0): multiple definition of `__vector_7'

libraries\NewPing\NewPing.cpp.o (symbol from plugin):(.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1
Erreur de compilation pour la carte Arduino/Genuino Uno

As-tu une idée à quoi cela correspond ?

Merci beaucoup encore !!!

tu n'as pas chargé la nouvelle version du .ino en post #14

dans la nouvelle, il n'y a plus la lib "Newping"

oui mince il restait newping :cold_sweat:

Maitenant compiler il n'y a plus que cette erreur :

C:\Users\arnau\Documents\Arduino\Aide_forum\Aide_forum.ino:3:23: fatal error: pitches.h: No such file or directory

 #include "pitches.h"  

                       ^

compilation terminated.

exit status 1
Erreur de compilation pour la carte Arduino/Genuino Uno

J'ai bien mis la librairie pitches.h dans mon programme donc je ne comprend pas pourquoi ca ne veut pas se compiler ...

Tu m'es d'une grande aide merci beaucoup ! :slight_smile: