Panneau de modération ]

[Commande] Deluxe Line Selector

Une idée ? Creuser un schéma qui vous intéresse ? Besoin d'affiner votre projet avant de le concrétiser ? Parlons en ensemble !

[Commande] Deluxe Line Selector

Messagepar Sebdeploudal le 21 Déc 2017 12:10

Projet :
L’idée n’est pas de cloner, mais de reproduire le comportement de la BOSS LS-2.

Fonctionnement :
6 modes sélectionnables par un rotary switch 6P2T

• A<->B: LINE A ou LINE B;
• A<->Bypass: LINE A ou Bypass;
• B<->Bypass: LINE B ou Bypass;
• A->B->Bypass: LINE A, LINE B ou Bypass;
• A+B Mix -> Bypass: LINE A et LINE B en parallèle ou Bypass;
• Output Select : sortie A, B ou Out

Nous avons donc à gérer 3 entrées et 3 sorties que nous pouvons contrôler avec des relais (ou 2 CD4066 à tester):

____________IN_________________RETURN A________________________RETURN B
OUT________SW_BYPASS________SW_RETURN_A + SW_MIXER________SW_RETURN_B+ SW_MIXER
SEND A______SW_SEND_A
SEND B______SW_SEND_B

Schémas simplifié :
Image

Schémas EAGLE

Implantation DIYLC


Position des relais en fonction de la configuration :

_______________LINE A______LINE B______LINE A et LINE B______Bypass
SW_BYPASS______ouvert______ouvert______ouvert_____________fermé
SW_SEND_A______fermé______fermé______fermé______________ouvert
SW_SEND_B______ouvert_____ouvert______fermé______________ouvert
SW_RETURN_A___fermé______ouvert______fermé______________ouvert
SW_RETURN_B___ouvert______fermé______fermé______________ouvert
SW_MIXER_______fermé______fermé______fermé______________ouvert

Contrôle des relais :
Le contrôle des relais sera assuré par un Arduino NANO. --> relais remplacés par des CD4066
Le changement de fonction se fera par la pression d’un switch momentané.
2 LEDs permettront de vérifié si les boucle A ou B sont actives. --> inutiles si écran LCD
1 écran LCD utilisé pour le paramétrage sera conservé pour affiché le mode. --> Inutile si LED de contrôle.
Je garde une pédale True Bypass part un classique footswitch 3PDT.La LED est remplacée par l'éclairage de l'écaran
Modifié en dernier par Sebdeploudal le 19 Fév 2018 12:05, modifié 6 fois.
le savoir ne vaut que s'il est partagé.
Avatar de l’utilisateur
Sebdeploudal
ELECTRON LIBRE
 
Messages: 816
Enregistré le: 24 Aoû 2010 10:55
Localisation: Bretagne - KEMPER BREIZH IZEL

Messagepar MicMicMan le 30 Déc 2017 01:49

hello,
projet intéressant ça :)
je pense que tu peux te passer des 3 buffers après le 1er, le 1er devrait avoir suffisamment de jus pour driver les 3 lignes
si tu utilises des 4066, il faudra que tu penses à inverser capa de liaison et interrupteur - à ce moment, peut-être que conserver les 3 buffers peut se révéler intéressant, en plaçant un buffer derrière la cellule de 4066 (avant le send).
Avatar de l’utilisateur
MicMicMan
DOCTOR MOC
 
Messages: 6633
Enregistré le: 26 Fév 2009 17:37
Localisation: Lyon

Messagepar Sebdeploudal le 17 Jan 2018 17:17

Oui, sur le Schémas EAGLE, j'ai prévue les capas pour les 4066.
[EDIT du 15 01 2018]
voici le nouveau code
Code: Tout sélectionner
// include the library code:
#include <LiquidCrystal.h>

//INITIALISATION DE L ECRAN
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

//declaration des relays
#define cmd_Relay_1 6
#define cmd_Relay_2 7
#define cmd_Relay_3 8
#define cmd_Relay_4 9
#define cmd_Relay_5 10
#define cmd_Relay_6 A1

//declaration du potentiometre
#define Selector A3
int ValSelector = 0;

//declaration du poussoir
#define Poussoir A2

int ButtonState = LOW; // the current reading from the input pin
int LastButtonState = LOW;

unsigned long LastDebounceTime = 0; // the last time the output pin was toggled
unsigned long DebounceDelay = 50;

//declaration du mode
int Mode = 0;
String MonMode = "";

//declaration du choix
int Choix = 1;
int NextChoix = 2;
int NombreChoix = 0;
String MonChoix = "";

//declaration de la configuration des relay
int ConfigRelay;

void setup() {
   // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
 
   //initialisation des relays
   pinMode(cmd_Relay_1, OUTPUT);
   pinMode(cmd_Relay_2, OUTPUT);
   pinMode(cmd_Relay_3, OUTPUT);
   pinMode(cmd_Relay_4, OUTPUT);
   pinMode(cmd_Relay_5, OUTPUT);
   pinMode(cmd_Relay_6, OUTPUT);
   
   //initialisation du Pot
   pinMode(Selector, INPUT_PULLUP);
   
   //initialisation du bouton
   pinMode(Poussoir, INPUT);
   
   //initialisation des relay
   ConfigRelay = 0;
}

void loop() {
  //digitalWrite (LedTest, HIGH);
   int reading = digitalRead(Poussoir);
     
   if (reading != LastButtonState)
   {
      LastDebounceTime = millis();
   }
   
   if ((millis() - LastDebounceTime) > DebounceDelay)
   {
      if (reading != ButtonState)
      {
         ButtonState = reading;
         if (ButtonState == HIGH)
         {
            Choix = NextChoix;
            NextChoix = Choix + 1;
         }
      }
   }
      
   LastButtonState = reading;   
   ValSelector=analogRead(Selector);
  delay(25);
   
   if (930<ValSelector && ValSelector<950) //lit la valeur du pot
   {   Mode = 6;
   }
   else
      if (880<ValSelector && ValSelector<900) //lit la valeur du pot
      {   
         Mode = 5;
   }
   else
      if (840<ValSelector && ValSelector<860) //lit la valeur du pot
      {   
         Mode = 4;
   }
   else
      if (780<ValSelector && ValSelector<800) //lit la valeur du pot
      {   
         Mode = 3;
   }
   else
      if (690<ValSelector && ValSelector<710) //lit la valeur du pot
      {   
         Mode = 2;
   }
   else
      if (515<ValSelector && ValSelector<535) //lit la valeur du pot
      {   
         Mode = 1;
   }
   
   switch (Mode) {
      case 1:
         NombreChoix = 2;
         MonMode = "     A<-->B     ";
      //lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print(MonMode);
         if (Choix > NombreChoix)
         {   Choix = NombreChoix ;
            NextChoix = 1;
         }
         break;
      case 2:
         NombreChoix = 2;
         MonMode = "  A<-->Bypass   ";
      //lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print(MonMode);
      Serial.print(MonMode);
      Serial.print("\t");
         if (Choix > NombreChoix)
         {   Choix = NombreChoix ;
            NextChoix = 1;
         }
         break;
      case 3:
         NombreChoix = 2;
         MonMode = "  B<-->Bypass   ";
      lcd.setCursor(0, 0);
      lcd.print(MonMode);
      if (Choix > NombreChoix)
         {   Choix = NombreChoix ;
            NextChoix = 1;
         }
         break;
      case 4:
         NombreChoix = 3;
         MonMode = " A-->B-->Bypass ";
      lcd.setCursor(0, 0);
      lcd.print(MonMode);
         break;
      case 5:
         NombreChoix = 2;
         MonMode = "A+B MIX-->Bypass";
      lcd.setCursor(0, 0);
      lcd.print(MonMode);
         if (Choix > NombreChoix)
         {   Choix = NombreChoix ;
            NextChoix = 1;
         }
         break;
      case 6:
         NombreChoix = 3;
         MonMode = "  A-->B-->OUT   ";
      lcd.setCursor(0, 0);
      lcd.print(MonMode);
         break;
   }
   if (Choix == NombreChoix)
   {   NextChoix = 1;
   }
   
   ConfigRelay = ((10*Mode)+Choix);
   
   switch (ConfigRelay) {
      case 11:
         MonChoix = "     LINE A     ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(cmd_Relay_1, LOW);
         digitalWrite(cmd_Relay_2, HIGH);
         digitalWrite(cmd_Relay_3, LOW);
         digitalWrite(cmd_Relay_4, HIGH);
         digitalWrite(cmd_Relay_5, LOW);
         digitalWrite(cmd_Relay_6, HIGH);
         break;
      case 12:
         MonChoix = "     LINE B     ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(cmd_Relay_1, LOW);
         digitalWrite(cmd_Relay_2, LOW);
         digitalWrite(cmd_Relay_3, HIGH);
         digitalWrite(cmd_Relay_4, LOW);
         digitalWrite(cmd_Relay_5, HIGH);
         digitalWrite(cmd_Relay_6, HIGH);
         break;
      case 21:
         MonChoix = "     LINE A     ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(cmd_Relay_1, LOW);
         digitalWrite(cmd_Relay_2, HIGH);
         digitalWrite(cmd_Relay_3, LOW);
         digitalWrite(cmd_Relay_4, HIGH);
         digitalWrite(cmd_Relay_5, LOW);
         digitalWrite(cmd_Relay_6, HIGH);
         break;
      case 22:
         MonChoix = "     Bypass     ";
            lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(cmd_Relay_1, HIGH);
         digitalWrite(cmd_Relay_2, LOW);
         digitalWrite(cmd_Relay_3, LOW);
         digitalWrite(cmd_Relay_4, LOW);
         digitalWrite(cmd_Relay_5, LOW);
         digitalWrite(cmd_Relay_6, LOW);
         break;
      case 31:
         MonChoix = "     LINE B     ";
            lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(cmd_Relay_1, LOW);
         digitalWrite(cmd_Relay_2, LOW);
         digitalWrite(cmd_Relay_3, HIGH);
         digitalWrite(cmd_Relay_4, LOW);
         digitalWrite(cmd_Relay_5, HIGH);
         digitalWrite(cmd_Relay_6, HIGH);
         break;
      case 32:
         MonChoix = "     Bypass     ";
            lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(cmd_Relay_1, HIGH);
         digitalWrite(cmd_Relay_2, LOW);
         digitalWrite(cmd_Relay_3, LOW);
         digitalWrite(cmd_Relay_4, LOW);
         digitalWrite(cmd_Relay_5, LOW);
         digitalWrite(cmd_Relay_6, LOW);
         break;
      case 41:
         MonChoix = "     LINE A     ";
            lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(cmd_Relay_1, LOW);
         digitalWrite(cmd_Relay_2, HIGH);
         digitalWrite(cmd_Relay_3, LOW);
         digitalWrite(cmd_Relay_4, HIGH);
         digitalWrite(cmd_Relay_5, LOW);
         digitalWrite(cmd_Relay_6, HIGH);
         break;
      case 42:
         MonChoix = "     LINE B     ";
            lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(cmd_Relay_1, LOW);
         digitalWrite(cmd_Relay_2, LOW);
         digitalWrite(cmd_Relay_3, HIGH);
         digitalWrite(cmd_Relay_4, LOW);
         digitalWrite(cmd_Relay_5, HIGH);
         digitalWrite(cmd_Relay_6, HIGH);
         break;
      case 43:
         MonChoix = "     Bypass     ";
            lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(cmd_Relay_1, HIGH);
         digitalWrite(cmd_Relay_2, LOW);
         digitalWrite(cmd_Relay_3, LOW);
         digitalWrite(cmd_Relay_4, LOW);
         digitalWrite(cmd_Relay_5, LOW);
         digitalWrite(cmd_Relay_6, LOW);
         break;
      case 51:
         MonChoix = "LINE A + LINE B ";
           lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(cmd_Relay_1, LOW);
         digitalWrite(cmd_Relay_2, HIGH);
         digitalWrite(cmd_Relay_3, HIGH);
         digitalWrite(cmd_Relay_4, HIGH);
         digitalWrite(cmd_Relay_5, HIGH);
         digitalWrite(cmd_Relay_6, HIGH);
         break;
      case 52:
         MonChoix = "     Bypass     ";
            lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(cmd_Relay_1, HIGH);
         digitalWrite(cmd_Relay_2, LOW);
         digitalWrite(cmd_Relay_3, LOW);
         digitalWrite(cmd_Relay_4, LOW);
         digitalWrite(cmd_Relay_5, LOW);
         digitalWrite(cmd_Relay_6, LOW);
         break;
      case 61:
         MonChoix = "    Sortie A    ";
            lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(cmd_Relay_1, LOW);
         digitalWrite(cmd_Relay_2, HIGH);
         digitalWrite(cmd_Relay_3, LOW);
         digitalWrite(cmd_Relay_4, LOW);
         digitalWrite(cmd_Relay_5, LOW);
         digitalWrite(cmd_Relay_6, LOW);
         break;
      case 62:   
         MonChoix = "    Sortie B    ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(cmd_Relay_1, LOW);
         digitalWrite(cmd_Relay_2, HIGH);
         digitalWrite(cmd_Relay_3, LOW);
         digitalWrite(cmd_Relay_4, LOW);
         digitalWrite(cmd_Relay_5, LOW);
         digitalWrite(cmd_Relay_6, LOW);
         break;
      case 63:
         MonChoix = "   Sortie OUT   ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(cmd_Relay_1, HIGH);
         digitalWrite(cmd_Relay_2, LOW);
         digitalWrite(cmd_Relay_3, LOW);
         digitalWrite(cmd_Relay_4, LOW);
         digitalWrite(cmd_Relay_5, LOW);
         digitalWrite(cmd_Relay_6, LOW);
         break;         
   }   
}


Petite modif sur le Montage car A6 et A7 ne peuvent pas être des sortie digitales
Image

[EDIT du 17 01 2018]
simplification du schéma :
Image
Modifié en dernier par Sebdeploudal le 26 Jan 2018 11:39, modifié 3 fois.
le savoir ne vaut que s'il est partagé.
Avatar de l’utilisateur
Sebdeploudal
ELECTRON LIBRE
 
Messages: 816
Enregistré le: 24 Aoû 2010 10:55
Localisation: Bretagne - KEMPER BREIZH IZEL

Messagepar Sebdeploudal le 25 Jan 2018 12:28

Image
le savoir ne vaut que s'il est partagé.
Avatar de l’utilisateur
Sebdeploudal
ELECTRON LIBRE
 
Messages: 816
Enregistré le: 24 Aoû 2010 10:55
Localisation: Bretagne - KEMPER BREIZH IZEL

Messagepar shaddo le 25 Jan 2018 14:22

Ca va être chouette ! :D
Le Docteur Posture a dit : "... si la folie se résumait à ce que l'on rencontre sur ce forum, alors le monde irait bien mieux !"
#JeSuisCharlie
Avatar de l’utilisateur
shaddo
PLAYBOY VINTAGE
 
Messages: 12569
Enregistré le: 06 Aoû 2004 16:38
Localisation: Copacabana (Lorraine)

Messagepar Sebdeploudal le 01 Fév 2018 00:22

Pour le splitter le LT1058 ne fonctionne pas car "JFET input" je viens juste de recevoir 4 samples de LT1114 (3 pour mon VT BASS DI) qui fonctionnent.

la solution était là

SONELEC a écrit:Attention : si l'AOP est alimenté en mono-tension (broche d'alim V- reliée à la masse par exemple, ce point est abordé plus loin) alors sa sortie délivre une tension égale à sa tension de déchet, tant que la tension d'entrée (appliquée sur l'entrée non-inverseuse) est inférieure à cette tension de déchet. Exemple : si la tension de déchet de l'AOP est de 1 V sur le rail V-, alors toute tension d'entrée comprise entre 0 V et +1 V conduira à une tension de +1 V en sortie. Dans cette plage de tension d'entrée, le montage ne se comporte plus comme un suiveur de tension. Solution : utiliser un AOP "rail-to-rail" ou l'alimenter avec une tension symétrique (double).
le savoir ne vaut que s'il est partagé.
Avatar de l’utilisateur
Sebdeploudal
ELECTRON LIBRE
 
Messages: 816
Enregistré le: 24 Aoû 2010 10:55
Localisation: Bretagne - KEMPER BREIZH IZEL

Messagepar Sebdeploudal le 27 Fév 2018 22:57

Petite modification, j'utilise la broche 15 de l'écran et sa résistance comme une Led reliée au footswitch pour indiquer si la pédale fonctionne ou non.
Je supprime l'alim 5V.

Image

le switching fonctionne, reste à tester le mixer.

Le code pour connaitre les valeurs du rotary switch:
Code: Tout sélectionner
// include the library code:
#include <LiquidCrystal.h>

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

int a=0;

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  pinMode(A3, INPUT_PULLUP);
  pinMode(A4, OUTPUT);
 }


void loop()
{
  digitalWrite(A4, HIGH);
  a = analogRead(3);
  lcd.setCursor(0, 0);
  lcd.print(a);
  delay(500);
 lcd.clear();


}


et le code de la pédale

Code: Tout sélectionner
#include <LiquidCrystal.h> // include the library code:

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; //INITIALISATION DE L ECRAN
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

#define LCD_Light A4  //declaration alimentaion lumiere de l'ecran LCD

#define sw_bypass 8 //declaration des relay
#define sw_send_a 10
#define sw_send_b 9
#define sw_return_a 6
#define sw_return_b 7
#define sw_mixer A5

#define Footswitch A1//declzrtion du footswitch
int FootValue=HIGH;

#define Selector A3 //declaration du potentiometre
int ValSelector = 0;

#define Poussoir A2  //declaration du poussoir

int ButtonState = LOW; // the current reading from the input pin
int LastButtonState = LOW;

unsigned long LastDebounceTime = 0; // the last time the output pin was toggled
unsigned long DebounceDelay = 50;

int Mode = 0;  //declaration du mode
String MonMode = "";

int Choix = 1;  //declaration du choix
int NextChoix = 2;
int NombreChoix = 0;
String MonChoix = "";

int ConfigRelay;  //declaration de la configuration des relay

void setup() {
  pinMode(LCD_Light, OUTPUT);  // set up the LCD's number of columns and rows:
  digitalWrite(LCD_Light, HIGH);
   lcd.begin(16, 2);

   pinMode(sw_bypass, OUTPUT); //initialisation des relays
   pinMode(sw_send_a, OUTPUT);
   pinMode(sw_send_b, OUTPUT);
   pinMode(sw_return_a, OUTPUT);
   pinMode(sw_return_b, OUTPUT);
   pinMode(sw_mixer, OUTPUT);
   
   pinMode(Selector, INPUT_PULLUP);  //initialisation du Pot
   
   pinMode(Poussoir, INPUT); //initialisation du bouton

  pinMode(Footswitch, INPUT_PULLUP);  //initialisation du FOOTSWITCH
   
   ConfigRelay = 0;  //initialisation des relay
}

