Codey OnlineArduino & ESP32 component library › 3W amplifier MAX98357A I2S DAC
3W amplifier MAX98357A I2S DAC
Output

3W amplifier MAX98357A I2S DAC

MAX98357A I2S Class-D mono amplifier breakout (3W). Receives digital I2S audio and drives a speaker directly. No DAC needed — digital in, amplified analog out.

Protocols: I2S Width: 17.9 mm

Pinout — 3W amplifier MAX98357A I2S DAC

Pin Signal Description
SPK - audio Speaker - out
SPK + audio speaker + out
LRC data bottom header far-left hole
BCLK SCK bottom header left hole
DIN data bottom header center-left hole
GAIN digital bottom header center hole
SD data bottom header center-right hole
GND ground bottom header right-center hole
VIN power bottom header far-right hole

Wiring notes

I2S input pins: BCLK (bit clock), LRC (word select / LRCLK), DIN (serial data). Power: VIN (3.3V-5V), GND. Speaker output: connect SPK+ and SPK- directly to a passive speaker (4-8 ohm, up to 3W). ALWAYS include the speaker connection in wiring diagrams — the amplifier is useless without it. GAIN pin: leave unconnected for 9dB, connect to GND for 12dB, connect to VIN for 15dB. SD pin: leave unconnected or pull HIGH to enable; pull LOW or connect to GND to shut down.

Example wiring diagram — 3W amplifier MAX98357A I2S DAC

From To Wire
board:5V x1:VIN red
board:GND x1:GND black
board:D9 x1:BCLK green
board:D8 x1:LRC blue
board:D10 x1:DIN yellow

Example Arduino code — 3W amplifier MAX98357A I2S DAC

This example was written and compile-checked for the arduino-uno. Codey Online adapts it to any other supported board for you.

#include <Arduino.h>

// Canonical beginner example for MAX98357A on Arduino Uno.
//
// Important:
// The Arduino Uno (AVR) cannot generate hardware I2S with the standard core,
// so this sketch demonstrates the wiring and control pins, then produces a very
// simple software-generated square-wave audio pattern on the data pin.
//
// Wiring used:
//   D9  -> BCLK
//   D8  -> LRC
//   D10 -> DIN
//   5V  -> VIN
//   GND -> GND

const uint8_t PIN_BCLK = 9;
const uint8_t PIN_LRC  = 8;
const uint8_t PIN_DIN  = 10;

const unsigned int toneHz = 440;
const unsigned long toneOnMs = 1000;
const unsigned long toneOffMs = 500;

void outputSquareWave(unsigned long durationMs, unsigned int frequencyHz) {
  // This does not create real I2S audio; it is only a simple beginner demo.
  // The MAX98357A requires an I2S-capable source for proper audio playback.
  unsigned long start = millis();
  unsigned long halfPeriodUs = 500000UL / frequencyHz;

  while (millis() - start < durationMs) {
    digitalWrite(PIN_DIN, HIGH);
    delayMicroseconds(halfPeriodUs);
    digitalWrite(PIN_DIN, LOW);
    delayMicroseconds(halfPeriodUs);
  }
}

void setup() {
  pinMode(PIN_BCLK, OUTPUT);
  pinMode(PIN_LRC, OUTPUT);
  pinMode(PIN_DIN, OUTPUT);

  digitalWrite(PIN_BCLK, LOW);
  digitalWrite(PIN_LRC, LOW);
  digitalWrite(PIN_DIN, LOW);

  Serial.begin(115200);
  Serial.println(F("MAX98357A example starting."));
  Serial.println(F("Arduino Uno does not support native I2S in the standard AVR core."));
  Serial.println(F("This sketch only demonstrates basic pin control on the labeled connections."));
}

void loop() {
  Serial.println(F("Tone ON"));
  outputSquareWave(toneOnMs, toneHz);

  Serial.println(F("Tone OFF"));
  digitalWrite(PIN_DIN, LOW);
  delay(toneOffMs);
}

Related components

Active Buzzer Module

Active Buzzer Module

⚙️

LED

LED Matrix Module MAX7219

LED Matrix Module MAX7219

Passive Buzzer Module

Passive Buzzer Module

Build your Arduino or ESP32 project with AI

Describe what you want to build. Codey Online writes the code, draws the wiring diagram, compiles it and flashes your board straight from the browser.

Start for free