I have often wondered, and I have read people saying that you could only use a 250 ohm 0.05w speaker or there might be problems.
Well, here are my test results using an Arduino Micro (Leonardo) and various speakers, audio is achieved via a modified version of the ezBuzzer library and the data describing what to play is fed to the Arduino via the HP Prime calculator.
Use an amplifier to get the volume you want from a speaker. Adafruit, Sparkfun and the like have very inexpensive class D audio amplifiers in a variety of power levels.
An output pin cannot safely drive a low impedance speaker.
I don't have the least bit of interest in watching a video.
Under no circumstances should you draw more than 20 mA from an I/O pin on an AVR based Arduino. Less (e.g. 7 mA) for some other types of processors. And no pin should ever be used to drive an inductive load, like a speaker.
I'm grateful for your help in the past, but it is unknown to me how much current this speaker is drawing from the Arduino. If you know the technical answer, then please tell me the problems that may occur. If you do not know or do not seek to find out, then there really is no point in you commenting I would have thought.
Explain the problem to me technically please by all means, if you have some technical information on this setup!
That's okay with an ATmega controller who's output pins can provide 20 mA current. I'd prefer a piezo speaker for more volume at less power and EMF risk.
Ohm's Law describes the relationship between voltage, resistance, and, current. (Current = Voltage / Resistance).
Resistance (or impedance) is the resistance to current flow.
Usually, voltage and resistance (or impedance) are known or controlled and current is the result.
5V across 250 Ohms results in 20mA. If the resistance/impedance is too low, you'll get excess current and the voltage may drop and "bad things" can happen.
Power (Watts) is calculated as Voltage X Current. And from Ohm's Law you can calculate other variations of the formula.
The power rating on a speaker is it's maximum. You can feed lower power into it but it won't be as loud.
You (probably) won't find a 250 Ohm speaker. Most speakers are 4 or 8 Ohms. You can put a resistor in series but it will be VERY quiet.
Piezo speakers have higher impedance and they CAN be directly driven by the Arduino. (Piezo speakers are 'tweeters"... no bass and weak mid-range.)
A speaker is an AC motor that moves air as the cone move in and out from the center magnet. If you use DC to drive a speaker, that is what you get with a speaker connected to an Arduino pin, then the speaker motor moves the cone ONE direction only and the cone stiffness moves the cone back to it's relaxed position. That movement generated NO sound.