Go Down

Topic: Cockpit - Simulateur DCS-World. (Read 874 times) previous topic - next topic

kamill

Ca m'a l'air bien parti. Bon courage.

J-M-L

bravo ! ça va faire un sacré paquet de fils derrière :)

y'a pas bcp de place pour les étiquettes, vous allez vous y retrouver ?
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

GregFou

au final effectivement le panneau devrait être plus grand, la c'était un test et comme vous j'ai constaté que c'était trop serré.

au final le support des interrupteur devrait être en plastique transparent afin de faire un rétroéclairage des inscriptions.

Petite question, vous me conseillez de placer les MCP sur quel type de circuit imprimé pour le montage final??

J-M-L

#33
Mar 21, 2019, 10:11 am Last Edit: Mar 21, 2019, 10:27 am by J-M-L
Petite question, vous me conseillez de placer les MCP sur quel type de circuit imprimé pour le montage final??
idéalement vu le nombre de fils nécessaires, vous pourriez faire un petit circuit imprimé "custom" et commander ça sur internet. ça vous simplifiera la vie.

Mais sinon prendre un bout de PCB à pastille et router des fils vers des broches type bornier  de connexion que vous visserez par exemple. ça reste démontable et la connexion physique est de bonne qualité



Perso j'ai laissé tomber ce genre de composants "discrets" et j'achète un PCB tout fait pour quelques dizaines de centimes d'euros en plus... J'aime bien ce modèle qui met la communication avec Arduino d'un côté et répartit toutes les pins horizontalement avec un espacement standard, donc facile de connecter une nappe de fils




il existe une version un peu moins cher et plus dense qui mettra les pins sur 2 rangées. ça permet aussi d'avoir deux nappes de fils, qui partent chacune d'un côté et avoir le composant au centre.


Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

GregFou

OK, effectivement c'est bien ce type de mcp, mais j'ai déjà commande les 8 dont j'avais besoin.
(J'ai été trop rapide sur le coup je pense  :( )

Par contre la broche je vais me la procurer effectivement.

je pensais partir sur ce type de support pour le mcp

dbrion06

J'utilise ce type de circuit double farce.
Une autre solution, si vous utilisez des broad beards pour tester: utiliser des doubles faces soudables reproduisant la disposition des bread boards (avec soudure, donc, au lieu de sans soudures); avec  "solderable breadboard", google me ramène https://www.sparkfun.com/products/12070

J-M-L

#36
Mar 21, 2019, 10:32 am Last Edit: Mar 21, 2019, 10:35 am by J-M-L
Oui pour le PCB. Dans ce cas chaque pastille est indépendante.

Il en existe avec des routes horizontales reliant toutes les pastilles sur une ligne. il suffit de "gratter" la ligne (généralement un petit coup de perceuse) pour décider où s'arrête une connexion - ça évite d'avoir un gros paquet de fils depuis le composant


(source)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

dbrion06

Il y a une petite remarque que les cartes d'évasion (break out beards) judicieusement montrées par JML suscitent: le 23017 vient avec des condensateurs de découplage, selon ma loupe (donc, il peut être judicieux d'en mettre un de 100nF ou plus entre les deux broches d'alimentation, même s'ils semblent inutiles)

J-M-L

breakout en anglais c'est "éclater" ---> un truc qui permet de répartir les petites pins, un peu comme on dirait "une vue en éclaté"
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

dbrion06

Bonjour, Monsieur JML;
parmi deux traductions valides
Quote
***
'evader' également trouvé dans les traductions du dictionnaire Anglais-Français
abscond
   
v.
   
s'évader
   
   
to break out of 

   
exp.
   
s'évader de
   
   
get someone sprung from prison
   
v.
   
faire s'evader qn de taule
   
[Fam.]
   
to escape from prison
   
exp.
   
s'évader de prison
   
   
break prison

, je préfère la mienne,  plus optimiste (et rappeler que les circuits modernes ont des pattes microscopiques est desespèrant)

J-M-L

#40
Mar 21, 2019, 11:28 am Last Edit: Mar 21, 2019, 11:39 am by J-M-L
pas de soucis, un peu de poésie dans ce bas monde c'est bien aussi :)

Le sens premier à comprendre dans le "breakout board" c'est simplement de "break out these pins onto a printed circuit board".

La langue anglaise regorge de subtilités (et pièges pour les collégiens étrangers) avec les up, out, down que vous pouvez accoler aux verbes pour en changer la signification.

avec Break par exemple vous aurez:

Break away  -> quitter quelque chose
Break down -> tomber en panne, succomber à une émotion, expliquer quelque chose pas par pas
Break into -> commencer quelque chose, pénétrer par effraction
Break in -> pénétrer par effraction, passer la phase d'adaptation, dompter, ...
Break in on -> s'imposer quelque part, dans une conversation
Break off -> casser quelque chose
Break open -> ouvrir par la force
Break out -> s'échapper, éclater,
Break up -> diviser en plusieurs morceaux, par exemple une conversation hachée au téléphone
Break through -> passer un certain niveau, apparaître en transparence / second plan
Break with --> arrêter quelque chose de traditionnel

et j'en oublie sans doute..
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

GregFou

Bonjour a tous,

Je viens vous donner quelques nouvelles....

J'ai terminer le premier petit circuit ..... le montage est beaucoup moins archaïque. voir ci dessous.





je vais pouvoir attaquer la réalisation du panneau final avec le rétroéclairage  :)  :)

Petite question, que pensez vous de ce code :
je pense qu'il est améliorable, dans le sens ou je vais avoir 112 commandes

Code: [Select]

#include <Keyboard.h>
#include <Wire.h>
#include "Adafruit_MCP23017.h"

int Etatprec[3];  // Déclaration de la variable tableau, correspondant à l'état precedent de chacun des interrupteurs

Adafruit_MCP23017 mcp[1];

void setup() {

Keyboard.begin();
mcp[0].begin(0);

mcp[0].pinMode(6, INPUT);
mcp[0].pullUp(6, HIGH);
mcp[0].pinMode(7, INPUT);
mcp[0].pullUp(7, HIGH);

int a;    // Mise à 0 de tout les etats precedent des interrupteurs
for (a=0; a<3; a++){
  Etatprec[a]=0;
}
}

void loop() {

// déclaration des differents interrupteurs et bouton

vBouton1( 0, 0, 'r', NULL); // "1" sur le INS
vInterr2( 0, 1, 'i', NULL, 'I', NULL, 0);  //boust Pump Droite
vInterr2( 0, 2, 'u', NULL, 'U', NULL , 1);  //boust Pump gauche
vInterr3( 0, 3, 4, '5', NULL, '6', NULL, '7', NULL, 2);


delay(1);
}

void vBouton1(int iMCP, int iBroche, char cKey, int icKey){  //iMCP = numéro du mcp ; iBroche = numéro de la broche ; ckeyxxx = touche concerné ; icKey = touche complementaire
  if (mcp[iMCP].digitalRead(iBroche) == 0){
    Keyboard.press(icKey);
    Keyboard.press(cKey);
    delay(50);
    Keyboard.releaseAll();
    delay(100);
   }
}

void vInterr2(int iMCP, int iBroche, char cKeyUP, int icKeySUP, char cKeyDO, int icKeySDO, int x){ //iMCP = numéro du mcp ; iBroche = numéro de la broche ; ckeyxxx = touche concerné ; icKey = touche complementaire ; x = numéro de la variable état precedent

if (mcp[iMCP].digitalRead(iBroche) == 0){
    if (Etatprec[x] != 1){
    Keyboard.press(icKeySUP);
    Keyboard.press(cKeyUP);
    delay(50);
    Keyboard.releaseAll();
    Etatprec[x]=1;
    delay(10);
    }
}else{
if (Etatprec[x] != 0){
    Keyboard.press(icKeySDO);
    Keyboard.press(cKeyDO);
    delay(50);
    Keyboard.releaseAll();
    Etatprec[x]=0;
    delay(10);
    }
  }
}

