工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

32バンドArduinoオーディオスペクトラムアナライザー:リニア&疑似ログ表示対応

部品と材料

部品数量
Arduino Nano R31
抵抗 10kΩ1
抵抗 100kΩ2
抵抗 4.75kΩ3
ジャンパーワイヤー(汎用)1セット
ブレッドボード(汎用)1
USB-A - Mini-USBケーブル1
タクトスイッチ(トップアクチュエート)1
メスヘッダー 36ポジション 1列(0.1インチ)1

工具と機器

ソフトウェアとオンラインサービス

プロジェクト概要

Arduinoベースのオーディオエレクトロニクス初挑戦作。Shajeeb氏のオーディオビジュアライザーに着想を得て、32バンドリニアモードと11バンド疑似ログモードの表示切替機能を追加しました。Excelでカスタム対数マッピングテーブルを作成し、ファームウェアに組み込むことで、より正確な周波数応答を実現しています。

タクトスイッチで2つの表示モードを瞬時に切り替え可能。パフォーマンス中や実験中のモード切替に便利です。

ファームウェアやハードウェアは自由に改造し、独自のクリエイティブプロジェクトに活用してください。

ソースコード

32_Band_LED_Spectrum_Analyzer-009.ino

// Christian Suryanto改変版、オリジナル (c) 2019 Shajeeb TM // HAZI TECH
#include <arduinoFFT.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#include <EEPROM.h>

#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
#define SAMPLES 64
#define MAX_DEVICES 4
#define xres 32
#define yres 8
#define PREV 0xFF02FD
#define NEXT 0xFFC23D
#define PWR 0xFFA25D

int audio_response = 35;
double vReal[SAMPLES];
double vImag[SAMPLES];
char data_avgs[xres];
int yvalue;
int displaycolumn, displayvalue;
int peaks[xres];
const int buttonPin = 6;
int state = HIGH;
int previousState = LOW;
int displaymode;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
int MY_ARRAY[]={0, 128, 192, 224, 240, 248, 252, 254, 255};
bool EQ_ON = true;
byte eq1[32] = {40, 45, 50, 60, 65, 70, 75, 95, 110, 110, 110, 110, 110, 110, 110, 110, 130, 130, 130, 130, 130, 130, 130, 130, 145, 155, 170, 180, 215, 220, 245, 255};
byte eq2[11] = {40, 70, 75, 110, 110, 140, 145, 220, 220, 230, 250};

MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
arduinoFFT FFT = arduinoFFT();

void setup() {
  EEPROM.update(1,1);
  displaymode = EEPROM.read(1);
  ADCSRA = 0b11100101;
  ADMUX = 0b00000000;
  pinMode(buttonPin, INPUT);
  mx.begin();
  mx.control(MD_MAX72XX::INTENSITY, 0);
  delay(50);
}

void loop() {
  int numData;
  double rSum;
  
  for(int i=0; i peaks[i]) peaks[i] = yvalue;
    yvalue = peaks[i];
    displayvalue = MY_ARRAY[yvalue];
    
    if (displaymode==1) {
      displaycolumn = 31-i;
      mx.setColumn(displaycolumn, displayvalue);
    } else {
      displaycolumn = 31-(3*i);
      mx.setColumn(displaycolumn-1, displayvalue);
      mx.setColumn(displaycolumn, displayvalue);
    }
  }
  displayModeChange();
}

void displayModeChange() {
  int reading = digitalRead(buttonPin);
  if (reading == HIGH && previousState == LOW && millis() - lastDebounceTime > debounceDelay) {
    if (displaymode==1) {
      displaymode = 2;
      mx.clear();
      delay(200);
      EEPROM.update(1,2);
    } else {
      displaymode = 1;
      mx.clear();
      delay(200);
      EEPROM.update(1,1);
    }
    lastDebounceTime = millis();
  }
  previousState = reading;
}

回路図

32バンドArduinoオーディオスペクトラムアナライザー:リニア&疑似ログ表示対応

製造プロセス

  1. スマート渇きアラート植物アラーム – 最適な水やりタイミングを知らせるDIYセンサー
  2. イタリア語ワードクロック自作:Arduino Nano、NeoPixel、LCD、RTCで時刻を文字で表示
  3. アナログ3ピンで4×3キーパッドを接続 - Arduinoピン節約テクニック
  4. Arduino MKR Fox 1200で作る信頼性の高いSigfox kWhメーター
  5. Bluetooth対応温度モニター:Arduino NanoとHC-06でスマホ監視
  6. 自動レンジ切替対応 静電容量メーター (10pF〜10µF) - Arduino Nano で簡単自作
  7. 非接触ジェスチャー錠: APDS-9960とArduinoでセキュアアクセス
  8. Arduino Nanoコンパニオンキット – 電子工作に必須の部品とツールを搭載した多機能IC型デバイス
  9. Arduino Micro/Leonardo用 USB-MIDIアダプタキット – 完全パーツリストと実装ガイド
  10. Arduino用絶縁アナログ入力回路の設計:LM331 V-F変換+フォトカプラでノイズ耐性を確保
  11. Arduino UNOで作る精密反応速度テスター