DCS World - École de Simulation de Combat Aérien
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Aller en bas
morgosth
morgosth
Qualification N0
Qualification N0 obtenue dans le cursus tronc commun (T-45C) de l'ESCA
Pilote de la 8e Escadre de Chasse Virtuelle
A publié suffisament de messages sur le forum pour accéder au contenu réservé aux membres de l'école et de la 8e Escadre
Vide
Vide
Localisation : Angers
Messages : 110

cherche personne qualifiée Arduino Empty cherche personne qualifiée Arduino

Mar 21 Déc 2021 - 23:36
cherche personne qualifiée Arduino Img_2019Salut, j ai realisé mon premier panel et pour des questions de nombre d'entrées, j ai choisi d'utiliser une leonardo couplée à une micro. N'ayant jamais fait d'arduino, chaque etape est une aventure... bref, j ai connecté 56 boutons en matrice clavier cherche personne qualifiée Arduino 300px-Schema_matrice_clavier_avec_diodes
avec ce programme:
Code:
#include <Keypad.h>
#include <Joystick.h>

#define ENABLE_PULLUPS

#define NUMBUTTONS0 28
#define NUMBUTTONS1 28
#define NUMROWS0 4
#define NUMCOLS0 7
#define NUMROWS1 4
#define NUMCOLS1 7

#define JOYSTICK_COUNT 2

#define NUMBUTTONS0 28
#define NUMBUTTONS1 28
#define NUMROWS0 8
#define NUMCOLS0 4
#define NUMROWS1 8
#define NUMCOLS1 3

#define JOYSTICK_COUNT 2


byte buttons0[NUMROWS0][NUMCOLS0] = {
  {0, 8, 16, 24},
  {1, 9, 17, 25},
  {2, 10, 18, 26},
  {3, 11, 19, 27},
  {4, 12, 20, 28},
  {5, 13, 21, 29},
  {6, 14, 22, 30},
  {7, 15, 23, 31},      
};

byte buttons1[NUMROWS1][NUMCOLS1] = {
  {0, 8, 16},
  {1, 9, 17},
  {2, 10, 18},
  {3, 11, 19 },
  {4, 12, 20},
  {5, 13, 21,},
  {6, 14, 22},
  {7, 15, 23},
};
byte rowPins0[NUMROWS0] = {3,4,5,6,7,8,9,10};
byte colPins0[NUMCOLS0] = {11,12,13,A0};

byte rowPins1[NUMROWS1] = {3,4,5,6,7,8,9,10};
byte colPins1[NUMCOLS1] = {A1,A2,A3};

Keypad buttbx = Keypad( makeKeymap(buttons0), rowPins0, colPins0, NUMROWS0, NUMCOLS0);
Keypad buttbx1 = Keypad( makeKeymap(buttons1), rowPins1, colPins1, NUMROWS1, NUMCOLS1);

Joystick_ Joystick[JOYSTICK_COUNT] = {
  Joystick_ (0x04, JOYSTICK_TYPE_JOYSTICK, 32, 0, true, true, true, true, true, true, false, false, false, false, false),
  Joystick_ (0x05, JOYSTICK_TYPE_MULTI_AXIS, 32, 2, true, true, true, true, true, true, false, false, false, false, false)
};

void setup() {
  Joystick[0].begin();
  Joystick[1].begin();

}

void loop() {
  CheckAllButtons0();
  CheckAllButtons1();

}

void CheckAllButtons0(void) {
  if (buttbx.getKeys())
  {
    for (int i = 0; i < LIST_MAX; i++)
    {
      if ( buttbx.key[i].stateChanged )
      {
        switch (buttbx.key[i].kstate) {
          case PRESSED:
          case HOLD:
            Joystick[0].setButton(buttbx.key[i].kchar, 1);
            break;
          case RELEASED:
          case IDLE:
            Joystick[0].setButton(buttbx.key[i].kchar, 0);
            break;
        }
      }
    }
  }
}
  void CheckAllButtons1(void) {
    if (buttbx1.getKeys())
    {
      for (int i = 0; i < LIST_MAX; i++)
      {
        if ( buttbx1.key[i].stateChanged )
        {
          switch (buttbx1.key[i].kstate) {
            case PRESSED:
            case HOLD:
              Joystick[1].setButton(buttbx1.key[i].kchar, 1);
              break;
            case RELEASED:
            case IDLE:
              Joystick[1].setButton(buttbx1.key[i].kchar, 0);
              break;
          }
        }
      }
    }
  }



