Aide code multiplexeur buzzer

Bonjour,

J'ai un TP d'électronique où il y a un multiplexeur et un compteur 4 bits et nous avons réussi à faire le montage demandé mais nous ne savons pas du tout par où commencer avec le code , voici les instructions

E1. Câbler et tester le circuit de la Figure 3.1.
Quelques précisions : • à chaque appui sur le bouton, on incrémente la combinaison envoyée au select du multiplexeur ;
• après avoir appuyé sur le bouton, on exécute une instruction delay de 100 ms de sorte à éviter les rebonds ;
• pensez à bien câbler les deux premières bascules du compteur (elle ne sont pas reliées dans le 74HC93) ;
• La PWM émanant de la broche D5 de l’Arduino a une fréquence d’environ 980 Hz.

et voici une image du circuit ( je suis en train de faire un diagramme de branchement sur Tinkercard mais il n'y a pas le mux 74HC151)

Voici notre diagramme de branchement (j'ai pas trouvé le multiplexeur donc j'ai mis quelque chose qui y ressemblé pour le diagramme )

Il faudrait peut-être commencer par faire un organigramme du programme cela vous aiderait surement pour coder.

En fait c'est surtout que je comprend pas comment faire pour pouvoir choisir comment faire pour changer le signal quand on appuie sur le bouton avec le multiplexeur.

int pin=12;
int valeur_pwm=0;
char buzzer=12;
int bouton=7;
int etat;

void setup() {
  // put your setup code here, to run once:
pinMode(pin,OUTPUT);
etat=digitalRead(bouton);

}

void loop() {
  // put your main code here, to run repeatedly:
digitalWrite(pin,valeur_pwm);
if(etat==LOW)
{
//Que mettre ici ?
  
}

tone(buzzer,valeur_pwm);
delay(1000);
noTone(buzzer);

}

Un 74HC11 c'est un "triple three input and gate". En quoi est ce que ça ressemble à un multiplexeur 8 vers 1 ? Le nombre de broches est le même ?

noephram a écrit

je suis en train de faire un diagramme de branchement sur Tinkercard mais il n'y a pas le mux 74HC151

...

j'ai pas trouvé le multiplexeur donc j'ai mis quelque chose qui y ressemblé pour le diagramme

noepham:
En fait c'est surtout que je comprend pas comment faire pour pouvoir choisir comment faire pour changer le signal quand on appuie sur le bouton avec le multiplexeur.

D’où ma suggestion au #2. Avant de chercher comment coder on cherche quoi faire. Il n'y a pas besoin d'écrire du code pour ça c'est juste de l’algorithmie.

fdufnews:
D’où ma suggestion au #2. Avant de chercher comment coder on cherche quoi faire. Il n'y a pas besoin d'écrire du code pour ça c'est juste de l’algorithmie.

D'accord mais du coup en algorithme ça serait
{
-Lire le signal envoyé
-Si le bouton est appuyé
-changé la direction du signal au buzzer
-Fin si
-Sonner le buzzer
-Attendre 1s
-Le buzzer arrête de sonner
Retour au début
}
mais c'est surtout la partie du if qui me pose problème parce que je vois pas comment retranscrire ça sur arduino

Je pense que vous passez complètement à coté du sujet du tp. Le prof vous demande de câbler un montage électronique, et il faut donc le comprendre. Vous avez une horloge, faite par un arduino, qui délivre un signal périodique à 980 Hz. Vous rentrez ça dans un compteur 4 bits, et en plus du signal d'entrée d0 vous récupérez des signaux périodiques d1 à 490 Hz, d2 à 245 Hz et d3 à 122.5 Hz. Le multiplexeur permet de choisir un de ces quatre signaux parmi 4. Il est piloté par trois lignes, issues de l'arduino. Le sujet vous demande d'incrémenter à chaque appui sur un bouton la combinaison envoyée au multiplexeur. Petite difficulté, les trois lignes de commande et le multiplexeur lui meme permettent de choisir un signal parmi huit et vous n'en avez que quatre. Je vais supposer que je n'incrémente la combinaison sur les lignes qu'avec quatre valeurs, puis que je recommence à zéro. Eh bien savez vous ce que vous devez réaliser ? Un piano à une seule touche, qui monte les octaves à chaque appui sur la touche, puis recommence. DO-DO-DO-DO sur quatre octaves. Presque du Mozart... ON ne vous demande donc pas de programmer dans l'arduino ce qui est fait sur les deux boitiers électroniques qui lui sont associés. OK ? Alors vous voyez que votre problème algorithmique se résume à incrémenter un compteur qui compte de zéro à trois à chaque appui sur le bouton poussoir. Ca se simplifie un peu, non ?

Vous avez une horloge, faite par un arduino, qui délivre un signal périodique à 980 Hz. Vous rentrez ça dans un compteur 4 bits, et en plus du signal d’entrée d0 vous récupérez des signaux périodiques d1 à 490 Hz, d2 à 245 Hz et d3 à 122.5 Hz et d4 à 61Hz. Le multiplexeur permet de choisir un de ces quatre cinq signaux parmi 4. Il est piloté par trois lignes, issues de l’arduino. Le sujet vous demande d’incrémenter à chaque appui sur un bouton la combinaison envoyée au multiplexeur. Petite difficulté, les trois lignes de commande et le multiplexeur lui meme permettent de choisir un signal parmi huit et vous n’en avez que quatre cinq. Je vais supposer que je n’incrémente la combinaison sur les lignes qu’avec quatre cinq valeurs, puis que je recommence à zéro. Eh bien savez vous ce que vous devez réaliser ? Un piano à une seule touche, qui monte les octaves à chaque appui sur la touche, puis recommence. DO-DO-DO-DO Si4-Si3-Si2-S1-S0 sur quatre (oui quatre) octaves. Presque du Mozart… ON ne vous demande donc pas de programmer dans l’arduino ce qui est fait sur les deux boitiers électroniques qui lui sont associés. OK ? Alors vous voyez que votre problème algorithmique se résume à incrémenter un compteur qui compte de zéro à trois quatre à chaque appui sur le bouton poussoir. Ca se simplifie un peu, non ?

Voici notre diagramme de branchement

Je ne suis pas fan de Tinkercard, je trouve que c'est nettement moins lisible qu'un vrai schéma, mais sur le dessin, il manque la résistance en série avec le buzzer et un des circuit n'est pas à la masse.

noepham:
D’accord mais du coup en algorithme ça serait
{
-Lire le signal envoyé
-Si le bouton est appuyé
-changé la direction du signal au buzzer
-Fin si
-Sonner le buzzer
-Attendre 1s
-Le buzzer arrête de sonner
Retour au début
}
mais c’est surtout la partie du if qui me pose problème parce que je vois pas comment retranscrire ça sur arduino

Oui enfin ça c’est grosse maille. Il faudrait affiner un peu en rentrant dans le détail.
Et pour la suite voir et .

Oui enfin ça c'est grosse maille

Non, pas du tout, la gestion du son est faite par la sortie PWM, le diviseur et le multiplexeur. Arduino ne gère que le bouton et le choix du diviseur.
L'algotithme consiste à
attendre un appui sur le bouton
changer de diviseur
attendre les 100ms d'anti rebond
C'est tout.

Tel que c'est présenté, le buzzer sonne sans arrêt possible.

JiPe38:
Je pense que vous passez complètement à coté du sujet du tp. Le prof vous demande de câbler un montage électronique, et il faut donc le comprendre. Vous avez une horloge, faite par un arduino, qui délivre un signal périodique à 980 Hz. Vous rentrez ça dans un compteur 4 bits, et en plus du signal d'entrée d0 vous récupérez des signaux périodiques d1 à 490 Hz, d2 à 245 Hz et d3 à 122.5 Hz. Le multiplexeur permet de choisir un de ces quatre signaux parmi 4. Il est piloté par trois lignes, issues de l'arduino. Le sujet vous demande d'incrémenter à chaque appui sur un bouton la combinaison envoyée au multiplexeur. Petite difficulté, les trois lignes de commande et le multiplexeur lui meme permettent de choisir un signal parmi huit et vous n'en avez que quatre. Je vais supposer que je n'incrémente la combinaison sur les lignes qu'avec quatre valeurs, puis que je recommence à zéro. Eh bien savez vous ce que vous devez réaliser ? Un piano à une seule touche, qui monte les octaves à chaque appui sur la touche, puis recommence. DO-DO-DO-DO sur quatre octaves. Presque du Mozart... ON ne vous demande donc pas de programmer dans l'arduino ce qui est fait sur les deux boitiers électroniques qui lui sont associés. OK ? Alors vous voyez que votre problème algorithmique se résume à incrémenter un compteur qui compte de zéro à trois à chaque appui sur le bouton poussoir. Ca se simplifie un peu, non ?

Alors peut être que je m'étais mal exprimé mais j'avais totalement compris la logique du montage et l'intérêt du circuit mais il faut bien avoir une relation entre le fait que le bouton soit pressé et ce qui se passe sur le circuit ? Parce que sinon ça n'a pas de sens de poussé un bouton juste pour poussé sur un bouton et je vois bien que le compteur permettrait de choisir quel combinaison de signal a envoyé mais c'est cette partie où j'ai du mal justement

noepham:
je vois bien que le compteur permettrait de choisir quel combinaison de signal a envoyé mais c'est cette partie où j'ai du mal justement

Il est où le compteur dans ton algorithme?
Un compteur c'est quoi en fin de compte? Comment on peut faire un compteur en logiciel?

OK pour le cinquième signal d'horloge. Je nettoie mes lunettes... :slight_smile:

Il vous reste à faire sur l'arduino deux fonctions. Gérer l'anti-rebond du bouton poussoir et faire un compteur qui compte de zéro à quatre. Comme c'est là le sujet de cette première question de votre tp, je suppose que la charte du forum recommande de vous laisser trouver tout seul, ou demander à votre binôme de vous aider.

Cherchez donc dans les messages du forum, vous allez trouver ça.

fdufnews:
Il est où le compteur dans ton algorithme?
Un compteur c’est quoi en fin de compte? Comment on peut faire un compteur en logiciel?

int pin=12;
int valeur_pwm=0;
char buzzer=12;
int bouton=7;
int etat;
int compteur=0;


void setup() {
pinMode(pin,OUTPUT);
etat=digitalRead(bouton);

}

void loop() {

  
digitalWrite(pin,valeur_pwm);


if(etat==LOW)
{
compteur++;
if(compteur>4)
compteur=0
}



tone(buzzer,valeur_pwm);
delay(1000);
noTone(buzzer);

}

Voila le compteur , après j’imagine qu’il faut que je fasse des if pour compteur = 1 ,2 ,3, et 4

Je peux vous poser une question : vous êtes à quel niveau d'études et quelle spécialité ? Si un prof vous balance un schéma avec un compteur synchrone et un multiplexeur, et que vous êtes censé le comprendre, vous devez forcément être en post bac dans une formation techno. Vous pataugez dans ce truc là comme un bizuth de classe de seconde avec option initiation techno. Vous avez un bac spécialité Covid-19 ? En supposant qu'on vous octroie un diplôme, probablement avec la même spécialité que votre bac, vos futurs employeurs vont s'arracher les cheveux.

JiPe38:
Je peux vous poser une question : vous êtes à quel niveau d'études et quelle spécialité ? Si un prof vous balance un schéma avec un compteur synchrone et un multiplexeur, et que vous êtes censé le comprendre, vous devez forcément être en post bac dans une formation techno. Vous pataugez dans ce truc là comme un bizuth de classe de seconde avec option initiation techno. Vous avez un bac spécialité Covid-19 ? En supposant qu'on vous octroie un diplôme, probablement avec la même spécialité que votre bac, vos futurs employeurs vont s'arracher les cheveux.

Je suis en première année d'étude en école d'ingénieur , on a commencé a parlé des multiplexeurs et des diviseurs la semaine dernière . Outre le jugement personnel qui ne me semble pas être validée dans la dite charte que vous avez mentionnées plutôt , je vous répète depuis tout à l'heure que je n'ai pas de problème avec le concept , je l'ai compris. Je me demande simplement comment choisir sur Arduino un des signal possible , merci

Bonjour,

Comme il a été dit plus haut il faut que tu gères un compteur de 0 à 4. Il est incrémenté par l'appui sur le bouton.
Ensuite tu mets le bit 0 de ton compteur sur la sortie 4, le bit 1 sur la sortie 3 et le bit 2 sur la sortie 2.