void vInterr3(int iMCP, int iBrocheup, int iBrochedo, char cKeyMIL, int icKeySMIL, char cKeyUP, int icKeySUP,char cKeyDO, int icKeySDO, int x){ //iMCP = numéro du mcp ; iBroche = numéro de la broche ; icKey = touche complementaire ; ckeyxxx = touche concerné ; x = numéro de la variable état precedent

if (mcp[iMCP].digitalRead(iBrocheup) == LOW){
    if (Etatprec[x] != 1){
    Keyboard.press(icKeySUP);
    Keyboard.press(cKeyUP);
    delay(50);
    Keyboard.releaseAll();
    Etatprec[x]=1;
    delay(10);
    }
}else if(mcp[iMCP].digitalRead(iBrochedo) == LOW){
    if (Etatprec[x] != 2){
    Keyboard.press(icKeySDO);
    Keyboard.press(cKeyDO);
    delay(50);
    Keyboard.releaseAll();
    Etatprec[x]=2;
    delay(10);
    }
}else{
    if (Etatprec[x] != 0){
    Keyboard.press(icKeySMIL);
    Keyboard.press(cKeyMIL);
    delay(50);
    Keyboard.releaseAll();
    Etatprec[x]=0;
    delay(10);
    }
  }
}


j'avais comme idée:
Ajouter une boucles pour toutes les pins en input
AJouter tous les vInterr2, VInterr3 vBouton1.... dans la partie void setup()

J-M-L

#42
Mar 25, 2019, 12:56 pm Last Edit: Mar 25, 2019, 12:57 pm by J-M-L
Bravo, ça progresse

ça sent le besoin de tableaux et de struct... (et évitez les int pour stocker juste HIGH ou LOW)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

GregFou

Bonjour,

Je reviens vous donnez quelques news,

Dans un premier temps j'ai terminé quelques panneaux de la banquettes et j'ai testé les façades pour le rétro-éclairage mais l'encre sur le papier transparents autocollant ne tiens pas bien.

j'ai donc décollé le papier et j'ai terminer la structure de la banquettes complète. j'attends maintenant le vernis mat pour réitérer l'opérations de mise en place des façades.




A la prochaine  :)

GregFou

#44
Apr 05, 2019, 03:12 pm Last Edit: Apr 05, 2019, 03:13 pm by GregFou
Bonjour,

Je suis coincé....

Je viens de terminer le panneau droit, mais j'ai un soucis avec le code je pense ci-dessous
Code: [Select]

#include <Keyboard.h>
#include <Wire.h>
#include "Adafruit_MCP23017.h"

int Etatprec[4];  // Déclaration de la variable tableau, correspondant à l'état precedent de chacun des interrupteurs

Adafruit_MCP23017 mcp[5];

void setup() {

Keyboard.begin();
mcp[0].begin();
mcp[1].begin(1);
mcp[2].begin(2);
mcp[3].begin(3);
mcp[4].begin(4);

int j;
for (j=0; j<16; j++){
mcp[0].pinMode(j, INPUT);
mcp[0].pullUp(j, HIGH);
mcp[1].pinMode(j, INPUT);
mcp[1].pullUp(j, HIGH);
mcp[2].pinMode(j, INPUT);
mcp[2].pullUp(j, HIGH);
mcp[3].pinMode(j, INPUT);
mcp[3].pullUp(j, HIGH);
mcp[4].pinMode(j, INPUT);
mcp[4].pullUp(j, HIGH);
}


int a;    // Mise à 0 de tout les etats precedent des interrupteurs
for (a=0; a<5; a++){
  Etatprec[a]=0;
}
}
// etat precedent de 0 à 5 utilisé pour les rotateur donc faire demaré a 6.

void loop() {

// déclaration des differents interrupteurs et bouton

vBouton1( 0, 0, 'h', NULL); // DEMARRAGE MOTEUR

vInterr2( 0, 1, 'a', NULL, 'A', NULL, 0);  //boust Pump Droite
vInterr2( 0, 2, 'z', NULL, 'Z', NULL , 1);  //boust Pump gauche
vInterr2( 0, 3, 'e', NULL, 'E', NULL, 2);  //pump demarrage
vInterr2( 0, 4, 'e', NULL, 'E', NULL, 3);  //shut off valve

delay(1);
}

void vBouton1(int iMCP, int iBroche, char cKey, int icKey){ 
  //iMCP = numéro du mcp ; iBroche = numéro de la broche ; ckeyxxx = touche concerné ; icKey = touche complementaire
 
  if (mcp[iMCP].digitalRead(iBroche) == 0){
    Serial.print(cKey);
//    Keyboard.press(icKeySUP);
//    Keyboard.press(cKeyUP);
    delay(50);
    Keyboard.releaseAll();
    delay(80);
   }
}

void vInterr2(int iMCP, int iBroche, char cKeyUP, int icKeySUP, char cKeyDO, int icKeySDO, int x){
  //iMCP = numéro du mcp ; iBroche = numéro de la broche ; ckeyxxx = touche concerné ; icKey = touche complementaire ; x = numéro de la variable état precedent

if (mcp[iMCP].digitalRead(iBroche) == 0){
    if (Etatprec[x] != 1){
    Serial.print(cKeyUP);
//    Keyboard.press(icKeySUP);
//    Keyboard.press(cKeyUP);
    delay(50);
    Keyboard.releaseAll();
    Etatprec[x]=1;
    delay(10);
    }
}else{
if (Etatprec[x] != 0){
    Serial.print(cKeyDO);
//    Keyboard.press(icKeySDO);
//    Keyboard.press(cKeyDO);
    delay(50);
    Keyboard.releaseAll();
    Etatprec[x]=0;
    delay(10);
    }
  }
}

void vInterr3(int iMCP, int iBrocheup, int iBrochedo, char cKeyMIL, int icKeySMIL, char cKeyUP, int icKeySUP,char cKeyDO, int icKeySDO, int x){
  //iMCP = numéro du mcp ; iBroche = numéro de la broche ; icKey = touche complementaire ; ckeyxxx = touche concerné ; x = numéro de la variable état precedent

if (mcp[iMCP].digitalRead(iBrocheup) == LOW){
    if (Etatprec[x] != 1){
    Serial.print(cKeyUP);
//    Keyboard.press(icKeySUP);
//    Keyboard.press(cKeyUP);
    delay(50);
    Keyboard.releaseAll();
    Etatprec[x]=1;
    delay(10);
    }
}else if(mcp[iMCP].digitalRead(iBrochedo) == LOW){
    if (Etatprec[x] != 2){
    Serial.print(cKeyDO);
//    Keyboard.press(icKeySDO);
//    Keyboard.press(cKeyDO);
    delay(50);
    Keyboard.releaseAll();
    Etatprec[x]=2;
    delay(10);
    }
}else{
    if (Etatprec[x] != 0){
    Serial.print(cKeyMIL);
//    Keyboard.press(icKeySMIL);
//    Keyboard.press(cKeyMIL);
    delay(50);
    Keyboard.releaseAll();
    Etatprec[x]=0;
    delay(10);
    }
  }
}


Mon probleme est que: lorsque je rentre en valeurs de imcp = 0, dans les boutons, tout fonctionne et quand j'entre la valeurs des autre mcp cela ne fonctionne pas.

Mais je rentre le bouton seul sur la broche 0 de n'importe quel autre mcp que le 0 cela fonctionne également.

Je suis coincé... :smiley-confuse:  :smiley-confuse:

voici les images du montage : (je suis branché sur le mcp 1 dans les photos)






Go Up