wiring a 8ohm .25w speaker

cant seem to get the speaker to play or do anything…

is there a test sketch or something to test if the speaker works? maybe the wiring is wrong? i’m not even sure where to begin -.-

5v was powered from the arduino
gnd was also from the arduino…

i tryed both of these :

the left side i tryed using a 4.7k resistor not a 120 as i dont have one…
the right side i tryed using a bc546B trans as i dont have a bc337 trans. wired it up just lik the diagram showed…

i have also tryed this:

just the top where it uses a cap and i was using a 220uF as the cap and still doesnt work…

the data pin i was using is the Digital pin 47 on the arduino mega 2560

this sketch was what i was testing it on:

/*
  Melody
 
 Plays a melody 
 
 circuit:
 * 8-ohm speaker on digital pin
 
 created 21 Jan 2010
 modified 30 Aug 2011
 by Tom Igoe 

This example code is in the public domain.
 
 http://arduino.cc/en/Tutorial/Tone
 
 */
 #include "pitches.h"

// notes in the melody:
int melody[] = {
  NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};

// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
  4, 8, 8, 4,4,4,4,4 };

void setup() {
  // iterate over the notes of the melody:
  for (int thisNote = 0; thisNote < 8; thisNote++) {

    // to calculate the note duration, take one second 
    // divided by the note type.
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
    int noteDuration = 1000/noteDurations[thisNote];
    tone(47, melody[thisNote],noteDuration);

    // to distinguish the notes, set a minimum time between them.
    // the note's duration + 30% seems to work well:
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    // stop the tone playing:
    noTone(47);
  }
}

void loop() {
  // no need to repeat the melody.
}

Not surprising that non of those would work. In fact the one with just the capacitor to the speaker will damage your arduino due to putting too much load on it.
You want an amplifier, this is one I have used on projects:-

Audio amp.png

You didn't have a 120 ohm resistor, so you tried a 4.7k resistor. That is 39 times more resistance. Power is in proportion to the inverse of the square of the resistance. Assuming the speaker resistance is too small compared to either resistance to worry about, that means .00065 times the power. I'm not surprised you can't hear anything.

The complementary emitter follower should work, but you should put that 4.7k resistor between the Arduino and the transistor bases.

You know you are only driving this with a digital signal, correct? If you try to use analogWrite, it outputs a PWM of only 490 or 980Hz (depending on the model Arduino), so you'll just hear that.

So you -could- just output an analogWrite of 127, that is about 50% duty cycle. Then you'll just hear the 490 or 980Hz buzz. Note that analogWrite only works on certain pins, dependent on which Arduino you are using.

Or you could use the tone library, or toneAC.

http://playground.arduino.cc/Code/ToneAC

I was able to run the ToneAC examples using just a 470 uF cap and a 2" 8 ohm speaker with no resistor.
No problems.

With some of the extreme paranoia about drawing more than 40mA from an Arduino pin, I'd add a resistor. Or at least, not mention not using one here. :wink: