Мой светодиодный дисплей выходит из строя из за того что выход MSGEQ7 застрял

arduino-pro-mini led-strip

У меня есть установка Arduino с pro-mini, MSGEQ7 и микрофоном с автоматическим усилением. Даже если я удалю аудиовход на MSGEQ7, он останется прежним в 890-х годах (из 1024). Это то же самое на каждом из двух новых MSGEQ7. Я проверил схемы, https://www.instructables.com/Music-Sync-Flashing-LEDs-Arduino-MSGEQ7/, несколько раз, и все, кажется, в порядке, включая компоненты.

Я использую #include <MD_MSGEQ7.h><MD_MSGEQ7.h>, но я пробовал без него.

Есть идеи?

#include <Adafruit_NeoPixel.h>
#include <MD_MSGEQ7.h>

int LEDPIN = 12;
int MODEPIN = 10;

int mode = 0;
int lastState = LOW;

int NUMPIXELS = 50;

int DATA_PIN = 1; // считывание с мультиплексора с помощью аналогового вывода 1, вывода MSGEQ7 3
int STROBE_PIN = 2; // MSGEQ7 pin 4
int RESET_PIN = 3; // MSGEQ7 pin 7

int spectrumValue[7];

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, LEDPIN, NEO_GRB + NEO_KHZ800);
MD_MSGEQ7 MSGEQ7(RESET_PIN, STROBE_PIN, DATA_PIN);

void setup() {
  
  Serial.begin(9600);
  pinMode(MODEPIN, INPUT);
  pixels.begin();
  MSGEQ7.begin();
}

void loop() {
  int currentState = digitalRead(MODEPIN);

  if (currentState == LOW && lastState == HIGH) {
    mode++;
    if (mode > 2) {
      mode = 0;
    }
  }
  lastState = currentState;
  
  MSGEQ7.read();

  for (int i = 0; i < 7; i++) {
    Serial.println(MSGEQ7.get(i));
  }
  if (mode == 0) {
    for (int i = 0; i < NUMPIXELS - 1; i++) {
      pixels.setPixelColor(i, pixels.Color(30, 60, 60)); // RGB
    }
  } else if (mode == 1) {/////////////////////////////////////////////////////////
    int height = (NUMPIXELS - 1) * MSGEQ7.get(1) / 1024;
    for (int i = 0; i < NUMPIXELS - 1; i++) {
      if (i < height) {
        pixels.setPixelColor(i, pixels.Color(60, 60, 0)); // RGB
      } else {
        pixels.setPixelColor(i, pixels.Color(0, 0, 0)); // RGB
      }
    }
  } else if (mode == 2) { /////////////////////////////////////////////////////////
    pixels.setPixelColor(0, pixels.Color(120 * MSGEQ7.get(5) / 1024, 0, 0)); // RGB
  }
  pixels.show();
}

, 👍2

Обсуждение

Здесь не так уж много можно сделать. Где твой код? Вы хотите сказать, что точно следовали схеме в этой статье, включая компоненты? Что делает "...Я убираю микрофон с выхода..." в смысле?, @lurker

Отредактированный. Спасибо., @mystack