8)Bonjour j'ai fait un système avec arduino qui fait allumer une LED quand un rayon laser est coupé. (Rien de très compliquer)
Voici la page du projet : The Arduino Controlled Laser Security System - Make:
Mais j'aimerais remplacer la LED par un Piezo Buzer et que lorsque le laser est coupé le Piezo Buzer sonne pendant un certain laps de temps (10-15 secondes). Si possible envoyer moi les lignes de code modifiées.
Merci !
Bonjour,
Je vais essayer de te répondre bien que je suis plutôt un débutant en arduino, mais surtout de vais essayer de te donner la méthodologie pour ce genre de problèmes vraiment très simples.
La première chose est : de où tu part, et vers ou tu va. En suivant ton lien il semblerais que tu ai réussi a faire le petit programme pour allumer ta LED, tout ce qu'il te faut donc faire c'est remplacer le "si le laser est coupé allumer la LED" par "si le laser est coupé, faire sonner le buzzer".
Il te faudra donc modifier l'action qui se déroule dans ton "if".
Mais à ce moment là, un problème sauvage attaque !et tu te dit : "Je ne sais pas comment faire pour faire retentir le son d'un buzzer !"
Pas de panique ! Il te suffit alors de demander directement sur le forum arduino de te retaper tout ton programme qu'il ne te restera plus qu'à coller dans ton IDE de taper "arduino buzzer piezo" sur google !
Et voici donc le premier liens qui sort :
Certes l'explication est en anglais mais vu que le liens vers ton article aussi, cela ne devrait à priori pas te poser de problème.
Alors si l'on regarde un peut plus en détail ce que raconte le lien, il semblerait qu'un piezo se branche entre un pin quelconque et le 0V.
Côté programme, rien de plus simple d'après l'exemple du lien :
Il suffit de déclarer ton pin (dans l'exemple c'est le pin 9) :
pinMode(9, OUTPUT);
Puis pour le faire sonner il suffit de faire :
analogWrite(9, 20);
<== 20 correspond a la tonalité du son du piezo, mettre au choix un nombre entre 0 et 255 (mais pas ni 0 ni 255 d'après le lien).
Pour couper le son du piezo ? facile :
analogWrite(9, 0);
Allez je suis simpa, je te donne un exemple de ce que tu pourrais mettre dans ton "if" :
pinMode(9, OUTPUT); //on pense à déclarer le pin pour le piezo
if(analogRead(0) < 750) //si obstacle coupe le "laser" ...
{
analogWrite(9, 20); // ... je fais sonner mon piezzo !
delay(15000); //puis je le laisse sonner 15 secondes
analogWrite(9, 0); //et finalement je l'éteint
}
else //si rien ne coupe mon "lazer" ...
{
None // ... Et bien je ne fait rien !
}
Bon il ne te reste plus qu'à réfléchir légèrement pour insérer cela dans ton code.
Un autre petit conseil, je ne sais pas si c'est toi qui a fait le programme qui se trouve dans ton lien, mais je te conseil fortement (attention c'est un avis personnel) d'éviter de faire des programme à la "je bourre tout sur une seule ligne" qui nuisent tout de même gravement à la lisibilité même si ton programme est très court.
/!\ attention : Je t'ai donner la méthode pour un simple Piezo Transducer et non pas un piezzo buzzer car il m'a sembler que dans ton cas le but était juste de "faire du bruit ou des buzz ou des beeps, appelle cela comme tu le souhaite" quand quelqu'un ou quelque chose passe. Si tu veux t'amuser par exemple à faire des petites mélodies avec un buzzer, je te renvoie vers les explications de la fonction tone() :
http://arduino.cc/en/Tutorial/tone
Plus amusant, plus compliqué et pas spécialement utile si comme le laisse penser ton lien tu veux juste faire un "Arduino Controlled Laser Security System".
PS : Je rajoute répète également que je ne suis pas un expert en arduino et que je n'ai jamais utilisé de piezzo, mais ton "problème" me semblais tellement simple que je me suis permis de répondre. Je pense qu'un vétéran prendra surement le temps de préciser des choses ou alors de me contredire si jamais j'ai tort
Cordialement.
Merci tu explique très bien pour un débutant
Voici le code:
void setup() { pinMode(4, OUTPUT); pinMode(13, OUTPUT); pinMode(9, OUTPUT); //on pense à déclarer le pin pour le piezo
if(analogRead(0) < 750) //si obstacle coupe le "laser" ...
{
analogWrite(9, 20); // ... je fais sonner mon piezzo !
delay(15000); //puis je le laisse sonner 15 secondes
analogWrite(9, 0); //et finalement je l'éteint
}
else //si rien ne coupe mon "lazer" ...
{
None // ... Et bien je ne fait rien !
}
Mais seulement, lorsque je transfère le code dans ma carte, il y a une erreur que je ne comprends pas:
error: 'None' was not declared in this scope
error: expected ';' before ' }' token
error: expected '}' at end of input
Merci de ton temps !
Salut,
Sois tu enlèves le None, sois tu enlèves carrément tout le "else"
bonjour,
si c'est vraiment ton code, il manque un } à la fin de ton void setup déjà.
mais il manque pas mal de code quand même
Bonjour,
Oui attention, quand je met "None" dans mon code c'est juste pour bien marquer qu'il ne faut rien mettre (un reste de je-ne-sais-plus-quel langage où l'on peut noter None pour lui dire de ne rien faire). Il faut donc comme dit schizophrene soit enlever le none, ou alors le mettre en commentaire ou encore enlever totalement le "else".
Par contre le code que tu as envoyé ne va pas, tu t'es contenté de rajouté tes autres pines utilisés en début de code, mais ce n'ai pas si simple
tu doit au moins avoir une fonction loop() si tu veux que ton programme tourne correctement.
Par contre tu semble avoir quelques difficultés avec les "fondamentaux" de la programmation arduino, et je ne peux que t'envoyer vers ce lien : http://arduino.cc/forum/index.php/topic,102618.0.html ou tu trouvera une tonne de documentation, exemples et tutoriaux pour ta familiariser avec la programmation.
Cordialement.
Merci de ton aide Maskim.
Je sais que j’essaye de faire des projets mais que en fait je n'ai jamais vraiment appris les bases de arduino ce qui me bloque plusieurs possibilités. Je pense que je vais m'y mettre parce que jusqu’à maintenant je ne fesait que copier-coller des codes sur internet.
Merci quand même de m'avoir aidé mais maintenant je vais apprendre les bases pour pouvoir me débrouiller seul.