Go Down

Topic: comment crée une boucle arduino svp ???? (Read 259 times) previous topic - next topic

lPigeon

Bonjour si quelqu'un sait faire une boucle je serai ravie de s'avoir comment le faire

j'ai mon code et je veux faire que mon buzzer sonne plus longtemps

le code que je veux en faire une boucle et le code en jaune


char DIO_Buzzer     = 7; // buzer connecté sur la broche 7
int pinTrig         = 2;
int pinEcho         = 3;
long temps;
float distance;

void setup() {
  pinMode(DIO_Buzzer,OUTPUT);
  pinMode(pinTrig, OUTPUT);
  pinMode(pinEcho, INPUT);
  digitalWrite(pinTrig, LOW);
  Serial.begin(9600);
}


void loop() {

  digitalWrite(pinTrig, HIGH);
  delayMicroseconds(10);
  digitalWrite(pinTrig, LOW);
 
  temps = pulseIn(pinEcho, HIGH);

  if (distance = (temps*340)/10000.0 < 150) {

    digitalWrite(DIO_Buzzer, HIGH);

   
    {// des graves au aigus
    for(int note=700;note<2000;note++){
    tone(DIO_Buzzer, note, 125);
    delay(2);
    }
    //des aigus au graves
    for(int note=2000;note<700;note++){
    tone(DIO_Buzzer, note, 125);
    delay(2);}

     }
  }
  else {
    temps = temps/2;
    distance = (temps*340)/10000.0;
    Serial.print("distance:");
    Serial.print(distance);
    Serial.println(" cm");
  }
 delay(2000);
}

Merci de m'aider

J-M-L

#1
Apr 23, 2019, 09:50 am Last Edit: Apr 23, 2019, 09:53 am by J-M-L
lisez comment utiliser le forum (les posts épinglés en haut du forum comme "Bien éditer son post pour les nuls" , "Faire un Nouveau Sujet ou le corriger avec les Balises..." et "Règles du forum francophone"), et faites un post "propre"



les boucles en C ou C++ ça se fait avec un while() ou un for() ou un do/while() ou simplement en laissant la loop() tourner et en arrêtant le son au bout d'un certain temps

Il y a des tonnes de formations en ligne, faites un peu une recherche par vous même... Par exemple en voici une
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

bidouilleelec

lisez comment utiliser le forum (les posts épinglés en haut du forum comme "Bien éditer son post pour les nuls" , "Faire un Nouveau Sujet ou le corriger avec les Balises..." et "Règles du forum francophone"), et faites un post "propre"


Et je rajouterais :
Please, pas de couleur jaune.

Cordialement,
bidouilleelec

lesept

Oui, le jaune pique un peu les yeux...

Le fonctionnement de tone est très bien expliqué dans ce post récent, et il y a aussi la référence

il faut faire
Code: [Select]
tone(pin, frequence, duree) ; delay(duree);
...


et vous mettez cela dans une boucle donc
Code: [Select]
for(byte i=0; i<200; i++) {
  tone(pin, frequence[i], duree[i]) ;
  delay(duree[i]);
}
ou juste
Code: [Select]
for(byte i=0; i<200; i++) {
  tone(pin, frequence[i]) ; // joue cette note jusque'à contre-ordre 
  delay(duree[i]);
}
noTone();// pour arrêter le son de la dernière note


si vous ne mettez pas le delay, vous passez directement au son d'après en quelques micro-secondes et vous mangez vos 200 entrées super vite - quasiment rien le temps d'entendre - et le son que vous entendez en entier c'est en fait la dernière note
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

icare

Bonjour,
Je n'ai pas de problème avec le jaune : je ne le vois pas.
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

lesept

Tu veux dire que tu n'as jamais vu l'intégralité de ton avatar ? ? ?
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

fdufnews

Je comprends pas, ce type écrit ce code
Code: [Select]
for(int note=700;note<2000;note++){
    tone(DIO_Buzzer, note, 125);
    delay(2);
    }
et il demande comment on fait une boucle.
De 2 choses l'une, ou il a pompé le code ou il ne sait pas expliquer clairement son besoin.

dbrion06

Je suppose que le fonctionnement de tone non bloquant: documenté par lesept en 3, avec lien vers la solution ) est déroutant:
 tone execute très vite le s1700 premières notes, sans délai (non bloquant) et sort du 2000 Hz... de quoi rire jaune.

Go Up