implémentation stereo_link

This commit is contained in:
Clément SAILLANT
2023-03-17 11:32:55 +01:00
parent 4111e072fc
commit e35679bb01
3 changed files with 25 additions and 41 deletions
+12 -18
View File
@@ -1,17 +1,16 @@
/*
Hlabs controle de volume et de gain
par Clément SAILLANT
Hlabs controle de volume et de gain pour préampli stéréo avec fonction de contrôle constant output
https://www.hlabs.audio
https://www.facebook.com/hlabs.audio
contact@hlabs.audio
code par Clément SAILLANT pour Hlabs - 2023
c.saillant@gmail.com
0625334420
02/2023
*/
/*
tableau de valeurs (i) pour les relais, les valeurs de potentiomètre et les valeurs de lissage
0 : vol_0 volume gauche
1 : gain_0 gain gauche
2 : vol_1 volume droite
3 : gain_1 gain droite
*/
#include <Arduino.h>
// *******************************************************************************************************
@@ -19,6 +18,7 @@ tableau de valeurs (i) pour les relais, les valeurs de potentiomètre et les val
// ******************** // #define DEBUG = INACTIF *******************************************************
// ******************** #define DEBUG = ACTIF ************************************************************
// *******************************************************************************************************
// #define DEBUG
#ifdef DEBUG // si DEBUG activé
@@ -26,12 +26,6 @@ tableau de valeurs (i) pour les relais, les valeurs de potentiomètre et les val
#include "app_api.h" // only needed with flash breakpoints
#endif
// *******************************************************************************************************
// **************************** Activation ou non LEFT & RIGHT *******************************************
// *******************************************************************************************************
#define ENABLE_LEFT
// #define ENABLE_RIGHT
// *******************************************************************************************************
// ****************************************** include ***************************************************
// *******************************************************************************************************
@@ -109,14 +103,14 @@ void loop()
{
if (stereo_link_state != true && const_out_L_state != true && const_out_R_state != true) // si pas de contrôle constant output
{
valeurs_set(i); // controle des valeurs et des relais
valeurs_set(i); // controle des valeurs et des relais en mode normal
}
else if (motor_change[i] != true) // si contrôle constant output et moteur arrêté
else if (motor_change[i] != true) // si contrôle constant output ou stereo link, et moteur arrêté
{
consigne_set(i); // mise à jour des consignes
for (int i = 0; i <= 3; i++)
{
valeurs_const_set(i); // controle des valeurs et des relais
valeurs_const_set(i); // controle des valeurs et des relais en mode constant output
}
}
save_pot(i); // sauvegarde position potentiomètre
-11
View File
@@ -1,14 +1,3 @@
/*
Faire un calcul de consigne pour toujours avoir un écart définit entre les deux potar
faire PID avec analogRead pour voir si plus réactif
pour avoir les valeur de PID faire un code de test pour connaitre les valeurs
Set PID value :
Le PID semble mal fonctionner car le temps de boucle est trop long pour qu'il puisse faire correctement son calcul
#define __Kp 260 // Proportional constant
#define __Ki 2.7 // Integral Constant
#define __Kd 2000 // Derivative Constant
*/
+13 -12
View File
@@ -12,17 +12,17 @@
// définition PIN curseur potentiomètre
#define gain_0_pot A1 // entrée pot gain gauche
#define vol_0_pot A0 // entrée pot volume gauche
#define gain_1_pot A2 // entrée pot gain droite
#define vol_1_pot A3 // entrée pot volume droite
#define gain_1_pot A3 // entrée pot gain droite
#define vol_1_pot A2 // entrée pot volume droite
// *******************************************************************************************************
// ****************************************** potentiomètre **********************************************
// *******************************************************************************************************
// adresse moteur
#define gain_0_motor 0xC8 // A0 = open, A1 = 1
#define vol_0_motor 0xCE // A0 = open, A1 = open
#define gain_1_motor 0xD0 // A0 = 1, A1 = open
#define vol_1_motor 0xCA // A0 = 1, A1 = 1
#define gain_0_motor 0xC8 // A0 = open, A1 = open
#define vol_0_motor 0xCE // A0 = open, A1 = 1
#define gain_1_motor 0xC2 // A0 = open, A1 = 0
#define vol_1_motor 0xC6 // A0 = 0, A1 = open
// variables potentiomètre
int position_lue[4] = {0, 0, 0, 0}; // tableau des valeur lus sur les potentiomètre
@@ -32,12 +32,12 @@ int position_memory[4] = {0, 0, 0, 0}; // tableau
bool position_change[4] = {false, false, false, false}; // tableau de flag de changement de position des potentiomètre
bool motor_change[4] = {false, false, false, false}; // tableau de flag pour moteurs des potentiomètre
byte analog_pot[4] = {gain_0_pot, vol_0_pot, gain_1_pot, vol_1_pot}; // tableau de PIN des potentiomètre
#define max_pot 1000 // valeur max potentiomètre pour calibrage ADC
#define min_pot 10 // valeur min potentiomètre pour calibrage ADC
// variable pour gestion du temps
#define max_pot 1023 // valeur max potentiomètre pour calibrage ADC
#define min_pot 0 // valeur min potentiomètre pour calibrage ADC
// variable de gestion du temps
unsigned long last_change_time = millis(); // remise à zéro du compteur de temps
unsigned long current_time = millis(); // variable de temps courant
#define bounce_time_pot 150 // interval de temps entre 2 lecture de l'état du potentiomètre
// *******************************************************************************************************
@@ -46,8 +46,9 @@ unsigned long current_time = millis(); // variable de temps courant
// adresse carte relais
#define gain_0_relais 0x39 // A0 = 0, A1 = 1, A2 = 1
#define vol_0_relais 0x38 // A0 = 1, A1 = 1, A2 = 1
#define gain_1_relais 0x00
#define vol_1_relais 0x00
#define gain_1_relais 0x3B // A0 = 0, A1 = 0, A2 = 1
#define vol_1_relais 0x3A // A0 = 1, A1 = 0, A2 = 1
// variables relais
byte relais_gain_val[2] = {0, 0}; // tableau de valeur des relais gain
byte relais_vol_val[2] = {0, 0}; // tableau de valeur des relais volumes