Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //**************************************************************************************************************************************************************************
- //************************************ Vu-Mètre Entrées Audio Stéréo / Entrée Audio Microphone V2.0 64x32 RGB Matrix - Carte Mega (com15) **********************************
- //**************************************************************************************************************************************************************************
- #include <Adafruit_GFX.h> // Librairie pour la Gestion Graphique
- #include <RGBmatrixPanel.h> // Librairie pour la Gestion Graphique Spécifique à la Matrice Led RGB 64x32
- #define audioInLeft A6 // Broche entrée audio casque gauche
- #define audioInRight A7 // Broche entrée audio casque doite
- #define BrocheBPMode 5 // Broche du bouton poussoir Mode
- #define BrochePotarNiveau A8 // Broche du curseur du potentiomètre niveau
- #define BrocheMicrophone A9 // Broche de l'entrée micophone
- #define BrocheBuzzer 4 // Broche du Buzzer 5v
- #define BrocheLedVerteModeMicrophone 6 // Broche de la led verte du mode microphone
- #define BrocheBPModeMicro 7 // Broche du bouton poussoir pour le Mode microphone ou entrée audio
- const int OE = 9; // Broches de la Matrice Led RGB 64x32
- const int LAT = 10;
- const int CLK = 11;
- const int A = A0;
- const int B = A1;
- const int C = A2;
- const int D = A3;
- int val = 0; // Valeur lue sur les entrées audio casque en mode entrées audio
- int valEntreeMax = 0; // Valeur étalonnée de la lecture du potentiomètre niveau en mode entrées audio (0 à 255)
- int LastvalEntreeMax = -1; // Dernière valeur étalonnée de la lecture du potentiomètre niveau (-1, 0 à 255)
- int LastvalEntreeMax1 = -1; // Dernière valeur 1 étalonnée de la lecture du potentiomètre niveau (-1, 0 à 255)
- int LastvalEntreeMax2 = -1; // Dernière valeur 2 étalonnée de la lecture du potentiomètre niveau (-1, 0 à 255)
- int valEntreeMax1 = 0; // Valeur étalonnée de la lecture du potentiomètre niveau en mode microphone (0 à 255)
- int LastvalEntreeMax11 = -1; // Dernière valeur 1 étalonnée de la lecture du potentiomètre niveau (-1, 0 à 255)
- int LastvalEntreeMax12 = -1; // Dernière valeur 2 étalonnée de la lecture du potentiomètre niveau (-1, 0 à 255)
- int ModeCourant = 0; // Variable contenant le mode courant
- int lastModeCourant = -1; // Variable contenant le dernier mode courant
- boolean LastetatBPMode = HIGH; // Dernier état courant de l'entrée du bouton poussoir BPMode
- boolean etatBPMode = HIGH; // Etat courant de l'entrée du bouton poussoir BPMode
- int Amplitude [] = {0, 0}; // Tableau d'amplitudes mesurées sur l'entrée audio right et left
- int ylastAmplitude [] = {0, 0}; // Tableau des dernières valeurs du tableau d'amplitudes mesurées sur l'entrée audio right et left
- int yAmplitude [] = {0, 0}; // Tableau des ordonnées courantes d'une bande en fonction de l'amplitude
- int yPic [] = {0, 0}; // Tableau des ordonnées des Pics de chaque bande
- int yHautBande [] = {0, 0}; // Tableau des ordonnées du sommet de chaque bande selon le Mode d'affichage
- unsigned long t1tempoBande [] = {0, 0}; // Tableau des temporisations pour le delai avant la descente de la Bande
- unsigned long t1tempoPic [] = {0, 0}; // Tableau des temporisations pour le delai avant la descente du Pic
- int TableauAmp [] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // Tableau des amplitudes de gauche et de droite pour le mode défilement
- int TableauAmpLeft [] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // Tableau des amplitudes de gauche pour les modes défilement
- int TableauAmpRight [] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // Tableau des amplitudes de droite pour les modes défilement
- int hue = 0; // Variable contenant la couleur suivant le mode sélectionné
- const int sampleWindow = 25; // Sample window width in mS (50 mS = 20Hz)
- unsigned int sample;
- unsigned int peakToPeak = 0; // peak-to-peak level
- boolean ModeMicrophone = 0;
- boolean etatBPModeMicro = HIGH;
- boolean LastetatBPModeMicro = HIGH;
- RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, false, 64); // Crée l'objet "matrix"
- void setup()
- {
- Serial.begin(9600); // Démarre la communication avec la console
- pinMode(BrocheBuzzer, OUTPUT); // Configure les broches en sorties
- pinMode(BrocheLedVerteModeMicrophone, OUTPUT);
- pinMode(audioInLeft, INPUT); // Configure les broches en entrées
- pinMode(audioInRight, INPUT);
- pinMode(BrocheBPMode, INPUT_PULLUP);
- pinMode(BrocheBPModeMicro, INPUT_PULLUP);
- matrix.begin(); // Initialise l'objet "matrix"
- matrix.setTextWrap(false); // Désactive le saut de ligne de la Matrice Led
- matrix.setRotation(0); // Définit l'orientation de la matrice (Origine en bas à gauche)
- matrix.setTextSize(1); // Définit la taille du texte
- matrix.fillScreen(0); // Efface la Matrice Led
- Buzzer(20, 0, 1); // Active le buzzer 20ms
- //**************************************************************************************************************************************************************************
- }
- void loop()
- {
- //**************************************************************************************************************************************************************************
- etatBPModeMicro = digitalRead(BrocheBPModeMicro); // ******************************************** // Lit le bouton poussoir "BPModeMicro"
- if (LastetatBPModeMicro != etatBPModeMicro) // ************************************************** // Si l'état du bouton poussoir "BPModeMicro" a changé
- {
- if (etatBPModeMicro == LOW && LastetatBPModeMicro == HIGH) // +++++++++++++++++++++++++++++++++ // Si front montant sur le bouton poussoir "BPModeMicro"
- {
- Buzzer(20, 0, 1); // Active le buzzer 20ms
- ModeMicrophone = !ModeMicrophone; // Change le Mode Entrées Audio Stéréo <=> Entrée Microphone
- if (ModeMicrophone) {digitalWrite(BrocheLedVerteModeMicrophone,HIGH);} // Allume la led témoin mode microphone
- else {digitalWrite(BrocheLedVerteModeMicrophone,LOW);}
- LastetatBPModeMicro = etatBPModeMicro; // Mémorise le dernier état de "etatBPModeMicro;"
- }
- else {LastetatBPModeMicro = HIGH;} // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si front descendant sur le bouton poussoir "BPModeMicro"
- }
- //**************************************************************************************************************************************************************************
- if (ModeMicrophone == true) // ****************************************************************** // Si le mode microphone est activé
- {
- unsigned long startMillis = millis(); // Temporisation de lecture de la sortie microphone
- unsigned int signalMax = 0;
- unsigned int signalMin = 1024;
- while (millis() - startMillis < sampleWindow) // ********************************************** // Lecture de la sortie microphone toutes les 50ms
- {
- sample = analogRead(BrocheMicrophone); // Lit l'entrée du micophone
- if (sample < 1024) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Filtre les données erronées
- {
- if (sample > signalMax) // ---------------------------------------------------------------- // Mémorise le niveau haut
- {
- signalMax = sample;
- }
- else if (sample < signalMin) // ----------------------------------------------------------- // Mémorise le niveau bas
- {
- signalMin = sample;
- }
- }
- }
- peakToPeak = signalMax - signalMin; // Effectue max - min = crête à crête amplitude
- //double volts = (peakToPeak * 5.0) / 1024; // Convertit en volts
- //Serial.println(peakToPeak); // Débug
- int NiveauEntree = analogRead(BrochePotarNiveau); // ****************************************** // Lit le potentiomètre de niveau d'entrées
- //Serial.println(NiveauEntree);
- valEntreeMax1 = map(NiveauEntree, 0, 1023, 1000, 0); // Convertit la valeur lue sur le potentiomètre (0 à 1023) en une variable "valEntreeMax" (0 à 255)
- // Emet un bip au passage du potentiomètre à 0 (à gauche) et à 255 (à droite) et à 150 (par défaut)
- if (valEntreeMax1 == 0 && LastvalEntreeMax11 != valEntreeMax1) {Buzzer(5, 0, 1); LastvalEntreeMax11 = valEntreeMax1;}
- else if (valEntreeMax1 > 5) {LastvalEntreeMax11 = -1;}
- if (valEntreeMax1 == 1000 && LastvalEntreeMax12 != valEntreeMax1) {Buzzer(5, 0, 1); LastvalEntreeMax12 = valEntreeMax1;}
- else if (valEntreeMax1 < 995) {LastvalEntreeMax12 = -1;}
- if (valEntreeMax1 == 500 && LastvalEntreeMax1 != valEntreeMax1) {Buzzer(5, 0, 1); LastvalEntreeMax1 = valEntreeMax1;}
- else if (valEntreeMax1 < 495 || valEntreeMax1 > 505) {LastvalEntreeMax1 = -1;}
- //Serial.print(LastvalEntreeMax1); Serial.print(' '); Serial.println(valEntreeMax1); // Débug
- }
- //**************************************************************************************************************************************************************************
- else if (ModeMicrophone == false) // ************************************************************ // Si le mode entrées audio stéréo est activé
- {
- int NiveauEntree = analogRead(BrochePotarNiveau); // ++++++++++++++++++++++++++++++++++++++++++ // Lit le potentiomètre de niveau d'entrées
- //Serial.println(NiveauEntree);
- valEntreeMax = map(NiveauEntree, 0, 1023, 255, 0); // Convertit la valeur lue sur le potentiomètre (0 à 1023) en une variable "valEntreeMax" (0 à 255)
- // Emet un bip au passage du potentiomètre à 0 (à gauche) et à 255 (à droite) et à 150 (par défaut)
- if (valEntreeMax == 0 && LastvalEntreeMax1 != valEntreeMax) {Buzzer(5, 0, 1); LastvalEntreeMax1 = valEntreeMax;}
- else if (valEntreeMax > 5) {LastvalEntreeMax1 = -1;}
- if (valEntreeMax == 255 && LastvalEntreeMax2 != valEntreeMax) {Buzzer(5, 0, 1); LastvalEntreeMax2 = valEntreeMax;}
- else if (valEntreeMax < 254) {LastvalEntreeMax2 = -1;}
- if (valEntreeMax == 150 && LastvalEntreeMax != valEntreeMax) {Buzzer(5, 0, 1); LastvalEntreeMax = valEntreeMax;}
- else if (valEntreeMax < 149 || valEntreeMax > 151) {LastvalEntreeMax = -1;}
- //Serial.print(LastvalEntreeMax); Serial.print(' '); Serial.println(valEntreeMax); // Débug
- }
- //**************************************************************************************************************************************************************************
- etatBPMode = digitalRead(BrocheBPMode); // Lit l'état de BPMode
- if (etatBPMode != LastetatBPMode) // ************************************************************ // Si l'état de "BPMode" a changé
- {
- if (etatBPMode == LOW && LastetatBPMode == HIGH) // +++++++++++++++++++++++++++++++++++++++++++ // Si pression sur BPMode
- {
- ModeCourant++; // Change de mode
- if (ModeCourant > 14) {ModeCourant = 0;} // Borne le mode
- LastetatBPMode = etatBPMode; // Mémorise le dernier mode
- }
- else {LastetatBPMode = HIGH;} // Mémorise le dernier état du bouton poussoir "BPMode"
- }
- //**************************************************************************************************************************************************************************
- if (ModeCourant == 0) // ************************************************************************ // Mode 0 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionAfficheFond();
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- }
- FonctionMode0(); // Appelle la fonction d'affichage du mode 0
- }
- else if (ModeCourant == 1) // ******************************************************************* // Mode 1 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionAfficheFond();
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- }
- FonctionMode1(); // Appelle la fonction d'affichage du mode 1
- }
- else if (ModeCourant == 2) // ******************************************************************* // Mode 2 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionAfficheFond();
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- }
- FonctionMode2(); // Appelle la fonction d'affichage du mode 2
- }
- else if (ModeCourant == 3) // ******************************************************************* // Mode 3 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionAfficheFond();
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- }
- FonctionMode3(); // Appelle la fonction d'affichage du mode 3
- }
- else if (ModeCourant == 4) // ******************************************************************* // Mode 4 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionAfficheFond();
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- }
- FonctionMode4(); // Appelle la fonction d'affichage du mode 4
- }
- else if (ModeCourant == 5) // ******************************************************************* // Mode 5 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionAfficheFond();
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- }
- FonctionMode5(); // Appelle la fonction d'affichage du mode 5
- }
- else if (ModeCourant == 6) // ******************************************************************* // Mode 6 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionAfficheFond();
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- for (int y = 0; y <= 48; y++) // Affiche le fond vert, jaune et rouge des bandes
- {
- if (y <= 24)
- {
- matrix.drawFastVLine(y, 8, 4, matrix.Color333(0, 7, 0));
- matrix.drawFastVLine(y, 21, 4, matrix.Color333(0, 7, 0));
- }
- else if (y <= 38)
- {
- matrix.drawFastVLine(y, 8, 4, matrix.Color333(7, 7, 0));
- matrix.drawFastVLine(y, 21, 4, matrix.Color333(7, 7, 0));
- }
- else
- {
- matrix.drawFastVLine(y, 8, 4, matrix.Color333(7, 0, 0));
- matrix.drawFastVLine(y, 21, 4, matrix.Color333(7, 0, 0));
- }
- }
- }
- FonctionMode6(); // Appelle la fonction d'affichage du mode 6
- }
- else if (ModeCourant == 7) // ******************************************************************* // Mode 7 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- }
- FonctionMode7(); // Appelle la fonction d'affichage du mode 7
- }
- else if (ModeCourant == 8) // ******************************************************************* // Mode 8 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- }
- FonctionMode8(); // Appelle la fonction d'affichage du mode 8
- }
- else if (ModeCourant == 9) // ******************************************************************* // Mode 9 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- }
- FonctionMode9(); // Appelle la fonction d'affichage du mode 9
- }
- else if (ModeCourant == 10) // ****************************************************************** // Mode 10 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- }
- FonctionMode10(); // Appelle la fonction d'affichage du mode 10
- }
- else if (ModeCourant == 11) // ****************************************************************** // Mode 11 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- }
- FonctionMode11(); // Appelle la fonction d'affichage du mode 11
- }
- else if (ModeCourant == 12) // ****************************************************************** // Mode 12 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- }
- FonctionMode12(); // Appelle la fonction d'affichage du mode 12
- }
- else if (ModeCourant == 13) // ****************************************************************** // Mode 13 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- }
- FonctionMode13(); // Appelle la fonction d'affichage du mode 13
- }
- else if (ModeCourant == 14) // ****************************************************************** // Mode 14 sélectionné
- {
- if (lastModeCourant != ModeCourant) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode courant à changé
- {
- matrix.fillScreen(0); // Efface la matrice led
- FonctionInitVariables(); // Appelle la fonction d'initialisation des variables
- lastModeCourant = ModeCourant; // Mémorise le dernier mode courant
- }
- FonctionMode14(); // Appelle la fonction d'affichage du mode 14
- }
- //**************************************************************************************************************************************************************************
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 0 - Bandes violettes 2 pixels de largeur *****************************************************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode0 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInLeft); // Lit l'entrée audio de gauche (Sortie casque ampli)
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- val = analogRead(audioInRight); // Lit l'entrée audio de droite (Sortie casque ampli)
- yAmplitude[1] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- for (int col = 0; col <= 1; col++)
- {
- if (yAmplitude[col] > 48) {yAmplitude[col] = 48;} // Borne l'abscisse verticale sur la matrice led
- if (yAmplitude[col] <= yPic[col] && millis() - t1tempoBande[col] > 20 && t1tempoBande[col] > 0) // Gestion de l'effacement descendant temporisé de la Bande ************
- {
- matrix.drawPixel(yPic[col], (8+col*13)+1, 0); matrix.drawPixel(yPic[col], (8+col*13)+2, 0); // Efface la led la plus haute de la bande
- yPic[col] = yPic[col] - 1; // Incrémente l'ordonnée de la led la plus haute de la bande
- if (yPic[col] < 0) {yPic[col] = 0; t1tempoBande[col] = 0;} // Réinitialisation de la temporisation de la descente de la bande
- else {t1tempoBande[col] = millis();} // Redémarre la temporisation de la descente de la bande
- }
- if (yAmplitude[col] > yPic[col] || (yAmplitude[col] == 0 && yPic[col] == 0)) // Gestion de l'affichage montant des Bandes **********************************************
- {
- for (int y = yPic[col]; y <= yAmplitude[col]; y++) // Affiche les bandes en violet à partir de la dernière position
- {
- matrix.drawPixel(y, (8+col*13)+1, matrix.Color333(7, 0, 7)); matrix.drawPixel(y, (8+col*13)+2, matrix.Color333(7, 0, 7));
- }
- yPic[col] = yAmplitude[col]; // Sauvegarde l'ordonnée du Pic de la bande courante
- t1tempoBande[col] = millis(); // Démarre la temporisation de la descente de la bande
- }
- }
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 1 - Bandes vertes jaunes rouge 4 pixels de largeur *******************************************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode1 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInLeft); // Lit l'entrée audio de gauche (Sortie casque ampli)
- yAmplitude[0] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- val = analogRead(audioInRight); // Lit l'entrée audio de droite (Sortie casque ampli)
- yAmplitude[1] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- for (int col = 0; col <= 1; col++)
- {
- if (yAmplitude[col] > 48) {yAmplitude[col] = 48;} // Borne l'abscisse verticale sur la matrice led
- if (yAmplitude[col] <= yPic[col] && millis() - t1tempoBande[col] > 20 && t1tempoBande[col] > 0) // Gestion de l'effacement descendant temporisé des Bandes *************
- {
- matrix.drawPixel(yPic[col], (8+col*13)+1, 0); matrix.drawPixel(yPic[col], (8+col*13)+2, 0); // Efface les led les plus hautes de la bande
- matrix.drawPixel(yPic[col], (8+col*13), 0); matrix.drawPixel(yPic[col], (8+col*13)+3, 0); // Efface les led les plus hautes de la bande
- yPic[col] = yPic[col] - 1; // Incrémente l'ordonnée de la led la plus haute de la bande
- if (yPic[col] < 0) {yPic[col] = 0; t1tempoBande[col] = 0;} // Réinitialisation de la temporisation de la descente de la bande
- else {t1tempoBande[col] = millis();} // Redémarre la temporisation de la descente de la bande
- }
- if (yAmplitude[col] > yPic[col] || (yAmplitude[col] == 0 && yPic[col] == 0)) // Gestion de l'affichage montant des Bandes **********************************************
- {
- for (int y = yPic[col]; y <= yAmplitude[col]; y++) // Affiche les bandes en vert, jaune et rouge à partir de la dernière position
- {
- if (y <= 24)
- {
- matrix.drawFastVLine(y, (8+col*13), 4, matrix.Color333(0, 7, 0));
- }
- else if (y <= 38)
- {
- matrix.drawFastVLine(y, (8+col*13), 4, matrix.Color333(7, 7, 0));
- }
- else
- {
- matrix.drawFastVLine(y, (8+col*13), 4, matrix.Color333(7, 0, 0));
- }
- }
- yPic[col] = yAmplitude[col]; // Sauvegarde l'ordonnée du Pic de la bande courante
- t1tempoBande[col] = millis(); // Démarre la temporisation de la descente de la bande
- }
- }
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 2 - Bandes oranges 2 pixels de largeur *******************************************************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode2 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInLeft); // Lit l'entrée audio de gauche (Sortie casque ampli)
- yAmplitude[0] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- val = analogRead(audioInRight); // Lit l'entrée audio de droite (Sortie casque ampli)
- yAmplitude[1] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- for (int col = 0; col <= 1; col++)
- {
- if (yAmplitude[col] > 48) {yAmplitude[col] = 48;} // Borne l'abscisse verticale sur la matrice led
- if (yAmplitude[col] > ylastAmplitude[col]) // Gestion de l'affichage montant de la Bande *******************************************************************************
- {
- if (ylastAmplitude[col] < 0) {ylastAmplitude[col] = 0;} // Réinitialise l'ordonnée du Pic de la bande courante
- for (int y = ylastAmplitude[col]; y <= yAmplitude[col]; y++) // Affiche la bande en orange
- {
- matrix.drawFastVLine(y, (8+col*13)+1, 2, matrix.ColorHSV(203, 255, 200, true));
- }
- ylastAmplitude[col] = yAmplitude[col]; // Sauvegarde l'ordonnée du Pic de la bande courante
- }
- if (yAmplitude[col] < ylastAmplitude[col]) // Gestion de l'affichage descendant de la Bande ****************************************************************************
- {
- for (int y = ylastAmplitude[col]; y > yAmplitude[col]; y--) // Efface la bande
- {
- matrix.drawFastVLine(y, (8+col*13)+1, 2, 0);
- }
- ylastAmplitude[col] = yAmplitude[col]; // Sauvegarde l'ordonnée du Pic de la bande courante
- }
- }
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 3 - Bandes double traits verts et rouges 4 pixels de largeur *********************************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode3 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInLeft); // Lit l'entrée audio de gauche (Sortie casque ampli)
- yAmplitude[0] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- val = analogRead(audioInRight); // Lit l'entrée audio de droite (Sortie casque ampli)
- yAmplitude[1] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- for (int col = 0; col <= 1; col++)
- {
- if (yAmplitude[col] > 48) {yAmplitude[col] = 48;} // Borne l'abscisse verticale sur la matrice led
- if (yAmplitude[col] < yPic[col] && millis() - t1tempoBande[col] > 30 && t1tempoBande[col] > 0) // Gestion de d'affichage descendant temporisé du Point *****************
- {
- matrix.drawFastVLine(yPic[col], (8+col*13), 4, 0); // Efface le dernier point
- yPic[col] = yPic[col] - 1; // Incrémente l'ordonnée du dernier point
- if (yPic[col] < 0) {yPic[col] = 0; t1tempoBande[col] = 0; matrix.drawFastVLine(0, (8+col*13), 4, matrix.Color333(0, 0, 0));} // Réinitialise l'ordonnée du point et la temporisation
- else // Affiche le point courant et redémarre la temporisation
- {
- if (yPic[col] <= 24)
- {
- matrix.drawFastVLine(yPic[col], (8+col*13), 4, matrix.Color333(0, 7, 0));
- }
- else if (yPic[col] <= 38)
- {
- matrix.drawFastVLine(yPic[col], (8+col*13), 4, matrix.Color333(7, 7, 0));
- //matrix.drawFastVLine(yPic[col], 21, 4, matrix.Color333(7, 7, 0));
- }
- else
- {
- matrix.drawFastVLine(yPic[col], (8+col*13), 4, matrix.Color333(7, 0, 0));
- }
- t1tempoBande[col] = millis();
- }
- }
- if (yAmplitude[col] > yPic[col]) // Gestion de l'affichage montant du Point ********************************************************************************************
- {
- matrix.drawFastVLine(yPic[col], (8+col*13), 4, 0); // Efface le dernier point // Affiche le point courant
- matrix.drawFastVLine(yAmplitude[col], (8+col*13), 4, matrix.Color333(7, 0, 0));
- yPic[col] = yAmplitude[col]; // Sauvegarde l'ordonnée du point courant
- t1tempoBande[col] = millis(); // Démarre la temporisation de la descente du point
- }
- }
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 4 - Bandes vertes 2 pixels de largeur + pic en rouge *****************************************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode4 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInLeft); // Lit l'entrée audio de gauche (Sortie casque ampli)
- yAmplitude[0] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- val = analogRead(audioInRight); // Lit l'entrée audio de droite (Sortie casque ampli)
- yAmplitude[1] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- for (int col = 0; col <= 1; col++)
- {
- if (yAmplitude[col] > 48) {yAmplitude[col] = 48;} // Borne l'abscisse verticale sur la matrice led
- if (millis() - t1tempoBande[col] > 20 && t1tempoBande[col] > 0) // Temporisation de la descente de la Bande ************************************************************
- {
- matrix.drawPixel(yHautBande[col], (8+col*13)+1, 0); // Efface la led la plus haute de la bande
- matrix.drawPixel(yHautBande[col], (8+col*13)+2, 0); // Efface la led la plus haute de la bande
- yHautBande[col] = yHautBande[col] - 1; // Incrémente l'ordonnée de la led la plus haute de la bande
- if (yHautBande[col] < 0) {yHautBande[col] = 0; t1tempoBande[col] = 0;} // Réinitialisation de la temporisation de la descente de la bande
- else {t1tempoBande[col] = millis();} // Redémarre la temporisation de la descente de la bande
- }
- if (millis() - t1tempoPic[col] > 250 && t1tempoPic[col] > 0) // Temporisation avant l'affichage de la descente du Pic **************************************************
- {
- matrix.drawPixel(yPic[col], (8+col*13)+1, 0); // Efface l'ancienne position du Pic
- matrix.drawPixel(yPic[col], (8+col*13)+2, 0); // Efface l'ancienne position du Pic
- yPic[col] = yPic[col] - 1; // Incrémente l'ordonnée du Pic
- if (yPic[col] <= 0) {yPic[col] = 0; t1tempoPic[col] = 0;} // Désactive la gestion d'affichage du Pic
- else // Affiche la descente du Pic en rouge
- {
- if (yPic[col] > yHautBande[col])
- {
- matrix.drawPixel(yPic[col], (8+col*13)+1, matrix.Color333(7, 0, 0));
- matrix.drawPixel(yPic[col], (8+col*13)+2, matrix.Color333(7, 0, 0));
- delay(25);
- }
- else {t1tempoPic[col] = 0;}
- }
- }
- if (yAmplitude[col] > yHautBande[col]) // Gestion de l'affichage montant de la Bande ***********************************************************************************
- {
- if (yAmplitude[col] < yPic[col]) // Affiche la bande uniquement
- {
- for (int y = yHautBande[col]; y < yAmplitude[col]; y++) // Affiche la bande en vert
- {
- matrix.drawPixel(y, (8+col*13)+1, matrix.Color333(0, 7, 0));
- matrix.drawPixel(y, (8+col*13)+2, matrix.Color333(0, 7, 0));
- }
- yHautBande[col] = yAmplitude[col] - 1; // Sauvegarde l'ordonnée de la bande courante
- t1tempoBande[col] = millis(); // Démarre la temporisation de la descente de la bande
- }
- else // Affiche la bande et le Pic rouge
- {
- for (int y = yHautBande[col]; y < yAmplitude[col]; y++) // Affiche la bande en vert
- {
- matrix.drawPixel(y, (8+col*13)+1, matrix.Color333(0, 7, 0));
- matrix.drawPixel(y, (8+col*13)+2, matrix.Color333(0, 7, 0));
- }
- matrix.drawPixel(yAmplitude[col], (8+col*13)+1, matrix.Color333(7, 0, 0)); // Affiche le Pic en rouge
- matrix.drawPixel(yAmplitude[col], (8+col*13)+2, matrix.Color333(7, 0, 0));
- yHautBande[col] = yAmplitude[col] - 1; // Sauvegarde l'ordonnée de la bande courante
- t1tempoBande[col] = millis(); // Démarre la temporisation de la descente de la bande
- yPic[col] = yAmplitude[col]; // Sauvegarde l'ordonnée du Pic de la bande courante
- t1tempoPic[col] = millis(); // Démarre la temporisation de la descente du Pic
- }
- }
- }
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 5 - Bandes blanches 4 pixels de largeur + pic en rouge ***************************************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode5 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInLeft); // Lit l'entrée audio de gauche (Sortie casque ampli)
- yAmplitude[0] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- val = analogRead(audioInRight); // Lit l'entrée audio de droite (Sortie casque ampli)
- yAmplitude[1] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- for (int col = 0; col <= 1; col++)
- {
- if (yAmplitude[col] > 48) {yAmplitude[col] = 48;} // Borne l'abscisse verticale sur la matrice led
- if (millis() - t1tempoBande[col] > 20 && t1tempoBande[col] > 0) // Temporisation de la descente de la Bande ************************************************************
- {
- matrix.drawPixel(yHautBande[col], (8+col*13), 0); // Efface la led la plus haute de la bande
- matrix.drawPixel(yHautBande[col], (8+col*13)+1, 0); // Efface la led la plus haute de la bande
- matrix.drawPixel(yHautBande[col], (8+col*13)+2, 0); // Efface la led la plus haute de la bande
- matrix.drawPixel(yHautBande[col], (8+col*13)+3, 0); // Efface la led la plus haute de la bande
- yHautBande[col] = yHautBande[col] - 1; // Incrémente l'ordonnée de la led la plus haute de la bande
- if (yHautBande[col] < 0) {yHautBande[col] = 0; t1tempoBande[col] = 0;} // Réinitialisation de la temporisation de la descente de la bande
- else {t1tempoBande[col] = millis();} // Redémarre la temporisation de la descente de la bande
- }
- if (millis() - t1tempoPic[col] > 250 && t1tempoPic[col] > 0) // Temporisation avant l'affichage de la descente du Pic **************************************************
- {
- matrix.drawPixel(yPic[col], (8+col*13), 0); // Efface l'ancienne position du Pic
- matrix.drawPixel(yPic[col], (8+col*13)+1, 0); // Efface l'ancienne position du Pic
- matrix.drawPixel(yPic[col], (8+col*13)+2, 0); // Efface l'ancienne position du Pic
- matrix.drawPixel(yPic[col], (8+col*13)+3, 0); // Efface l'ancienne position du Pic
- yPic[col] = yPic[col] - 1; // Incrémente l'ordonnée du Pic
- if (yPic[col] <= 0) {yPic[col] = 0; t1tempoPic[col] = 0;} // Désactive la gestion d'affichage du Pic
- else // Affiche la descente du Pic en rouge
- {
- if (yPic[col] > yHautBande[col])
- {
- matrix.drawPixel(yPic[col], (8+col*13), matrix.Color333(7, 0, 0));
- matrix.drawPixel(yPic[col], (8+col*13)+1, matrix.Color333(7, 0, 0));
- matrix.drawPixel(yPic[col], (8+col*13)+2, matrix.Color333(7, 0, 0));
- matrix.drawPixel(yPic[col], (8+col*13)+3, matrix.Color333(7, 0, 0));
- delay(30);
- }
- else {t1tempoPic[col] = 0;}
- }
- }
- if (yAmplitude[col] > yHautBande[col]) // Gestion de l'affichage montant de la Bande ***********************************************************************************
- {
- if (yAmplitude[col] < yPic[col]) // Affiche la bande uniquement
- {
- for (int y = yHautBande[col]; y < yAmplitude[col]; y++) // Affiche la bande en vert
- {
- matrix.drawPixel(y, (8+col*13), matrix.Color333(7, 7, 7));
- matrix.drawPixel(y, (8+col*13)+1, matrix.Color333(7, 7, 7));
- matrix.drawPixel(y, (8+col*13)+2, matrix.Color333(7, 7, 7));
- matrix.drawPixel(y, (8+col*13)+3, matrix.Color333(7, 7, 7));
- }
- yHautBande[col] = yAmplitude[col] - 1; // Sauvegarde l'ordonnée de la bande courante
- t1tempoBande[col] = millis(); // Démarre la temporisation de la descente de la bande
- }
- else // Affiche la bande et le Pic rouge
- {
- for (int y = yHautBande[col]; y < yAmplitude[col]; y++) // Affiche la bande en vert
- {
- matrix.drawPixel(y, (8+col*13), matrix.Color333(7, 7, 7));
- matrix.drawPixel(y, (8+col*13)+1, matrix.Color333(7, 7, 7));
- matrix.drawPixel(y, (8+col*13)+2, matrix.Color333(7, 7, 7));
- matrix.drawPixel(y, (8+col*13)+3, matrix.Color333(7, 7, 7));
- }
- matrix.drawPixel(yAmplitude[col], (8+col*13), matrix.Color333(7, 0, 0)); // Affiche le Pic en rouge
- matrix.drawPixel(yAmplitude[col], (8+col*13)+1, matrix.Color333(7, 0, 0));
- matrix.drawPixel(yAmplitude[col], (8+col*13)+2, matrix.Color333(7, 0, 0));
- matrix.drawPixel(yAmplitude[col], (8+col*13)+3, matrix.Color333(7, 0, 0));
- yHautBande[col] = yAmplitude[col] - 1; // Sauvegarde l'ordonnée de la bande courante
- t1tempoBande[col] = millis(); // Démarre la temporisation de la descente de la bande
- yPic[col] = yAmplitude[col]; // Sauvegarde l'ordonnée du Pic de la bande courante
- t1tempoPic[col] = millis(); // Démarre la temporisation de la descente du Pic
- }
- }
- }
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 6 - Bandes noires 4 pixels de largeur sur fond vert jaune et rouge **************************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode6 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInLeft); // Lit l'entrée audio de gauche (Sortie casque ampli)
- yAmplitude[0] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- val = analogRead(audioInRight); // Lit l'entrée audio de droite (Sortie casque ampli)
- yAmplitude[1] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- for (int col = 0; col <= 1; col++)
- {
- if (yAmplitude[col] > 48) {yAmplitude[col] = 48;} // Borne l'abscisse verticale sur la matrice led
- if (yAmplitude[col] <= yPic[col] && millis() - t1tempoBande[col] > 20 && t1tempoBande[col] > 0) // Gestion de l'effacement descendant temporisé des Bandes **************
- {
- if (yPic[col] <= 24)
- {
- matrix.drawFastVLine(yPic[col], (8+col*13), 4, matrix.Color333(0, 7, 0));
- }
- else if (yPic[col] <= 38)
- {
- matrix.drawFastVLine(yPic[col], (8+col*13), 4, matrix.Color333(7, 7, 0));
- }
- else
- {
- matrix.drawFastVLine(yPic[col], (8+col*13), 4, matrix.Color333(7, 0, 0));
- }
- yPic[col] = yPic[col] - 1; // Incrémente l'ordonnée de la led la plus haute de la bande
- if (yPic[col] < 0) {yPic[col] = 0; t1tempoBande[col] = 0;} // Réinitialisation de la temporisation de la descente de la bande
- else {t1tempoBande[col] = millis();} // Redémarre la temporisation de la descente de la bande
- }
- if (yAmplitude[col] > yPic[col] || (yAmplitude[col] == 0 && yPic[col] == 0)) // Gestion de l'affichage montant des Bandes ***********************************************
- {
- for (int y = yPic[col]; y <= yAmplitude[col]; y++) // Affiche les bandes en noir à partir de la dernière position
- {
- matrix.drawFastVLine(y, (8+col*13), 4, matrix.Color333(0, 0, 0));
- }
- yPic[col] = yAmplitude[col]; // Sauvegarde l'ordonnée du Pic de la bande courante
- t1tempoBande[col] = millis(); // Démarre la temporisation de la descente de la bande
- }
- }
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 7 - Bandes multicolores 1 pixels de largeur + défilement à gauche ****************************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode7 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInLeft); // Lit l'entrée audio de gauche (Sortie casque ampli)
- yAmplitude[0] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- //yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- if (yAmplitude[0] > 48) {yAmplitude[0] = 48;} // Borne l'abscisse verticale sur la matrice led
- for (int col = 15; col >= 1; col--) {TableauAmpLeft[col] = TableauAmpLeft[col-1];} // Décale les amplitudes de gauche dans le tableau "TableauAmpRight[]"
- TableauAmpLeft[0] = yAmplitude[0]; // Mémorise l'amplitude courante de droite dans la première case du tableau "TableauAmpRight[]"
- matrix.drawFastHLine(0, 31, 48, 0);
- matrix.drawFastHLine(0, 31, TableauAmpLeft[0], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 29, 48, 0);
- matrix.drawFastHLine(0, 29, TableauAmpLeft[1], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 27, 48, 0);
- matrix.drawFastHLine(0, 27, TableauAmpLeft[2], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 25, 48, 0);
- matrix.drawFastHLine(0, 25, TableauAmpLeft[3], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 23, 48, 0);
- matrix.drawFastHLine(0, 23, TableauAmpLeft[4], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 21, 48, 0);
- matrix.drawFastHLine(0, 21, TableauAmpLeft[5], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 19, 48, 0);
- matrix.drawFastHLine(0, 19, TableauAmpLeft[6], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 17, 48, 0);
- matrix.drawFastHLine(0, 17, TableauAmpLeft[7], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 15, 48, 0);
- matrix.drawFastHLine(0, 15, TableauAmpLeft[8], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 13, 48, 0);
- matrix.drawFastHLine(0, 13, TableauAmpLeft[9], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 11, 48, 0);
- matrix.drawFastHLine(0, 11, TableauAmpLeft[10], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 9, 48, 0);
- matrix.drawFastHLine(0, 9, TableauAmpLeft[11], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 7, 48, 0);
- matrix.drawFastHLine(0, 7, TableauAmpLeft[12], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 5, 48, 0);
- matrix.drawFastHLine(0, 5, TableauAmpLeft[13], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 3, 48, 0);
- matrix.drawFastHLine(0, 3, TableauAmpLeft[14], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 1, 48, 0);
- matrix.drawFastHLine(0, 1, TableauAmpLeft[15], matrix.ColorHSV(hue, 255, 255, true));
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 8 - Bandes multicolores 1 pixels de largeur + défilement à droite ****************************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode8 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInRight); // Lit l'entrée audio (Sortie casque ampli)
- yAmplitude[1] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- //yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- if (yAmplitude[1] > 48) {yAmplitude[1] = 48;} // Borne l'abscisse verticale sur la matrice led
- for (int col = 15; col >= 1; col--) {TableauAmpRight[col] = TableauAmpRight[col-1];} // Décale les amplitudes de droite dans le tableau "TableauAmpRight[]"
- TableauAmpRight[0] = yAmplitude[1]; // Mémorise l'amplitude courante de droite dans la première case du tableau "TableauAmpRight[]"
- matrix.drawFastHLine(0, 1, 48, 0);
- matrix.drawFastHLine(0, 1, TableauAmpRight[0], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 3, 48, 0);
- matrix.drawFastHLine(0, 3, TableauAmpRight[1], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 5, 48, 0);
- matrix.drawFastHLine(0, 5, TableauAmpRight[2], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 7, 48, 0);
- matrix.drawFastHLine(0, 7, TableauAmpRight[3], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 9, 48, 0);
- matrix.drawFastHLine(0, 9, TableauAmpRight[4], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 11, 48, 0);
- matrix.drawFastHLine(0, 11, TableauAmpRight[5], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 13, 48, 0);
- matrix.drawFastHLine(0, 13, TableauAmpRight[6], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 15, 48, 0);
- matrix.drawFastHLine(0, 15, TableauAmpRight[7], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 17, 48, 0);
- matrix.drawFastHLine(0, 17, TableauAmpRight[8], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 19, 48, 0);
- matrix.drawFastHLine(0, 19, TableauAmpRight[9], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 21, 48, 0);
- matrix.drawFastHLine(0, 21, TableauAmpRight[10], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 23, 48, 0);
- matrix.drawFastHLine(0, 23, TableauAmpRight[11], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 25, 48, 0);
- matrix.drawFastHLine(0, 25, TableauAmpRight[12], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 27, 48, 0);
- matrix.drawFastHLine(0, 27, TableauAmpRight[13], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 29, 48, 0);
- matrix.drawFastHLine(0, 29, TableauAmpRight[14], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 31, 48, 0);
- matrix.drawFastHLine(0, 31, TableauAmpRight[15], matrix.ColorHSV(hue, 255, 255, true));
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 9 - Bandes multicolores 1 pixels de largeur + défilement à gauche et à droite ****************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode9 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInRight); // Lit l'entrée audio (Sortie casque ampli)
- yAmplitude[1] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- val = analogRead(audioInLeft); // Lit l'entrée audio (Sortie casque ampli)
- yAmplitude[0] = map(val,0, valEntreeMax, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- if (yAmplitude[1] > 48) {yAmplitude[1] = 48;} // Borne l'abscisse verticale sur la matrice led
- if (yAmplitude[0] > 48) {yAmplitude[0] = 48;} // Borne l'abscisse verticale sur la matrice led
- for (int col = 15; col >= 8; col--) {TableauAmp[col] = TableauAmp[col-1];}
- TableauAmp[8] = yAmplitude[1];
- for (int col = 8; col >= 1; col--) {TableauAmp[col] = TableauAmp[col-1];}
- TableauAmp[0] = yAmplitude[0];
- matrix.drawFastHLine(0, 16, 48, 0);
- matrix.drawFastHLine(0, 16, TableauAmp[8], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(0, 15, 48, 0);
- matrix.drawFastHLine(0, 15, TableauAmp[0], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 18, 48, 0);
- matrix.drawFastHLine(0, 18, TableauAmp[9], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(0, 13, 48, 0);
- matrix.drawFastHLine(0, 13, TableauAmp[1], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 20, 48, 0);
- matrix.drawFastHLine(0, 20, TableauAmp[10], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(0, 11, 48, 0);
- matrix.drawFastHLine(0, 11, TableauAmp[2], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 22, 48, 0);
- matrix.drawFastHLine(0, 22, TableauAmp[11], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(0, 9, 48, 0);
- matrix.drawFastHLine(0, 9, TableauAmp[3], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 24, 48, 0);
- matrix.drawFastHLine(0, 24, TableauAmp[12], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(0, 7, 48, 0);
- matrix.drawFastHLine(0, 7, TableauAmp[4], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 26, 48, 0);
- matrix.drawFastHLine(0, 26, TableauAmp[13], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(0, 5, 48, 0);
- matrix.drawFastHLine(0, 5, TableauAmp[5], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 28, 48, 0);
- matrix.drawFastHLine(0, 28, TableauAmp[14], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(0, 3, 48, 0);
- matrix.drawFastHLine(0, 3, TableauAmp[6], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(0, 30, 48, 0);
- matrix.drawFastHLine(0, 30, TableauAmp[15], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(0, 1, 48, 0);
- matrix.drawFastHLine(0, 1, TableauAmp[7], matrix.ColorHSV(hue, 255, 255, true));
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 10 - Bandes multicolores 1 pixels de largeur + défilement à droite en haut et en bas *********************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode10 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInRight); // Lit l'entrée audio (Sortie casque ampli)
- yAmplitude[1] = map(val,0, valEntreeMax, 0, 30); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- val = analogRead(audioInLeft); // Lit l'entrée audio (Sortie casque ampli)
- yAmplitude[0] = map(val,0, valEntreeMax, 0, 30); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- if (yAmplitude[1] > 30) {yAmplitude[1] = 30;} // Borne l'abscisse verticale sur la matrice led
- if (yAmplitude[0] > 30) {yAmplitude[0] = 30;} // Borne l'abscisse verticale sur la matrice led
- for (int col = 15; col >= 1; col--) {TableauAmpRight[col] = TableauAmpRight[col-1];} // Décale les amplitudes de droite dans le tableau "TableauAmpRight[]"
- TableauAmpRight[0] = yAmplitude[1]; // Mémorise l'amplitude courante de droite dans la première case du tableau "TableauAmpRight[]"
- for (int col = 15; col >= 1; col--) {TableauAmpLeft[col] = TableauAmpLeft[col-1];} // Décale les amplitudes de gauche dans le tableau "TableauAmpRight[]"
- TableauAmpLeft[0] = yAmplitude[0]; // Mémorise l'amplitude courante de droite dans la première case du tableau "TableauAmpRight[]"
- matrix.drawFastHLine(32, 1, 30, 0); //matrix.Color333(7, 7, 7)
- matrix.drawFastHLine(32, 1, TableauAmpRight[0], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 1, -30, 0);
- matrix.drawFastHLine(31, 1, -TableauAmpLeft[0], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 3, 30, 0);
- matrix.drawFastHLine(32, 3, TableauAmpRight[1], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 3, -30, 0);
- matrix.drawFastHLine(31, 3, -TableauAmpLeft[1], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 5, 30, 0);
- matrix.drawFastHLine(32, 5, TableauAmpRight[2], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 5, -30, 0);
- matrix.drawFastHLine(31, 5, -TableauAmpLeft[2], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 7, 30, 0);
- matrix.drawFastHLine(32, 7, TableauAmpRight[3], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 7, -30, 0);
- matrix.drawFastHLine(31, 7, -TableauAmpLeft[3], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 9, 30, 0);
- matrix.drawFastHLine(32, 9, TableauAmpRight[4], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 9, -30, 0);
- matrix.drawFastHLine(31, 9, -TableauAmpLeft[4], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 11, 30, 0);
- matrix.drawFastHLine(32, 11, TableauAmpRight[5], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 11, -30, 0);
- matrix.drawFastHLine(31, 11, -TableauAmpLeft[5], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 13, 30, 0);
- matrix.drawFastHLine(32, 13, TableauAmpRight[6], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 13, -30, 0);
- matrix.drawFastHLine(31, 13, -TableauAmpLeft[6], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 15, 30, 0);
- matrix.drawFastHLine(32, 15, TableauAmpRight[7], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 15, -30, 0);
- matrix.drawFastHLine(31, 15, -TableauAmpLeft[7], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 17, 30, 0);
- matrix.drawFastHLine(32, 17, TableauAmpRight[8], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 17, -30, 0);
- matrix.drawFastHLine(31, 17, -TableauAmpLeft[8], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 19, 30, 0);
- matrix.drawFastHLine(32, 19, TableauAmpRight[9], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 19, -30, 0);
- matrix.drawFastHLine(31, 19, -TableauAmpLeft[9], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 21, 30, 0);
- matrix.drawFastHLine(32, 21, TableauAmpRight[10], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 21, -30, 0);
- matrix.drawFastHLine(31, 21, -TableauAmpLeft[10], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 23, 30, 0);
- matrix.drawFastHLine(32, 23, TableauAmpRight[11], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 23, -30, 0);
- matrix.drawFastHLine(31, 23, -TableauAmpLeft[11], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 25, 30, 0);
- matrix.drawFastHLine(32, 25, TableauAmpRight[12], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 25, -30, 0);
- matrix.drawFastHLine(31, 25, -TableauAmpLeft[12], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 27, 30, 0);
- matrix.drawFastHLine(32, 27, TableauAmpRight[13], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 27, -30, 0);
- matrix.drawFastHLine(31, 27, -TableauAmpLeft[13], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 29, 30, 0);
- matrix.drawFastHLine(32, 29, TableauAmpRight[14], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 29, -30, 0);
- matrix.drawFastHLine(31, 29, -TableauAmpLeft[14], matrix.ColorHSV(hue, 255, 255, true));
- hue += 7;
- if(hue >= 1536) hue -= 1536;
- matrix.drawFastHLine(32, 31, 30, 0);
- matrix.drawFastHLine(32, 31, TableauAmpRight[15], matrix.ColorHSV(hue, 255, 255, true));
- matrix.drawFastHLine(31, 31, -30, 0);
- matrix.drawFastHLine(31, 31, -TableauAmpLeft[15], matrix.ColorHSV(hue, 255, 255, true));
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 11 - Bandes vertes jaunes rouge 8 pixels de largeur ******************************************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode11 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInLeft); // Lit l'entrée audio de gauche (Sortie casque ampli)
- yAmplitude[0] = map(val,0, valEntreeMax, 0, 58); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- val = analogRead(audioInRight); // Lit l'entrée audio de droite (Sortie casque ampli)
- yAmplitude[1] = map(val,0, valEntreeMax, 0, 58); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- for (int col = 0; col <= 1; col++)
- {
- if (yAmplitude[col] > 58) {yAmplitude[col] = 58;} // Borne l'abscisse verticale sur la matrice led
- if (yAmplitude[col] <= yPic[col] && millis() - t1tempoBande[col] > 20 && t1tempoBande[col] > 0) // Gestion de l'effacement descendant temporisé des Bandes *************
- {
- matrix.drawFastVLine(yPic[col], (5+col*14), 8, 0); // Efface les led les plus hautes de la bande
- yPic[col] = yPic[col] - 1; // Incrémente l'ordonnée de la led la plus haute de la bande
- if (yPic[col] < 0) {yPic[col] = 0; t1tempoBande[col] = 0;} // Réinitialisation de la temporisation de la descente de la bande
- else {t1tempoBande[col] = millis();} // Redémarre la temporisation de la descente de la bande
- }
- if (yAmplitude[col] > yPic[col] || (yAmplitude[col] == 0 && yPic[col] == 0)) // Gestion de l'affichage montant des Bandes **********************************************
- {
- for (int y = yPic[col]; y <= yAmplitude[col]; y++) // Affiche les bandes en vert, jaune et rouge à partir de la dernière position
- {
- if (y <= 26)
- {
- matrix.drawFastVLine(y, (5+col*14), 8, matrix.Color333(0, 7, 0));
- }
- else if (y <= 42)
- {
- matrix.drawFastVLine(y, (5+col*14), 8, matrix.Color333(7, 7, 0));
- }
- else
- {
- matrix.drawFastVLine(y, (5+col*14), 8, matrix.Color333(7, 0, 0));
- }
- }
- yPic[col] = yAmplitude[col]; // Sauvegarde l'ordonnée du Pic de la bande courante
- t1tempoBande[col] = millis(); // Démarre la temporisation de la descente de la bande
- }
- }
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 12 - Bandes paires vertes jaunes rouge 8 pixels de largeur ***********************************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode12 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInLeft); // Lit l'entrée audio de gauche (Sortie casque ampli)
- yAmplitude[0] = map(val,0, valEntreeMax, 0, 58); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- val = analogRead(audioInRight); // Lit l'entrée audio de droite (Sortie casque ampli)
- yAmplitude[1] = map(val,0, valEntreeMax, 0, 58); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- for (int col = 0; col <= 1; col++)
- {
- if (yAmplitude[col] > 58) {yAmplitude[col] = 58;} // Borne l'abscisse verticale sur la matrice led
- if (yAmplitude[col] <= yPic[col] && millis() - t1tempoBande[col] > 20 && t1tempoBande[col] > 0) // Gestion de l'effacement descendant temporisé des Bandes *************
- {
- matrix.drawFastVLine(yPic[col], (5+col*14), 8, 0); // Efface les led les plus hautes de la bande
- yPic[col] = yPic[col] - 1; // Incrémente l'ordonnée de la led la plus haute de la bande
- if (yPic[col] < 0) {yPic[col] = 0; t1tempoBande[col] = 0;} // Réinitialisation de la temporisation de la descente de la bande
- else {t1tempoBande[col] = millis();} // Redémarre la temporisation de la descente de la bande
- }
- if (yAmplitude[col] > yPic[col] || (yAmplitude[col] == 0 && yPic[col] == 0)) // Gestion de l'affichage montant des Bandes **********************************************
- {
- for (int y = yPic[col]; y <= yAmplitude[col]; y++) // Affiche les bandes en vert, jaune et rouge à partir de la dernière position
- {
- if (y % 2 == 0) // Si y est un nombre pair
- {
- if (y <= 26)
- {
- matrix.drawFastVLine(y, (5+col*14), 8, matrix.Color333(0, 7, 0));
- }
- else if (y <= 42)
- {
- matrix.drawFastVLine(y, (5+col*14), 8, matrix.Color333(7, 7, 0));
- }
- else
- {
- matrix.drawFastVLine(y, (5+col*14), 8, matrix.Color333(7, 0, 0));
- }
- }
- }
- yPic[col] = yAmplitude[col]; // Sauvegarde l'ordonnée du Pic de la bande courante
- t1tempoBande[col] = millis(); // Démarre la temporisation de la descente de la bande
- }
- }
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 13 - Bandes paires dégradées vertes jaunes rouge 8 pixels de largeur *************************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode13 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInLeft); // Lit l'entrée audio de gauche (Sortie casque ampli)
- yAmplitude[0] = map(val,0, valEntreeMax, 0, 58); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- val = analogRead(audioInRight); // Lit l'entrée audio de droite (Sortie casque ampli)
- yAmplitude[1] = map(val,0, valEntreeMax, 0, 58); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- for (int col = 0; col <= 1; col++)
- {
- if (yAmplitude[col] > 58) {yAmplitude[col] = 58;} // Borne l'abscisse verticale sur la matrice led
- if (yAmplitude[col] <= yPic[col] && millis() - t1tempoBande[col] > 20 && t1tempoBande[col] > 0) // Gestion de l'effacement descendant temporisé des Bandes *************
- {
- matrix.drawFastVLine(yPic[col], (5+col*14), 8, 0); // Efface les led les plus hautes de la bande
- yPic[col] = yPic[col] - 1; // Incrémente l'ordonnée de la led la plus haute de la bande
- if (yPic[col] < 0) {yPic[col] = 0; t1tempoBande[col] = 0;} // Réinitialisation de la temporisation de la descente de la bande
- else {t1tempoBande[col] = millis();} // Redémarre la temporisation de la descente de la bande
- }
- if (yAmplitude[col] > yPic[col] || (yAmplitude[col] == 0 && yPic[col] == 0)) // Gestion de l'affichage montant des Bandes **********************************************
- {
- for (int y = yPic[col]; y <= yAmplitude[col]; y++) // Affiche les bandes en vert, jaune et rouge à partir de la dernière position
- {
- if (y % 2 == 0) // Si y est un nombre pair
- {
- if (y <= 26)
- {
- matrix.drawFastVLine(y, (5+col*14), 8, matrix.Color333(0, 3, 0));
- }
- else if (y <= 42)
- {
- matrix.drawFastVLine(y, (5+col*14), 8, matrix.Color333(5, 5, 0));
- }
- else
- {
- matrix.drawFastVLine(y, (5+col*14), 8, matrix.Color333(7, 0, 0));
- }
- }
- }
- yPic[col] = yAmplitude[col]; // Sauvegarde l'ordonnée du Pic de la bande courante
- t1tempoBande[col] = millis(); // Démarre la temporisation de la descente de la bande
- }
- }
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage mode 14 - Bandes paires dégradées vertes jaunes rouge de 1 à 12 pixels de largeur *****************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionMode14 ()
- {
- if (ModeMicrophone == false)
- {
- val = analogRead(audioInLeft); // Lit l'entrée audio de gauche (Sortie casque ampli)
- yAmplitude[0] = map(val,0, valEntreeMax, 0, 58); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- val = analogRead(audioInRight); // Lit l'entrée audio de droite (Sortie casque ampli)
- yAmplitude[1] = map(val,0, valEntreeMax, 0, 58); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- else
- {
- val = peakToPeak;
- //Serial.println(val); // Débug
- yAmplitude[0] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- yAmplitude[1] = map(val,0, valEntreeMax1, 0, 48); // Convertit la valeur lue sur l'entrée audio en abscisse verticale sur la matrice led
- }
- for (int col = 0; col <= 1; col++)
- {
- if (yAmplitude[col] > 58) {yAmplitude[col] = 58;} // Borne l'abscisse verticale sur la matrice led
- if (yAmplitude[col] <= yPic[col] && millis() - t1tempoBande[col] > 20 && t1tempoBande[col] > 0) // Gestion de l'effacement descendant temporisé des Bandes *************
- {
- matrix.drawFastVLine(yPic[col], (4+col*14), 12, 0); // Efface les led les plus hautes de la bande
- yPic[col] = yPic[col] - 1; // Incrémente l'ordonnée de la led la plus haute de la bande
- if (yPic[col] < 0) {yPic[col] = 0; t1tempoBande[col] = 0;} // Réinitialisation de la temporisation de la descente de la bande
- else {t1tempoBande[col] = millis();} // Redémarre la temporisation de la descente de la bande
- }
- if (yAmplitude[col] > yPic[col] || (yAmplitude[col] == 0 && yPic[col] == 0)) // Gestion de l'affichage montant des Bandes **********************************************
- {
- for (int y = yPic[col]; y <= yAmplitude[col]; y++) // Affiche les bandes en vert, jaune et rouge à partir de la dernière position
- {
- if (y % 2 == 0) // Si y est un nombre pair
- {
- if (y <= 26)
- {
- matrix.drawFastVLine(y, (4+col*14), map(y,0,58,1,12), matrix.Color333(0, 3, 0));
- }
- else if (y <= 42)
- {
- matrix.drawFastVLine(y, (4+col*14), map(y,0,58,1,12), matrix.Color333(5, 5, 0));
- }
- else
- {
- matrix.drawFastVLine(y, (4+col*14), map(y,0,58,1,12), matrix.Color333(7, 0, 0));
- }
- }
- }
- yPic[col] = yAmplitude[col]; // Sauvegarde l'ordonnée du Pic de la bande courante
- t1tempoBande[col] = millis(); // Démarre la temporisation de la descente de la bande
- }
- }
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction affichage du fond en fonction du mode sélectionné ***********************************************************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionAfficheFond ()
- {
- matrix.drawFastHLine(0, 6, 50, matrix.Color333(0, 0, 7)); // Affiche le fond
- matrix.drawFastHLine(0, 7, 25, matrix.Color333(0, 7, 0));
- matrix.drawFastHLine(25, 7, 14, matrix.Color333(7, 7, 0));
- matrix.drawFastHLine(39, 7, 10, matrix.Color333(7, 0, 0));
- matrix.drawFastHLine(0, 12, 25, matrix.Color333(0, 7, 0));
- matrix.drawFastHLine(25, 12, 14, matrix.Color333(7, 7, 0));
- matrix.drawFastHLine(39, 12, 10, matrix.Color333(7, 0, 0));
- matrix.drawFastHLine(0, 13, 50, matrix.Color333(0, 0, 7));
- matrix.drawFastVLine(49, 5, 10, matrix.Color333(0, 0, 7));
- matrix.drawFastVLine(50, 6, 8, matrix.Color333(0, 0, 7));
- matrix.drawFastVLine(51, 7, 6, matrix.Color333(0, 0, 7));
- matrix.drawFastVLine(52, 8, 4, matrix.Color333(0, 0, 7));
- matrix.drawFastVLine(53, 9, 2, matrix.Color333(0, 0, 7));
- matrix.drawPixel(39, 5, matrix.Color333(0, 0, 7));
- matrix.drawPixel(39, 14, matrix.Color333(0, 0, 7));
- matrix.drawPixel(25, 5, matrix.Color333(0, 0, 7));
- matrix.drawPixel(25, 14, matrix.Color333(0, 0, 7));
- matrix.drawPixel(0, 5, matrix.Color333(0, 0, 7));
- matrix.drawPixel(0, 14, matrix.Color333(0, 0, 7));
- matrix.drawFastHLine(0, 19, 50, matrix.Color333(0, 0, 7));
- matrix.drawFastHLine(0, 20, 25, matrix.Color333(0, 7, 0));
- matrix.drawFastHLine(25, 20, 14, matrix.Color333(7, 7, 0));
- matrix.drawFastHLine(39, 20, 10, matrix.Color333(7, 0, 0));
- matrix.drawFastHLine(0, 25, 25, matrix.Color333(0, 7, 0));
- matrix.drawFastHLine(25, 25, 14, matrix.Color333(7, 7, 0));
- matrix.drawFastHLine(39, 25, 10, matrix.Color333(7, 0, 0));
- matrix.drawFastHLine(0, 26, 50, matrix.Color333(0, 0, 7));
- matrix.drawFastVLine(49, 18, 10, matrix.Color333(0, 0, 7));
- matrix.drawFastVLine(50, 19, 8, matrix.Color333(0, 0, 7));
- matrix.drawFastVLine(51, 20, 6, matrix.Color333(0, 0, 7));
- matrix.drawFastVLine(52, 21, 4, matrix.Color333(0, 0, 7));
- matrix.drawFastVLine(53, 22, 2, matrix.Color333(0, 0, 7));
- matrix.drawPixel(39, 18, matrix.Color333(0, 0, 7));
- matrix.drawPixel(39, 27, matrix.Color333(0, 0, 7));
- matrix.drawPixel(25, 18, matrix.Color333(0, 0, 7));
- matrix.drawPixel(25, 27, matrix.Color333(0, 0, 7));
- matrix.drawPixel(0, 18, matrix.Color333(0, 0, 7));
- matrix.drawPixel(0, 27, matrix.Color333(0, 0, 7));
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction réinitialisation des variables entre chaque mode sélectionné ************************************************************************************************
- //**************************************************************************************************************************************************************************
- void FonctionInitVariables ()
- {
- hue = 0;
- for (int i = 0; i <= 1; i++) // Réinitialisation des variables
- {
- yAmplitude[i] = 0;
- ylastAmplitude[i] = 0;
- yPic[i] = 0;
- t1tempoBande[i] = 0;
- t1tempoPic[i] = 0;
- yHautBande[i] = 0;
- }
- for (int i = 0; i <= 15; i++)
- {
- TableauAmp[i] = 0;
- TableauAmpLeft[i] = 0;
- TableauAmpRight[i] = 0;
- }
- }
- //**************************************************************************************************************************************************************************
- //*** Fonction Gestion Buzzer **********************************************************************************************************************************************
- //**************************************************************************************************************************************************************************
- void Buzzer (int TempsH, int TempsL, int nb) // TempsH => délai buzzer ON, TempsL => délai buzzer OFF, nb => nombre de bips
- {
- for (int x = 1; x <= nb; x++) // ************************************************************************************ // Boucle le nombre de fois voulu passé par l'argument "int nb"
- {
- digitalWrite(BrocheBuzzer, HIGH); // Active le buzzer
- delay (TempsH); // Temporisation à l'état haut du buzzer pendant la durée passée par l'argument "int TempsH"
- digitalWrite(BrocheBuzzer, LOW); // Désactive le buzzer
- delay (TempsL); // Temporisation à l'état bas du buzzer pendant la durée passée par l'argument "int TempsL"
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement