PAM8403 Stereo Amplifier
Jump to navigation
Jump to search
Contents
Description
An amplifier can be used to driver bigger speakers and to generate sound that is louder.
The amplifier is connected (similar to a speaker) to the ESP32/ESP8266, it is also connected to power, and then it has connections for the speakers.
How to connect it electrically
How to control it in MicroPython
Basic code to generate a 500 Hz signal
creating a mono singnal with 500Hz on Pin 27 (connected to the left channel)
1 from machine import Pin
2 from time import sleep, sleep_us, sleep_ms
3
4 # assume our amplifier is connected to Pin 27, we use it as output
5 myLED = Pin(27, Pin.OUT)
6
7 #generate a 500Hz on/off signal
8 while True:
9 # this switcheson for 1ms = 1000 us
10 myLED.on()
11 sleep_us(1000)
12 # this switches off for 1 ms = 1000 us
13 myLED.off()
14 sleep_us(1000)
Code to play a melody - decoding notes
Example code shows how you can play a melody with the speaker. If you want to add higher notes see https://en.wikipedia.org/wiki/Piano_key_frequencies for the needed frequency. The example code was taken and edited from https://micropython-on-esp8266-workshop.readthedocs.io/en/latest/basics.html#beepers.
There are some issues with restarting PWM outputs - see Known Issues.
1 # beeper code from https://micropython-on-esp8266-workshop.readthedocs.io/en/latest/basics.html#beepers
2 from machine import Pin, PWM
3 from time import sleep
4
5 tempo = 4
6 #notes and corresponding frequency
7 tones = {
8 'c': 262,
9 'd': 294,
10 'e': 330,
11 'f': 349,
12 'g': 392,
13 'a': 440,
14 'b': 494,
15 'C': 523,
16 ' ': 0,
17 }
18 pin = Pin(27, Pin.OUT)
19 # Init Beeper without frequency.
20 beeper = PWM(pin, duty=512)
21 melody = 'cdefggaaaagaaaagffffeeddddc'
22 rhythm = [8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 4, 8, 8, 8, 8, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 4]
23
24 for tone, length in zip(melody, rhythm):
25 beeper.freq(tones[tone])
26 sleep(tempo/length)
27
28 beeper.deinit()
Related Tutorial Videos