Bestilt før kl. 14.00 på hverdage = afsendt samme dag 30 dages fortrydelsesret 1 års garanti
← Terug til oversigten

Tilslutningsdiagram og kodeeksempel

Sådan tilslutter du I2S DAC med 3W forstærker - MAX98357A til en Arduino UNO eller ESP32, med en eksempelsketch, du kan uploade med det samme.

MAX98357A I2S-forstærkerdemo

Dette projekt viser MAX98357A I2S-forstærkeren tilsluttet en Arduino Uno og en 3W-højttaler. Da den AVR-baserede Arduino Uno ikke har en indbygget I2S-periferi, demonstrerer sketchen interface-tilslutningen ved at skifte kontrol- og datapins og vise statusmeddelelser i Serial Monitor ved 115200 baud.

Tilslutningsdiagram: I2S DAC med 3W forstærker - MAX98357A på en Arduino UNO
Tilslutningsdiagram · Klik for at forstørre
Tilslutningstabel: I2S DAC med 3W forstærker - MAX98357A på en Arduino UNO
Tilslutningstabel · Klik for at forstørre
MAX98357A_I2S_Amplifier_Demo.ino · kompileret og testet
/*
 * ==================================================================
 *  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-lydtonegenerator med MAX98357A

Dette projekt afspiller skiftende lydtoner gennem en 3W-højttaler med den digitale I2S-lydforstærker MAX98357A. ESP32 syntetiserer 16-bit PCM-lyd i realtid og sender den direkte til DAC-forstærkeren via I2S-bussen.

Tilslutningsdiagram: I2S DAC med 3W forstærker - MAX98357A på en ESP32 DevKit V1
Tilslutningsdiagram · Klik for at forstørre
Tilslutningstabel: I2S DAC med 3W forstærker - MAX98357A på en ESP32 DevKit V1
Tilslutningstabel · Klik for at forstørre
ESP32_I2S_Audio_Tone_Generator_with_MAX9.ino · kompileret og testet
/*
 * ==================================================================
 *  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

Set for nylig

Servo Beugel til bl.a. Robot Arm / Humanoid Robot - U, Sort, Aluminium

Servo Beugel til bl.a. Robot Arm / Humanoid Robot - U, Sort, Aluminium

€ 3,65
5V LED verkeerslichtmodule til Arduino

5V LED verkeerslichtmodule til Arduino

€ 1,89
Accelerationsmåler og gyroskop I2C - MPU-6050

Accelerationsmåler og gyroskop I2C - MPU-6050

€ 3,75
Se
ESP8266 D1 Mini V2 | WiFi | CH340G Development board (Wemos)

ESP8266 D1 Mini V2 | WiFi | CH340G Development board (Wemos)

€ 4,80
Mikrobølge radar bevægelsessensor (Doppler) - 5.8Ghz HFS-DC06

Mikrobølge radar bevægelsessensor (Doppler) - 5.8Ghz HFS-DC06

€ 11,40