École de Simulation de Combat Aérien - DCS World
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Aller en bas
morgosth
morgosth
Pilote de la 8e Escadre
Pilote de la 8e Escadre
Qualification N0
Qualification N0 dans le cursus tronc commun de l'ESCA
Élève UH-1H
Localisation : Angers
Messages : 110

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

Mar 21 Déc - 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
Pilote de la 8e Escadre
Pilote de la 8e Escadre
100 Heures de Vol
Seuil de 100 Heures de Vol atteint au sein de l'ESCA
Élève M-2000C
Localisation : Douai
Messages : 84

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

Mar 15 Mar - 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
Pilote de la 8e Escadre
Pilote de la 8e Escadre
Qualification N0
Qualification N0 dans le cursus tronc commun de l'ESCA
100 Heures de Vol
Seuil de 100 Heures de Vol atteint au sein de l'ESCA
Élève UH-1H
Localisation : Jallans
Messages : 160

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

Lun 1 Aoû - 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