Si c'est dans loop(), sans autre condition, ça se répète perpétuellement.
Si ça doit être joué qu'une fois, au départ du programme, tes pas de programme doivent se trouvés en fin de setup().
Ce que je veux faire est compléter le code suivant :
int fsrPinhaut = 0;
int fsrPinbas = 1; // the FSR and 10K pulldown are connected to a0
int fsrReadinghaut;
int fsrReadingbas ;
int PIR1 = 8;
int PIR2 = 4;
int FSRhaut = A0;
int FSRbas = A1;
int FSRReadinghaut;
int FSRReadingbas;
//wbbywyyyy
void setup()
{
pinMode(PIR1, INPUT);
pinMode(PIR2, INPUT);
Keyboard.begin();
randomSeed(analogRead(0));
Serial.begin(9600);
}
void loop()
{
fsrReadinghaut = analogRead(fsrPinhaut);
fsrReadingbas = analogRead(fsrPinbas);
Serial.print(fsrReadingbas);
//
if (digitalRead(PIR1) == HIGH)
{
Keyboard.press("q"); // ici j'aimerais ajouter un son tone (8, frequence, 1000);
Keyboard.ReleaseAll();
}
if (digitalRead(PIR2) == HIGH)
{
Keyboard.print("b");
Keyboard.end() ; // ici j'aimerais ajouter un son tone (8, frequence, 250);
delay(2000);
}
Il permet "d'écrire une lettre comme un clavier" lorsqu'un détecteur de mouvement s'active.
Je voudrais ajouter un son qui dure 250 ms (deux sons : un différent pour chaque lettre / détecteur de mouvement).
Dans ce cas il faut jouer le son que tu veux au même moment que tu envoi ta touche.
Tu mémorise dans une variable(ex T1) le temps qu'il est lorsque tu lance le son avec la fonction millis()
et en début de ta fonction loop tu test millis te renvois T1 + 250, pour exécuter ton "notone"
Je ne sais pas si je suis assez claire
Le troisième argument de tone() spécifie la durée du son donc il s'arrêtera de lui-même.
Le problème de @guipru c'est que si le PIR reste actif le son recommence.
Il suffit de tester une transition sur le signal qui déclenche au lieu de tester son état et ainsi le son n'est produit qu'une fois. Voir ici par exemple
Et bien non, si tu es là c'est bien que le PIR est actif. Il suffit donc de mettre l'appel à note() ici.
Il y a longtemps que j'ai cessé de croire aux miracles. Si le note() est bien dans le if alors c'est que l'entrée est vue HIGH.
Tu es certain que tes PIR ne sortent pas en collecteur ouvert par exemple?
Ou que la temporisation sur la sortie du PIR n'est pas réglée sur plusieurs secondes?
Oui, je n'ai pas regardé le code en détail, je n'ai répondu que à la question de temporisation.
Du coup tone est bloquant ou il y a une interruption de programmer pour l'arrêter?
PS: j'avoue j'ai la flemme d'aller regarder le code de tone
Cette fonction est non bloquante, ce qui signifie que même si vous fournissez le paramètre duration, l'exécution de l'esquisse se poursuivra immédiatement même si la tonalité n'a pas fini de jouer.
Si le seul but était de générer un son sur un buzzer alors oui
Il me semblait qu’en fait tu voulais générer un son au moment où un mouvement est détecté. Dans ce cas @fdufnews t’a bien orienté vers la solution
Bonne soirée
oui tu as raison c'est débile mon truc....
J'ai fait un son.
Il faut que je trouve un moyen de refaire ce son avec une variable dans la loop.
Je pars vraiment de loin comme vous pouvez le constater !