Après avoir réalisé une fois un amplificateur a base de LM386 sur breadboard (voir articles Arduino), je suis tombé sur un module tout fais… A quoi bon réinventer la roue … 🙂

lm386_photos

En plus de ne plus avoir a recréer le montage, il y a une grosse réduction du bruit du au fils sur la platine de prototypage, il est plus compacte et les connectique sont plus simples (borniers et pins).

C’est parti…

Branchement

Au niveau du branchement c’est relativement simple.

Coté IN il y a 4 broches

  • VCC -> 5V à 12V
  • GND -> GND
  • IN -> Le positif de votre entrée audio
  • GND -> Le négatif de votre entrée audio

Coté OUT deux broches:

  • IN -> Le positif de votre haut-parleur.
  • GND -> Le négatif de votre haut-parleur.

Utilisation avec l’Arduino

Pour une utilisation avec l’Arduino, c’est exactement la même chose que l’article précédent [LIEN].

Connexion à l’Arduino

lm386_module

  • VCC -> 5V de l’arduino
  • GND -> GND de l’arduino
  • IN -> pin 9 de l’arduino
  • GND -> de l’arduino

Coté OUT deux broches:

  • IN -> Le positif de votre haut-parleur.
  • GND -> Le négatif de votre haut-parleur.

Code

Pareil que le précédent article, juste pour le test:

/* Play Melody
 * -----------
 *
 * Program to play melodies stored in an array, it requires to know
 * about timing issues and about how to play tones.
 *
 * The calculation of the tones is made following the mathematical
 * operation:
 *
 *       timeHigh = 1/(2 * toneFrequency) = period / 2
 *
 * where the different tones are described as in the table:
 *
 * note         frequency       period  PW (timeHigh)   
 * c            261 Hz          3830    1915    
 * d            294 Hz          3400    1700    
 * e            329 Hz          3038    1519    
 * f            349 Hz          2864    1432    
 * g            392 Hz          2550    1275    
 * a            440 Hz          2272    1136    
 * b            493 Hz          2028    1014    
 * C            523 Hz          1912    956
 *
 * (cleft) 2005 D. Cuartielles for K3
 */

int ledPin = 13;
int speakerOut = 9;               
byte names[] = {'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C'};  
int tones[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956};
byte melody[] = "2d2a1f2c2d2a2d2c2f2d2a2c2d2a1f2c2d2a2a2g2p8p8p8p";
// count length: 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
//                                10                  20                  30
int count = 0;
int count2 = 0;
int count3 = 0;
int MAX_COUNT = 24;
int statePin = LOW;

void setup() {
 pinMode(ledPin, OUTPUT); 
}

void loop() {
  analogWrite(speakerOut, 0);     
  for (count = 0; count < MAX_COUNT; count++) {
    statePin = !statePin;
    digitalWrite(ledPin, statePin);
    for (count3 = 0; count3 <= (melody[count*2] - 48) * 30; count3++) {
      for (count2=0;count2<8;count2++) {
        if (names[count2] == melody[count*2 + 1]) {       
          analogWrite(speakerOut,500);
          delayMicroseconds(tones[count2]);
          analogWrite(speakerOut, 0);
          delayMicroseconds(tones[count2]);
        } 
        if (melody[count*2 + 1] == 'p') {
          // make a pause of a certain size
          analogWrite(speakerOut, 0);
          delayMicroseconds(500);
        }
      }
    }
  }
}

            

C’est terminé 🙂