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

32(リニエ)/ 11(疑似ログ)バンドオーディオスペクトラムアナライザ

コンポーネントと消耗品

>
Arduino Nano R3
× 1
抵抗10kオーム
× 1
抵抗100kオーム
× 2
抵抗4.75kオーム
× 3
ジャンパー線(汎用)
× 1
ブレッドボード(汎用)
× 1
USB-A-ミニUSBケーブル
× 1
触覚スイッチ、上部作動
× 1
男性-ヘッダー36位置1行-長さ(0.1 ")
× 1

必要なツールとマシン

>
はんだごて(汎用)

アプリとオンラインサービス

>
Arduino IDE

このプロジェクトについて

arduinoプロジェクトを構築するのは私の最初の試みでした。オーディオプロジェクトについては何でも興味があります。 ShajeebのAudioVisualizerを見つけて、ディスプレイのスケールを変えてみました。対数の一種ですが、Excelでいくつかの(対数/指数)テーブルを作成し、プロジェクトのコードにデータマッピングを手動で実装します。

ボタンを追加/変更して表示を変更します:シングルバー(線形スケール表示/ダブルバー-疑似ログ)。

気に入っていただけたら、構築をお楽しみください。

コード

  • 32_Band_LED_Spectrum_Analyzer-009.ino
32_Band_LED_Spectrum_Analyzer-009.ino Arduino
私のカスタマイズパーツコード(コメントでマークされたデータの再マッピング)で、ニーズに合わせて自由に変更/カスタマイズしてください。
 //(c)2019 Shajeeb TM // HAZI TECH /のChristianSuryantoによる変更コード/ ChristianSuryantoによる更新//#include  #include  #include  #include  #define HARDWARE_TYPE MD_MAX72XX ::FC16_HW // MD_MAX72xxとなるように表示タイプを設定ライブラリは適切にツリー化します#defineCLK_PIN13 // displayと通信するためのクロックピン#defineDATA_PIN 11 // displayと通信するためのデータピン#defineCS_PIN 10 // display#defineと通信するための制御ピンSAMPLES 64 //電源である必要がありますof 2#define MAX_DEVICES 4 //表示モジュールの総数#definexres 32 //合計ディスプレイの列数は、<=SAMPLES / 2#define yres 8 //ディスプレイの合計行数#definePREV 0xFF02FD //アドレスはFFA25Dですが、0xが追加されます。これは、arduinoがそれを通知する方法であるためです。 is HEXADECIMAL。#define NEXT 0xFFC23D //制御停止コード#definePWR 0xFFA25D //制御Powerintaudio_response =35; // 10〜80の値を入力します。数値が小さいほど、音声応答が高くなりますdouble vReal [SAMPLES]; // double vReal2 [SAMPLES]; double vImag [SAMPLES]; char data_avgs [xres]; int yvalue; int displaycolumn、displayvalue; int Peaks [xres]; const int buttonPin =6; //プッシュボタンのピニント状態の数=HIGH; //入力pinintからの現在の読み取りpreviousState =LOW; //入力pinintdisplaymodeからの前回の読み取り; unsigned long lastDebounceTime =0; //出力ピンが最後に切り替えられたときdunsignedlong debounceDelay =50; //デバウンス時間;出力がちらつく場合は増加しますintMY_ARRAY [] ={0、128、192、224、240、248、252、254、255}; //デフォルト=標準パターン// intMY_MODE_1 [] ={0、128、192、224、240、248、252、254、255}; //標準パターン// intMY_MODE_2 [] ={0、128、64、32、16、8、4、2、1}; //ピークパターンのみ// intMY_MODE_3 [] ={0、128、192、160、144、136、132、130、129}; //ピーク+ボトムポイントのみ// intMY_MODE_4 [] ={0、128、192、160、208、232、244、250、253}; //上部に1つのギャップ、3番目のライト以降bool EQ_ON =true; // falseに設定してeqbyteを無効にします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); // objectarduinoFFTを表示しますFFT =arduinoFFT(); // FFTオブジェクトvoidsetup(){EEPROM.update(1,1); //(メモリアドレス、値)、これを初めて実行displaymode =EEPROM.read(1); // displaymode =1; ADCSRA =0b11100101; // ADCをフリーランニングモードに設定し、プリスカラーを32(0xe5)に設定しますADMUX =0b00000000; //ピンA0と外部電圧リファレンスを使用pinMode(buttonPin、INPUT); mx.begin(); //表示を初期化しますmx.control(MD_MAX72XX ::INTENSITY、0); // LED強度delay(50);を設定します//基準電圧が安定するのを待ちます} void loop(){// ++サンプリングintnumData;ダブルrSum; for(int i =0; i  Peaks [i])peaks [i] =yvalue;の場合、1つの光で減衰します。 yvalue =ピーク[i]; displayvalue =MY_ARRAY [yvalue];スイッチ(displaymode){ケース1:{displaycolumn =31-i; mx.setColumn(displaycolumn、displayvalue); //左から右へ} break;ケース2:{displaycolumn =31-(3 * i); mx.setColumn(displaycolumn-1、displayvalue); //左から右へmx.setColumn(displaycolumn、displayvalue); //左から右へ} break; }} //-測定値に従って表示に送信displayModeChange(); //ボタンが押されて表示モードが変更されたかどうかを確認します} void displayModeChange(){int reading =digitalRead(buttonPin); if(reading ==HIGH &&previousState ==LOW &&millis()-lastDebounceTime> debounceDelay)//押されたときにのみ機能する{switch(displaymode){case 1://モード1から2に移動displaymode =2; mx.clear(); delay(200); EEPROM.update(1,2);壊す;ケース2://モード2から3に移動displaymode =1; mx.clear(); delay(200); EEPROM.update(1,1);壊す; } lastDebounceTime =millis(); } previousState =reading;} 

回路図


製造プロセス

  1. 喉の渇き警報プラント警報
  2. イタリア語の単語時計
  3. 4x3キーパッドのピンは3つだけ
  4. SigfoxkWhメーター
  5. Bluetooth温度モニター
  6. DIYシンプルオートレンジ静電容量計(10pF-10000microF)
  7. ジェスチャー制御ロック
  8. コンパニオンIC
  9. USBMIDIアダプター
  10. Arduino用の絶縁アナログ入力
  11. 反応時間を測定する