void loop() {
   int reading = digitalRead(Poussoir);     
   if (reading != LastButtonState)
   {      LastDebounceTime = millis();
   }   
   if ((millis() - LastDebounceTime) > DebounceDelay)
   {      if (reading != ButtonState)
      {   ButtonState = reading;
         if (ButtonState == HIGH)
         {   Choix = NextChoix;
            NextChoix = Choix + 1;
         }
      }
   }      
   LastButtonState = reading;   
 
   ValSelector=analogRead(Selector);
  FootValue=digitalRead(Footswitch);
  if (FootValue == HIGH)
  {digitalWrite(LCD_Light, LOW);
  }
  else {digitalWrite(LCD_Light, HIGH);
  }
  delay(25); //délais entre 2 prise en compte du bouton change en mS

   if (910<ValSelector) //lit la valeur du pot
   {   Mode = 6;//936
   }
   else
      if (870<ValSelector && ValSelector<905) //lit la valeur du pot
      {Mode = 5;//889
   }
   else
      if (820<ValSelector && ValSelector<865) //lit la valeur du pot
      {Mode = 4;//843
   }
   else
      if (730<ValSelector && ValSelector<810) //lit la valeur du pot
      {   Mode = 3;//785
   }
   else
      if (600<ValSelector && ValSelector<720) //lit la valeur du pot
      {Mode = 2;//694
   }
   else
      if (500<ValSelector && ValSelector<570) //lit la valeur du pot
      {   Mode = 1;//520
   }
   
   switch (Mode) {
    case 0:
      NombreChoix = 1;
      //MonMode = "  TRUE  BYPASS  ";
      lcd.setCursor(0, 0);
      lcd.print(MonMode);
      if (Choix > NombreChoix)
      { Choix = NombreChoix ;
        NextChoix = 1;
      }
      break;
      case 1:
         NombreChoix = 2;
         MonMode = "     A<-->B     ";
      lcd.setCursor(0, 0);
      lcd.print(MonMode);
         if (Choix > NombreChoix)
         {   Choix = NombreChoix ;
            NextChoix = 1;
         }
         break;
      case 2:
         NombreChoix = 2;
         MonMode = "  A<-->Bypass   ";
      lcd.setCursor(0, 0);
      lcd.print(MonMode);
         if (Choix > NombreChoix)
         {   Choix = NombreChoix ;
            NextChoix = 1;
         }
         break;
      case 3:
         NombreChoix = 2;
         MonMode = "  B<-->Bypass   ";
      lcd.setCursor(0, 0);
      lcd.print(MonMode);
      if (Choix > NombreChoix)
         {   Choix = NombreChoix ;
            NextChoix = 1;
         }
         break;
      case 4:
         NombreChoix = 3;
         MonMode = " A-->B-->Bypass ";
      lcd.setCursor(0, 0);
      lcd.print(MonMode);
      if (Choix > NombreChoix)
      { Choix = NombreChoix ;
        NextChoix = 1;
      }
         break;
      case 5:
         NombreChoix = 2;
         MonMode = "A+B MIX-->Bypass";
      lcd.setCursor(0, 0);
      lcd.print(MonMode);
         if (Choix > NombreChoix)
         {   Choix = NombreChoix ;
            NextChoix = 1;
         }
         break;
      case 6:
         NombreChoix = 3;
         MonMode = "  A-->B-->OUT   ";
         lcd.print(ValSelector);
      lcd.setCursor(0, 0);
      lcd.print(MonMode);
         if (Choix == NombreChoix)
       {   NextChoix = 1;
       }
       break;
   }   
       ConfigRelay = ((10*Mode)+Choix);
   
   switch (ConfigRelay) {
      case 11:
         MonChoix = "     LINE A     ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(sw_bypass, LOW);//8 OK
         digitalWrite(sw_send_a, HIGH);//10 OK
         digitalWrite(sw_send_b, LOW);//9 OK
         digitalWrite(sw_return_a, HIGH);//6 OK
         digitalWrite(sw_return_b, LOW);//7 OK
         digitalWrite(sw_mixer, HIGH);//A5 OK
         break;
      case 12:
         MonChoix = "     LINE B     ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(sw_bypass, LOW);//8 OK
         digitalWrite(sw_send_a, LOW); //10 OK
         digitalWrite(sw_send_b, HIGH);//9 OK
         digitalWrite(sw_return_a, LOW);//6 OK
         digitalWrite(sw_return_b, HIGH);//7 OK
         digitalWrite(sw_mixer, HIGH);//A5 OK
         break;
      case 21:
         MonChoix = "     LINE A     ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(sw_bypass, LOW);//8 OK
         digitalWrite(sw_send_a, HIGH);//10 OK
         digitalWrite(sw_send_b, LOW);//9 OK
         digitalWrite(sw_return_a, HIGH);//6 OK
         digitalWrite(sw_return_b, LOW);//7 OK
         digitalWrite(sw_mixer, HIGH);//A5 OK
         break;
      case 22:
         MonChoix = "     Bypass     ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(sw_bypass, HIGH);//8 OK
         digitalWrite(sw_send_a, LOW);//10 OK
         digitalWrite(sw_send_b, LOW);//9 OK
         digitalWrite(sw_return_a, LOW);//6 OK
         digitalWrite(sw_return_b, LOW);//7 OK
         digitalWrite(sw_mixer, LOW);//A5 OK
         break;
      case 31:
         MonChoix = "     LINE B     ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(sw_bypass, LOW);//8 OK
         digitalWrite(sw_send_a, LOW);//10 OK
         digitalWrite(sw_send_b, HIGH);//9 OK
         digitalWrite(sw_return_a, LOW);//6 OK
         digitalWrite(sw_return_b, HIGH);//7 OK
         digitalWrite(sw_mixer, HIGH);//A5 OK
         break;
      case 32:
         MonChoix = "     Bypass     ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(sw_bypass, HIGH);//8 OK
         digitalWrite(sw_send_a, LOW);//10 OK
         digitalWrite(sw_send_b, LOW);//9 OK
         digitalWrite(sw_return_a, LOW);//6 OK
         digitalWrite(sw_return_b, LOW);//7 OK
         digitalWrite(sw_mixer, LOW);//A5 OK
         break;
      case 41:
         MonChoix = "     LINE A     ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(sw_bypass, LOW);//8 OK
         digitalWrite(sw_send_a, HIGH);//10 OK
         digitalWrite(sw_send_b, LOW);//9 OK
         digitalWrite(sw_return_a, HIGH);//6 OK
         digitalWrite(sw_return_b, LOW);//7 OK
         digitalWrite(sw_mixer, HIGH);//A5 OK
         break;
      case 42:
         MonChoix = "     LINE B     ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(sw_bypass, LOW);//8 OK
         digitalWrite(sw_send_a, LOW);//10 OK
         digitalWrite(sw_send_b, HIGH);//9 OK
         digitalWrite(sw_return_a, LOW);//6 OK
         digitalWrite(sw_return_b, HIGH);//7 OK
         digitalWrite(sw_mixer, HIGH);//A5 OK
         break;
      case 43:
         MonChoix = "     Bypass     ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(sw_bypass, HIGH);//8 OK
         digitalWrite(sw_send_a, LOW);//10 OK
         digitalWrite(sw_send_b, LOW);//9 OK
         digitalWrite(sw_return_a, LOW);//6 OK
         digitalWrite(sw_return_b, LOW);//7 OK
         digitalWrite(sw_mixer, LOW);//A6 OK
         break;
      case 51:
         MonChoix = "LINE A + LINE B ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(sw_bypass, LOW);//8 OK
         digitalWrite(sw_send_a, HIGH);//10 OK
         digitalWrite(sw_send_b, HIGH);//9 OK
         digitalWrite(sw_return_a, HIGH);//6 OK
         digitalWrite(sw_return_b, HIGH);//7 OK
         digitalWrite(sw_mixer, HIGH);//A5 OK
         break;
      case 52:
         MonChoix = "     Bypass     ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(sw_bypass, HIGH);//8 OK
         digitalWrite(sw_send_a, LOW);//10 OK
         digitalWrite(sw_send_b, LOW);//9 OK
         digitalWrite(sw_return_a, LOW);//6 OK
         digitalWrite(sw_return_b, LOW);//7 OK
         digitalWrite(sw_mixer, LOW);//A5 OK
         break;
      case 61:
         MonChoix = "    Sortie A    ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(sw_bypass, LOW);//8 OK
         digitalWrite(sw_send_a, HIGH);//10 OK
         digitalWrite(sw_send_b, LOW);//9 OK
         digitalWrite(sw_return_a, LOW);//6 OK
         digitalWrite(sw_return_b, LOW);//7 OK
         digitalWrite(sw_mixer, LOW);//A5 OK
         break;
      case 62:   
         MonChoix = "    Sortie B    ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(sw_bypass, LOW);//8 OK
         digitalWrite(sw_send_a, LOW);//10 OK
         digitalWrite(sw_send_b, HIGH);//9 OK
         digitalWrite(sw_return_a, LOW);//6 OK
         digitalWrite(sw_return_b, LOW);//7 OK
         digitalWrite(sw_mixer, LOW);//A5 OK
         break;
      case 63:
         MonChoix = "   Sortie OUT   ";
      lcd.setCursor(0, 1);
      lcd.print(MonChoix);
         digitalWrite(sw_bypass, HIGH);//8 OK
         digitalWrite(sw_send_a, LOW);//10 OK
         digitalWrite(sw_send_b, LOW);//9 OK
         digitalWrite(sw_return_a, LOW);//6 OK
         digitalWrite(sw_return_b, LOW);//7 OK
         digitalWrite(sw_mixer, LOW);//A5 OK
         break;         
   }   
}


Test en cours...
Image
le savoir ne vaut que s'il est partagé.
Avatar de l’utilisateur
Sebdeploudal
ELECTRON LIBRE
 
Messages: 816
Enregistré le: 24 Aoû 2010 10:55
Localisation: Bretagne - KEMPER BREIZH IZEL

Messagepar Sebdeploudal le 02 Mar 2018 09:47

R12 et R13 ne convienne pas, il faut 2 nouveaux diviseurs de tension sur l'alim pour amener 2*4V5 en sortie de C7 et C10.
Test ce soir.
@ Suivre ...

[edit du 02/03/2018]
J'ai mis en place les deux nouveaux diviseur de tension.
Après le return, le signal sonore rehaussé de 4.5V arrive jusqu'au CD4066.
Le CD4066 semble bien alimenté.
5V semble arriver à la broche de contrôle.
Le signale ne sort pas.
GRRR.........
[/edit]
le savoir ne vaut que s'il est partagé.
Avatar de l’utilisateur
Sebdeploudal
ELECTRON LIBRE
 
Messages: 816
Enregistré le: 24 Aoû 2010 10:55
Localisation: Bretagne - KEMPER BREIZH IZEL

Messagepar Sebdeploudal le 05 Mar 2018 10:44

Mes CD4066BE ne switch plus.
il sont passant est quand j'envoie une commande 5V il deviennent non passant et restent non passant quand je coupe le 5V de commande.
il redeviennent passant si je coupe l'alimentation 9v et que je la remets.
je vais essayer des LT202 et LT222 que j'ai commandé en sample.
le savoir ne vaut que s'il est partagé.
Avatar de l’utilisateur
Sebdeploudal
ELECTRON LIBRE
 