Et ça fonctionne parfaitement!!! super, mais maintenant, je m arrache les cheveux 
il me reste deux switchs, un rotatif 9pin, un autre 4 pin et deux potentiometres.
voilà mes questions:
1- comment coupler les deux cartes? et comment vont elles travailler ensemble?
(oui j'ai triché, deux questions en une)
2- comment inserer les nouveaux codes dans celui dejà existant?
Merci d'avance rendeer

Killight et Fagui aiment ce message

Flow
Flow
Qualification N1 - Mirage 2000C
Qualification N1 obtenue dans le cursus Mirage 2000C de l'ESCA
100 Heures de Vol
Seuil de 100 Heures de Vol atteint au sein de l'ESCA
Pilote de la 8e Escadre de Chasse Virtuelle
A publié suffisament de messages sur le forum pour accéder au contenu réservé aux membres de l'école et de la 8e Escadre
Moniteur M-2000C
Vide
Localisation : Valence
Messages : 155

cherche personne qualifiée Arduino Empty Re: cherche personne qualifiée Arduino

Mar 15 Mar 2022 - 15:57
Salut @morgosth ,

Déjà joli boulot ton panel rend vraiment bien avec les retour LED , franchement chapeau Prosternation .

Pour le coté technique je vais essayer de replonger dans mes souvenir d'école (c'est pas si loin pourtant).

D'abord as tu-besoin de faire communiquer les deux ? Je m'explique si chacun gère une partie du panel de manière indépendante tu peux très bien les faire tourner en parallèle, comme avec un HOTAS ou tu as les Throttle et le Joystick connecté chacun avec son USB.

Après si elle ont besoin de travailler ensemble pour la gestion des leds/bouton, unique USB ou autres tu as plusieurs possibilités pour faire discuter deux Arduino : le Wi-Fi , le Bluetooth ou bien le filaire. Les deux premières solution sont plus lourdes et nécessite d'avoir des cartes équipés de module en conséquences. Le filaire se fait grâce aux Bus I2C. Il te permet de t'envoyer des messages simples entre tes cartes maitres et esclave(s). Et à réception du message selon son contenu tu peut effectuer l'action désirée. Il y a une explication et utilisation de l'I2C intéressante sur ce site : I2C Tuto. N'hésites pas à tester indépendamment de ton programme actuelle pour éviter de trop te compliquer la vie.

Par curiosité, du coup ton panel réagit comme un Joystick et tu configures les touches dans DCS ou tu as utilisé DCS bios pour gérer les retours lumières ?

Et je suis à disposition si tu as d'autres questions, je pourrais me replonger plus dedans pour t'aider plus amplement au besoin. Je doit avouer que l'idée du panel Arduino pour le 2000 m'as effleuré à l'esprit à plusieurs reprises du coup ca m'intéresse aussi  Wink

Bonne journée,
Flow

Killight et morgosth aiment ce message

Hugo
Hugo
Qualification N0
Qualification N0 obtenue dans le cursus tronc commun (T-45C) de l'ESCA
100 Heures de Vol
Seuil de 100 Heures de Vol atteint au sein de l'ESCA
Pilote de la 8e Escadre de Chasse Virtuelle
A publié suffisament de messages sur le forum pour accéder au contenu réservé aux membres de l'école et de la 8e Escadre
Élève UH-1H
Vide
Localisation : Jallans
Messages : 302

cherche personne qualifiée Arduino Empty Re: cherche personne qualifiée Arduino

Lun 1 Aoû 2022 - 11:42
Bravo, très belle réalisation. Je compte me faire une boîte à boutons également.
Pourrais tu me dire quels boutons 2 et 3 positions tu as utilisé.
De même qu'as tu pris pour les boutons rotatifs ? Et les têtes de potar.
Merci

Killight aime ce message

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum