Werktags vor 14:00 Uhr bestellt = am selben Tag versendet 30 Tage Widerrufsrecht 1 Jahr Garantie
← Zurück zur Übersicht

Schaltplan und Codebeispiel

So schließt du den I2S DAC mit 3W Verstärker - MAX98357A an einen Arduino UNO oder ESP32 an, mit einem Beispiel-Sketch, den du direkt hochladen kannst.

MAX98357A I2S-Verstärker-Demo

Dieses Projekt zeigt den MAX98357A I2S-Verstärker, verbunden mit einem Arduino Uno und einem 3W-Lautsprecher. Da der AVR-basierte Arduino Uno keine native I2S-Peripherie besitzt, demonstriert der Sketch die Verdrahtung der Schnittstelle, indem die Steuer- und Datenpins geschaltet und Statusmeldungen über den Serial Monitor mit 115200 baud ausgegeben werden.

Anschlussplan: I2S DAC mit 3W Verstärker - MAX98357A an einem Arduino UNO
Anschlussplan · Zum Vergrößern klicken
Anschlusstabelle: I2S DAC mit 3W Verstärker - MAX98357A an einem Arduino UNO
Anschlusstabelle · Zum Vergrößern klicken
MAX98357A_I2S_Amplifier_Demo.ino · kompiliert und getestet
/*
 * ==================================================================
 *  Generated by Codey.online  —  https://www.codey.online
 * ==================================================================
 *  Project   : MAX98357A I2S Amplifier Demo
 *  Board     : Arduino UNO (arduino:avr:uno)
 *  Parts     : 3W amplifier MAX98357A I2S DAC
 *  Libraries : none (built-in)
 *
 *  Codey Online is an AI-powered browser IDE for Arduino and ESP32.
 *  Describe your project and Codey writes the code, draws the wiring
 *  diagram and uploads it to your board, straight from the browser.
 *  This code is free to use, modify and share, without warranty.
 * ==================================================================
 */

// MAX98357A I2S Amplifier wiring and basic test sketch
// Note: AVR Arduino Uno does not have hardware I2S.
// This sketch verifies pin connections and demonstrates signal pulsing.

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 outputPulse(unsigned long durationMs, unsigned int frequencyHz) {
  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 Amplifier Test"));
  Serial.println(F("Pins initialized: BCLK=9, LRC=8, DIN=10"));
}

void loop() {
  Serial.println(F("Signal ON (440 Hz pulse)"));
  outputPulse(toneOnMs, toneHz);

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

Wiring diagram and example code generated by Codey.online — https://www.codey.online

ESP32 I2S-Audiotongenerator mit MAX98357A

Dieses Projekt gibt abwechselnde Audiotöne über einen 3W-Lautsprecher mit dem digitalen I2S-Audioverstärker MAX98357A wieder. Der ESP32 synthetisiert 16-bit PCM-Audio in Echtzeit und streamt es direkt über den I2S-Bus an den DAC-Verstärker.

Anschlussplan: I2S DAC mit 3W Verstärker - MAX98357A an einem ESP32 DevKit V1
Anschlussplan · Zum Vergrößern klicken
Anschlusstabelle: I2S DAC mit 3W Verstärker - MAX98357A an einem ESP32 DevKit V1
Anschlusstabelle · Zum Vergrößern klicken
ESP32_I2S_Audio_Tone_Generator_with_MAX9.ino · kompiliert und getestet
/*
 * ==================================================================
 *  Generated by Codey.online  —  https://www.codey.online
 * ==================================================================
 *  Project   : ESP32 I2S Audio Tone Generator with MAX98357A
 *  Board     : ESP32 DEVKIT V1 (esp32:esp32:esp32doit-devkit-v1)
 *  Parts     : 3W amplifier MAX98357A I2S DAC
 *  Libraries : none (built-in)
 *
 *  Codey Online is an AI-powered browser IDE for Arduino and ESP32.
 *  Describe your project and Codey writes the code, draws the wiring
 *  diagram and uploads it to your board, straight from the browser.
 *  This code is free to use, modify and share, without warranty.
 * ==================================================================
 */

#include <Arduino.h>
#include "driver/i2s.h"
#include <math.h>

#define I2S_BCLK 26
#define I2S_LRC  25
#define I2S_DIN  22

#define SAMPLE_RATE 44100

void setup() {
  Serial.begin(115200);

  i2s_config_t i2s_config = {
    .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
    .sample_rate = SAMPLE_RATE,
    .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
    .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
    .communication_format = I2S_COMM_FORMAT_STAND_I2S,
    .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
    .dma_buf_count = 8,
    .dma_buf_len = 64,
    .use_apll = false,
    .tx_desc_auto_clear = true
  };

  i2s_pin_config_t pin_config = {
    .bck_io_num = I2S_BCLK,
    .ws_io_num = I2S_LRC,
    .data_out_num = I2S_DIN,
    .data_in_num = I2S_PIN_NO_CHANGE
  };

  i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);
  i2s_set_pin(I2S_NUM_0, &pin_config);

  Serial.println("MAX98357A I2S Tone Generator Ready!");
}

void playTone(float freq, int durationMs) {
  int totalSamples = (SAMPLE_RATE * durationMs) / 1000;
  size_t bytesWritten;
  int16_t buffer[128];
  
  float phaseStep = 2.0 * PI * freq / SAMPLE_RATE;
  float phase = 0.0;
  
  int samplesRemaining = totalSamples;
  while (samplesRemaining > 0) {
    int toWrite = min(64, samplesRemaining);
    for (int i = 0; i < toWrite; i++) {
      int16_t sample = (int16_t)(sin(phase) * 6000.0);
      buffer[i * 2] = sample;     // Left channel
      buffer[i * 2 + 1] = sample; // Right channel
      phase += phaseStep;
      if (phase >= 2.0 * PI) phase -= 2.0 * PI;
    }
    i2s_write(I2S_NUM_0, buffer, toWrite * sizeof(int16_t) * 2, &bytesWritten, portMAX_DELAY);
    samplesRemaining -= toWrite;
  }
}

void loop() {
  Serial.println("Playing 440 Hz (A4)...");
  playTone(440.0, 400);
  delay(100);

  Serial.println("Playing 880 Hz (A5)...");
  playTone(880.0, 400);
  delay(1000);
}

Wiring diagram and example code generated by Codey.online — https://www.codey.online

Zuletzt angesehen

RJ45 UTP Ethernet Netzwerk-Interface-Buchse weiblich

RJ45 UTP Ethernet Netzwerk-Interface-Buchse weiblich

€ 5,90
Ansehen
MAX3232 RS232 zu TTL serielle Module

MAX3232 RS232 zu TTL serielle Module

€ 1,80
HC-SR04 Ultraschall-Abstandssensor

HC-SR04 Ultraschall-Abstandssensor

€ 2,89
10-poliger DIP-Schalter 2,54 mm

10-poliger DIP-Schalter 2,54 mm

€ 0,80
MAX30100 Pulsoximeter Herzfrequenz-Sensormodul

MAX30100 Pulsoximeter Herzfrequenz-Sensormodul

€ 2,60
Micro-DC-Motor 3V mit Kabeln

Micro-DC-Motor 3V mit Kabeln

€ 1,60
Schiebeschalter SS12D00G2 3-polig

Schiebeschalter SS12D00G2 3-polig

€ 0,60
Breadboard 840 Löcher hohe Qualität

Breadboard 840 Löcher hohe Qualität

€ 2,45
Mini-Holzflugzeug mit Solarenergie (Bildung)

Mini-Holzflugzeug mit Solarenergie (Bildung)

€ 22,00
Ansehen
Kabelbinder Weiß 20cm 3.5mm

Kabelbinder Weiß 20cm 3.5mm

€ 0,25