multiplexeur

J'ai un problème je ne comprend pas le fonctionnement d'un multiplexeur mon professeur me demande d'en utiliser un pour pouvoir brancher plus de phototransitor, car sur la carte arduino i n'y a pas assez de sortie analogique. J'ai fais plusieurs recherche sur des sits et regardé plusieurs vidéos sur facebook mais ça ne m'aide pas vraiment. Mon prof me dit que je n'ai pas besoin de beaucoup de fil pour faire les branchement et sur les vidéos, et les shémas il y en a beaucoup

Aider moi svp

Bonjour,

Ca manque de précision tout ça.
Combien de phototransistors ? Et pourquoi faire?
Tu confonds certainement entrée et sortie analogique.

Pas convaincu, sur le net il y a des milliers d'articles et de cours qui traite le multiplexage en long, large et travers.

J'ai pour projet de faire une harpe laser, avec plusieurs led et phototransistor j'ai esayé avec une led et mon programme marche, bref la n'est pas le probleme je dois mettre 8 phototransistors et oui j'ai confondu entrée et sortie donc il n'y en a pas assez, mon professeur m'a donc dit qu'il fallait que j'utilise un multiplexeur or, je n'avais jamais entendu parlé de ce composant avant qu'il ne m'en parle. J'ai donc regardé sur internet ce que c'était et comment l'utiliser je comprend comment il fonctionne car il me l'avait lui même expliqué mais c'est comment faire le montage que je ne sais pas comment faire enfaite

Toujours pas compris.

Explique le fonctionnement de ta harpe laser.
Un petit schéma de principe sera le bien venu.

Quelle carte Arduino?
Si les 8 phototransistors sont utilisés en analogique, il y a assez d'entrées.
Si les 8 phototransistors sont utilisés en numérique, il y a assez d'entrées.
Je ne voie pas où est le problème.

Combien de LED ?

Je vais mettre les photos que j'ai prise de mon montage

J'ai fait le test avec un seule composant de chaque soit : un laser (on ne le voi pas sur mes photo airs il est relié à un générateur il n'est pas inclus directement dans le montage), un phototransistor, une résistance des fils une carte arduino Leonardo ethernet un haut parleur une plaque et une résistance
Mon montage est celui sur les photos (j'espère que vous pourrez les voirs)
Le fil rouge sur le port 9 est un fil relié à un haut parleur
Mon programme (je ne l'ai pas sous la main) détecte lorsqu'un faisceaux est coupé et dès lors émet un son
Ce projet cest pour une épreuve de bac
Mon professeur m'a dit que c'était trop simple donc il m'a dit de compliquer la chose avec un multiplexeur mais je ne sais pas vraiment comment le relié à la carte arduino je fais "de larduino" depuis le mois de septembre à peine
A la fin de la construction je devrais avec 8laser, 8 phototransistor, et les composant qui vont avec
Les phototransistors doivent être relié grâce au multiplexeur
Vous voyez où je veux en venir ?

J'ai mon programme enfaite je le met en piece jointe, donc c'est le programme qui detecte quand le faiscaaux est sur le transistor ( quand les element sront bien mis j'inverserai tone et no tone car si je le fait mintenant ça sonne tout le temps vu que le laser n'est pas tout le temps en face vu quil n'est pas souder)

Y a t-il quelqu'un car j'ai avancé mais j'ai un problème dans mon programme

#define S0 2
#define S1 3
#define S2 4
#define Z 0

const byte photodiodePin = 0;
const byte PIN_BUZZER = 9;

int photomesure; // la valeur lue de 0 à 1023

int seuil = 500 ; // si la valeur analogique lue est inférieure à 50

void setup (){
//ADRESSE PINS
pinMode(S0,INPUT);
pinMode(S1,INPUT);
pinMode(S2,INPUT);

Serial.begin(9600);
pinMode(PIN_BUZZER,OUTPUT);
}

void loop () {

// LOOP PAR TOUTE LES ADRESSES
for ( byte count = 0; count < 8 ; count++ ) {

// SET THE ADDRESS
digitalWrite(S0, bitRead(count, 0) );
digitalWrite(S1, bitRead(count, 1) );
digitalWrite(S2, bitRead(count, 2) );

// LIRE L'ANALOGUE POUR CETTE ADRESSE
int reading = analogRead(Z);

Serial.print("A0-");
Serial.print(bitRead(count, 2));
Serial.print(bitRead(count, 1));
Serial.print(bitRead(count, 0));
Serial.print(' ');
Serial.println(reading);

delay(100);

photomesure=analogRead(photodiodePin);

Serial.print("Mesure = ");
Serial.println(photomesure);

if (photomesure < seuil) { // faisceau coupé !
tone(PIN_BUZZER,2637); //à inverser avec notone pour que ce soit dans le bon sens

} else {
noTone(PIN_BUZZER);
}

}
}

J'ai fait ce programme la, quand je le televerse sur la carte arduino leonardo ethernet, le son est constant je n'arrive pas ce qu'il soit uniquement lorsque le laser est au dessus du recepteur
J'ai fait ce montage la http://tok.hakynda.com/article/detail/18/multiplexer-demultiplexer-hcf4051be j'ai juste rajouté l'enceinte comme il y a sur les images sur es posts au dessu si quelqu'un pouvait répondre ce serait cool

Faudrait peut-être commencer par définir les IO correctement.
Les S0, S1, S2 doivent être des sorties pas des entrées je pense!

Hier ça marchais avec ce programme donc je suis en trein de me demander si ce n'est pas parce qu'il y a trop de lumière dans la pièce comparer à hier ou j'ai tester le programme en début de soiree

hello
nous sommes d'accord?
tes phototransistors sont raccordé aux pattes 1,2,4,5,12,13,14,15
A0 de l'arduino est raccordé à 3 du multiplexeur
la patte 6 du multiplexeur est raccordée à GND
2,3,4 de l'arduino sont raccordées respectivement à 11,10,9 du multiplexeur
le 7 et le 16 du multiplexeur au +5V
le 8 du multiplexeur à GND

GND du multiplexeur et de l'arduino doivent être commun

à l'utilisation, les lasers éclairent en permanence leurs photodiodes respectives.
et c'est toi qui en passant la main dans le faisceau du laser fait que la photodiode passe sous le seuil.

coté code, je te laisse regarder

#define S0 2
#define S1 3
#define S2 4
//#define  Z A0

const byte photodiodePin = A0;
const byte PIN_BUZZER = 9;

 
int photomesure;  // la valeur lue de 0 à 1023
 
 
int seuil = 500 ; // si la valeur analogique lue est inférieure à 50

           void setup (){
            //ADRESSE PINS
            pinMode(S0,OUTPUT);
            pinMode(S1,OUTPUT);
            pinMode(S2,OUTPUT);

            Serial.begin(9600);
            pinMode(PIN_BUZZER,OUTPUT);
           }

void loop () {

        // LOOP PAR TOUTE LES ADRESSES
        for ( byte count = 0; count < 8 ; count++ ) {

                // SET THE ADDRESS
                digitalWrite(S0, bitRead(count, 0) );
                digitalWrite(S1, bitRead(count, 1) );
                digitalWrite(S2, bitRead(count, 2) );

                /* // LIRE L'ANALOGUE POUR CETTE ADRESSE
                int reading = analogRead(Z);

                Serial.print("A0-");
                Serial.print(bitRead(count, 2));
                Serial.print(bitRead(count, 1));
                Serial.print(bitRead(count, 0));
                Serial.print(' ');
                Serial.println(reading);

                 */
                //delay(100);//vu les temps de propagation de quelques nano secondes, un delai de 100 ms me semble exagéré et inutile

                photomesure=analogRead(photodiodePin);

                 /*
                 Serial.print("Mesure = ");
                  Serial.println(photomesure);       
                */
  if (photomesure < seuil) { // faisceau coupé ! 
      tone(PIN_BUZZER,2637); //à inverser avec notone pour que ce soit dans le bon sens
      
      
  } else {
       noTone(PIN_BUZZER);
        }

        }
        }

Oui c'est ça, mais en essayant avec les modifications que tu as fait, ça sonne tout le temps.
parce que hier lorsque je mettais le laser sur un des transistor ça faisait un son mais maintenant ça sonne tout le temps quoi que je fasse
quand j'aurais resolu ce probleme j'essairais de mettre une note pour chaque transistor

J'ai oublié A0 de l'arduino n'est pas relié au trois du multiplexeur, les seuls fils branché sur arduino sont 2,3,4 ; 5V,GND ; 9(pour l'enceinte)