Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

32 (Linier) / 11 (Pseudo Log)

Composants et fournitures

Arduino Nano R3
× 1
Résistance 10k ohm
× 1
Résistance 100k ohm
× 2
Résistance 4.75k ohm
× 3
Câbles de raccordement (générique)
× 1
Planche à pain (générique)
× 1
Câble USB-A vers Mini-USB
× 1
Commutateur tactile, actionné par le haut
× 1
Male-Header 36 Position 1 Row - Long (0,1")
× 1

Outils et machines nécessaires

Fer à souder (générique)

Applications et services en ligne

Arduino IDE

À propos de ce projet

C'était ma première tentative de construction d'un projet arduino. Tout ce qui concerne les projets audio m'intéresse. J'ai trouvé l'Audio Visualizer de Shajeeb, j'ai essayé de rendre l'échelle sur l'écran différente. Un peu logarithmique, mais je fais juste quelques tableaux (Log/exponentiels) sous Excel, et implémente le mappage des données manuellement dans le code du projet.

Ajout/modification du bouton pour changer l'affichage :simple barre (affichage échelle linéaire / double barre - pseudo log).

J'espère que vous l'aimez, profitez de la construction.

Code

  • 32_Band_LED_Spectrum_Analyzer-009.ino
32_Band_LED_Spectrum_Analyzer-009.inoArduino
N'hésitez pas à modifier/personnaliser selon vos besoins, sur mon code de pièce de personnalisation (données de remappage, marquées d'un commentaire).
// Code modifié par Christian Suryanto, à partir de (c) 2019 Shajeeb TM// HAZI TECH/ / Mis à jour par Christian Suryanto// #include #include #include #include #define HARDWARE_TYPE MD_MAX72XX::FC16_HW // Définir le type d'affichage de sorte que MD_MAX72xx la bibliothèque l'arbore correctement#define CLK_PIN 13 // Broche d'horloge pour communiquer avec l'affichage#define DATA_PIN 11 // Broche de données pour communiquer avec l'affichage#define CS_PIN 10 // Broche de contrôle pour communiquer avec l'affichage#define SAMPLES 64 // Doit être une alimentation of 2#define MAX_DEVICES 4 // Nombre total de modules d'affichage#define xres 32 // Nombre total de colonnes dans l'affichage, doit être <=SAMPLES/2#define yres 8 // Nombre total de lignes dans l'affichage#define PREV 0xFF02FD // l'adresse est FFA25D mais 0x est ajouté car c'est ainsi que l'arduino est informé qu'il s'agit de HEXADECIMAL.#define NEXT 0xFFC23D // contrôle le code d'arrêt#define PWR 0xFFA25D // contrôle Powerint audio_response =35; // mettre une valeur entre 10 et 80. Plus le nombre est petit, plus la réponse audio est élevéedouble vReal[SAMPLES];//double vReal2[SAMPLES];double vImag[SAMPLES];char data_avgs[xres];int yvalue;int displaycolumn , displayvalue;int peaks[xres];const int buttonPin =6; // le numéro du pinint du bouton poussoir state =HIGH; // la lecture actuelle du pinint d'entrée previousState =LOW; // la lecture précédente du pinint displaymode d'entrée ; non signé long lastDebounceTime =0 ; // la dernière fois que la broche de sortie a été basculée unsigned long debounceDelay =50; // le temps de rebond ; augmenter si la sortie scintilleint MY_ARRAY[]={0, 128, 192, 224, 240, 248, 252, 254, 255} ; // par défaut =modèle standard//int MY_MODE_1[]={0, 128, 192, 224, 240, 248, 252, 254, 255} ; // modèle standard//int MY_MODE_2[]={0, 128, 64, 32, 16, 8, 4, 2, 1} ; // uniquement le motif de pic//int MY_MODE_3[]={0, 128, 192, 160, 144, 136, 132, 130, 129} ; // uniquement pic + point bas//int MY_MODE_4[]={0, 128, 192, 160, 208, 232, 244, 250, 253} ; // un écart en haut , 3ème lumière en avant bool EQ_ON =true; // défini sur false pour désactiver 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 };octet eq2[11] ={40, 70, 75, 110, 110, 140, 145, 220, 220, 230, 250};MD_MAX72XX mx =MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); // afficher objectarduinoFFT FFT =arduinoFFT(); // FFT objet void setup() { EEPROM.update(1,1); //(adresse mémoire, valeur), LANCEZ CELA POUR LA PREMIÈRE FOIS displaymode =EEPROM.read(1); //mode d'affichage =1; ADCSRA =0b11100101 ; // définit l'ADC en mode d'exécution libre et définit le pré-scalaire sur 32 (0xe5) ADMUX =0b00000000 ; // utilise la broche A0 et la référence de tension externe pinMode (buttonPin, INPUT); mx.begin(); // initialise l'affichage mx.control(MD_MAX72XX::INTENSITY, 0); // définit le délai d'intensité de la LED (50); // attendre que la tension de référence se stabilise} void loop() { // ++ Sampling int numData; double rSomme ; for(int i=0; i peaks[i]) peaks[i] =yvalue; valeur y =pics[i] ; displayvalue=MY_ARRAY[yvalue] ; switch (displaymode) { cas 1 :{ displaycolumn=31-i; mx.setColumn(displaycolumn, displayvalue); // de gauche à droite } break; cas 2 :{ colonne d'affichage=31-(3*i); mx.setColumn(displaycolumn-1, displayvalue); // pour de gauche à droite mx.setColumn(displaycolumn, displayvalue); // de gauche à droite } break; } } // -- envoyer à l'affichage en fonction de la valeur mesurée displayModeChange (); // vérifie si le bouton est enfoncé pour changer le mode d'affichage} void displayModeChange() { int reading =digitalRead(buttonPin); if (reading ==HIGH &&previousState ==LOW &&millis() - lastDebounceTime> debounceDelay) // ne fonctionne que lorsque vous appuyez sur { switch (displaymode) { case 1 :// passer du mode 1 au 2 displaymode =2; mx.clear(); retard (200); EEPROM.update(1,2) ; Pause; cas 2 :// passer du mode 2 au 3 displaymode =1; mx.clear(); retard (200); EEPROM.update(1,1) ; Pause; } lastDebounceTime =millis(); } état précédent =lecture ;}

Schémas


Processus de fabrication

  1. Alarme de soif d'usine
  2. Horloge de mots italienne
  3. Seulement trois broches pour un clavier 4x3
  4. Compteur kWh Sigfox
  5. Moniteur de température Bluetooth
  6. Capacimètre bricolage simple à plage automatique (10pF-10000microF)
  7. Serrure à commande gestuelle
  8. Une entrée analogique isolée pour Arduino
  9. Mesurez votre temps de réaction