Messages: 816
Enregistré le: 24 Aoû 2010 10:55
Localisation: Bretagne - KEMPER BREIZH IZEL

Messagepar Bartgil le 05 Mar 2018 12:50

Il faut que tu mettes une résistance de pull-down (de 10K par exemple) sur ta ligne de commande 5V, pour qu'il y ait une référence à la masse lorsque le 5V disparaît.
=> donc une résistance de 10K entre chaque ligne de commande 5V du 4066 et la masse.
Donne sans rien attendre, tu ne seras jamais déçu.
Voir de belles choses, c'est bon pour la tête
Avatar de l’utilisateur
Bartgil
MODERATEUR PLEIN SUD
 
Messages: 2370
Enregistré le: 04 Mar 2009 21:19
Localisation: Ajaccio

Messagepar Sebdeploudal le 05 Mar 2018 13:45

ok je test ça ce soir.
merci.
le savoir ne vaut que s'il est partagé.
Avatar de l’utilisateur
Sebdeploudal
ELECTRON LIBRE
 
Messages: 816
Enregistré le: 24 Aoû 2010 10:55
Localisation: Bretagne - KEMPER BREIZH IZEL

Messagepar Sebdeploudal le 06 Mar 2018 13:59

Bartgil a écrit:Il faut que tu mettes une résistance de pull-down (de 10K par exemple) sur ta ligne de commande 5V, pour qu'il y ait une référence à la masse lorsque le 5V disparaît.
=> donc une résistance de 10K entre chaque ligne de commande 5V du 4066 et la masse.

Ça marche nickel, merci Bartgil.

Version spaghetti
Image

Version PCB non testé
Image

schéma
https://drive.google.com/open?id=137AUv ... pD-JKpCRKJ

circuit
https://drive.google.com/open?id=1AB2s4 ... H0QfcHsRGm

https://drive.google.com/open?id=1eETRA ... x1X_3GoaLc
le savoir ne vaut que s'il est partagé.
Avatar de l’utilisateur
Sebdeploudal
ELECTRON LIBRE
 
Messages: 816
Enregistré le: 24 Aoû 2010 10:55
Localisation: Bretagne - KEMPER BREIZH IZEL

Messagepar shaddo le 21 Mar 2018 18:29

Bien joué Sebdeploudal ! :champion:
Merci pour le partage.
Le Docteur Posture a dit : "... si la folie se résumait à ce que l'on rencontre sur ce forum, alors le monde irait bien mieux !"
#JeSuisCharlie
Avatar de l’utilisateur
shaddo
PLAYBOY VINTAGE
 
Messages: 12569
Enregistré le: 06 Aoû 2004 16:38
Localisation: Copacabana (Lorraine)

Messagepar Sebdeploudal le 22 Mar 2018 08:16

J'ai commencé à souder le nano définitif, il reste 4 soudures mais je ne voyais plus rien hier soir.
Les photos finales viendront bientôt.
le savoir ne vaut que s'il est partagé.
Avatar de l’utilisateur
Sebdeploudal
ELECTRON LIBRE
 
Messages: 816
Enregistré le: 24 Aoû 2010 10:55
Localisation: Bretagne - KEMPER BREIZH IZEL

Messagepar Sebdeploudal le 29 Mai 2018 22:02

Après un déménagement et une période d'interruption forcée, j'ai enfin de nouveau un atelier opérationnel. Je reprends donc mes projets en cours. Mais plus rien ne fonctionne. Mes commandes 5v fonctionnent bien, elle sont toutes reliées à la masse par des résistance de 10K. Mais lorsque je les activé, aucune ne switch. Et mon signal ne passe pas. Mes CD4066 sont bien alimentées.
Mistère.

Fin de l'acharnement j'ai changé mes CD4066 dont j'ignorai la provenance par 2 achetés chez Tayda (marqué TI) et là, tout fonctionne.

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image
le savoir ne vaut que s'il est partagé.
Avatar de l’utilisateur
Sebdeploudal
ELECTRON LIBRE
 
Messages: 816
Enregistré le: 24 Aoû 2010 10:55
Localisation: Bretagne - KEMPER BREIZH IZEL


Retourner vers CONCEPTION

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités