É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
Hugo
Hugo
Pilote de la 8e Escadre
Pilote de la 8e Escadre
Qualification N0 - T-45C
Qualification N0 dans le cursus T-45C (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 : 144

Programmation arduino Empty Programmation arduino

Lun 8 Aoû - 15:38
Bonjour,
j'ai reçu des encodeurs rotatifs KY-040.

Je n'arrive pas à les faire fonctionner. J'ai beau regarder les explications je sèche.

Je suis certain que :
-DCS-bios interagit avec DCS car lorsque je change la fréquence ADF, cela est retranscrit dans DCS Bios.

L'encodeur a 5 broches.
GND que je connecte  sur GND
+      que je connecte sur 5V
SW    pur l'instant pas connecté, c'est la fonction bouton
DT (bande A) connecté broche 5
CLK (bande B) connecté broche 6

Le code entré dans Arduino est le suivant:

Code:
/*
  Tell DCS-BIOS to use a serial connection and use interrupt-driven
  communication. The main program will be interrupted to prioritize
  processing incoming data.
  
  This should work on any Arduino that has an ATMega328 controller
  (Uno, Pro Mini, many others).
 */
#define DCSBIOS_IRQ_SERIAL

#include "DcsBios.h"
#include "RotaryEncoder.h"

/* paste code snippets from the reference documentation here */
DcsBios::RotaryEncoder adfTune("ADF_TUNE", "-3200", "+3200", 5, 6);

void setup() {
  DcsBios::setup();
}

void loop() {
  DcsBios::loop();
}


J'ai également essayé sur des pins analogiques mais sans succès.

Si l'un d'entre vous a la solution, ce sera mon héro du jour. Very Happy

buffalo aime ce message

Hugo
Hugo
Pilote de la 8e Escadre
Pilote de la 8e Escadre
Qualification N0 - T-45C
Qualification N0 dans le cursus T-45C (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 : 144

Programmation arduino Empty Re: Programmation arduino

Lun 8 Aoû - 19:47
Bon, et bien après avoir passé plusieurs heures à trifouiller, je pense qu'en fait ma carte ne communique pas avec dcs bios.

Programmation arduino Hub10
COM3 ne passe jamais au vers. 

Sinon, dans mon fichier script, j'ai inséré
Programmation arduino Dcs_co10
Auriez vous une idée pur connecter tout ça???
Merci

buffalo aime ce message

Hugo
Hugo
Pilote de la 8e Escadre
Pilote de la 8e Escadre
Qualification N0 - T-45C
Qualification N0 dans le cursus T-45C (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 : 144

Programmation arduino Empty Re: Programmation arduino

Mar 9 Aoû - 14:43
Bon et bien ça fonctionne !!!  Very Happy Very Happy Very Happy

Pour ceux qui vont bientôt faire leur boite à boutons, voici ce dont je me suis rendu compte pour que cela fonctionne.

1°/ connecter son Arduino AVANT d'ouvrir DCS Bios
1bis°/ouvrir DCS WORLD - une mission au choix et entrer dans l'hélico.
2°/ AVANT de téléverser le code sur la carte Arduino (à partir de l'appli Arduino) , il faut déconnecter la carte dans l'appli DCS Bios.
3°/ une fois le transfert terminé, reconnecter la carte dans DCS Bios.
4°/ Allez sur DCS world et recharger l'hélicoptère (Rybackerie).

Il ne me reste plus qu'à attendre le reste des switch, et de trouver un support.

Je reste dispo pour ceux qui auraient des difficultés. 

En tout cas pour le réglage de l'ADF c'est super cool. Fini la molette de la souris pendant 3 heures. En 3 rotations complètes, parcours de la bande.

Salut les costauds et vive les caïmans


Dernière édition par Hugo le Mar 9 Aoû - 16:59, édité 1 fois

buffalo aime ce message

FullGas
FullGas
Pilote de la 8e Escadre
Pilote de la 8e Escadre
Qualification N1 - UH-1H
Qualification N1 dans le cursus UH-1H Huey de l'ESCA
Qualification N2 - UH-1H
Qualification N2 dans le cursus UH-1H Huey de l'ESCA
Qualification N3 - UH-1H
Qualification N3 dans le cursus UH-1H Huey de l'ESCA
100 Heures de Vol
Seuil de 100 Heures de Vol atteint au sein de l'ESCA
Instructeur UH-1H
  Membre du conseil de surveillance
Localisation : Maule - 78
Messages : 365

Programmation arduino Empty Re: Programmation arduino

Mar 9 Aoû - 15:08
Salut Hugo, interressant ton montage.

Je suis en congés, donc pas possible de communiquer pour l'instant. Mais si tu veux, à mon retour je pourrai t'expliquer comment je me suis bricolé une boite à boutons un peu differente de la tienne.

En fait, je n'utilise pas dcs bios, mais simplement une boite qui est reconnue comme un périphérique usb standard. Du coup, je peux simplement la mapper comme un joystick avec n'importe quel appreil de dcs.

Si ça t'interresse, je pourrai faire une petite présentation ici, et partager des précisions sur le projet que j'ai réalisé.

A+  jocolor

Killight, Sushimi, Hugo et buffalo aiment ce message

Hugo
Hugo
Pilote de la 8e Escadre
Pilote de la 8e Escadre
Qualification N0 - T-45C
Qualification N0 dans le cursus T-45C (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 : 144

Programmation arduino Empty Re: Programmation arduino

Mar 9 Aoû - 15:39
Salut @Fullgas,

Yes j'ai vu qu'il y avait un autre système plus simple que DCS mais comme j'avais déjà une Arduino, je suis parti là-dessus. 

Si ton système fonctionne avec une carte Arduino, je suis aussi partant et je pense que d'autres seront aussi intéressés et choisir comment faire leur boxe.

Bonnes vacances à toi.

buffalo aime ce message

Hugo
Hugo
Pilote de la 8e Escadre
Pilote de la 8e Escadre
Qualification N0 - T-45C
Qualification N0 dans le cursus T-45C (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 : 144

Programmation arduino Empty Re: Programmation arduino

Jeu 11 Aoû - 16:01
Le projet avance bien,
Petit point d'étape.
Bien évidemment c'est une maquette avant la réalisation finale, histoire de voir  l'ergonomie.
Je suis content car j'ai même réussi à configurer l'afficheur Lcd_I2C.

Seul petit problème,
La conversion de l'ADF et je n'arrive pas à trouver le cap dans dcs bios.
Si quelqu'un a une idée ce serait génial.

Pour l'ergonomie j'ai d'abord fait un schéma des fonctions que je souhaitais puis réalisation.


Programmation arduino Img_2010
Programmation arduino Img_2011

buffalo aime ce message

Hugo
Hugo
Pilote de la 8e Escadre
Pilote de la 8e Escadre
Qualification N0 - T-45C
Qualification N0 dans le cursus T-45C (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 : 144

Programmation arduino Empty Re: Programmation arduino

Dim 14 Aoû - 19:43
Programmation arduino Img_2012

buffalo aime ce message

Hugo
Hugo
Pilote de la 8e Escadre
Pilote de la 8e Escadre
Qualification N0 - T-45C
Qualification N0 dans le cursus T-45C (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 : 144

Programmation arduino Empty Re: Programmation arduino

Sam 20 Aoû - 17:30
Bon et bien là c'est beaucoup plus propre, 
j'ai pris une boite de dérivation chez brico dépôt.
C'est la maquette 2 qui m'a encore permis de voir quelque petits trucs.
Pas certain de garder les LED.
Dans la version finale, l'affichage sera blanc sur fond noir.
Programmation arduino Img_2013

Killight, wanegen, Eltarius, Tango, Sushimi, Arcools, buffalo et Zagard aiment ce message

Eltarius
Eltarius
Pilote de la 8e Escadre
Pilote de la 8e Escadre
Localisation : Ardèche: Meysse
Messages : 18

Programmation arduino Empty Re: Programmation arduino

Lun 5 Sep - 13:02
@hugo pour ton afficheur LCD I2C, tu récupères une data brut via DCS BIOS et tu laffiches tel quel ou tu récupéres plusieurs data que tu affiches où tu veux sur l'afficheur?
Je t'avoue que je vais probablement en mettre un aussi d'afficheur du coup si tu pouvais partager une partie du code correspondant ça m'aiderai à mieux y comprendre aussi Wink

Hugo aime ce message

Hugo
Hugo
Pilote de la 8e Escadre
Pilote de la 8e Escadre
Qualification N0 - T-45C
Qualification N0 dans le cursus T-45C (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 : 144

Programmation arduino Empty Re: Programmation arduino

Lun 5 Sep - 23:20
voici le code.
J'ai laissé uniquement la partie écran LCD.

Normalement tu devrais t'en sortir.

Code:
/*PANEL By HUGO
 * Avec Arduino MEGA 2560
 * je laisse les PIN 20/21 disponibles pour utiliser un liquidcrystal I2C (ultérieurement)
Du coup, tu dois brancher +5V et masse. Les 2 autres broches sur 20/21
Quand tu déclare le liquidcrystal, ça incrémente en automatique les PINs.
*/

//Bibliotheques utilisées
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DCSBIOS_IRQ_SERIAL
#include "DcsBios.h"

/* paste code snippets from the reference documentation here */


//liquidcrystal_I2C
LiquidCrystal_I2C lcd(0x27,16,2);
//frequence ADF
void onAdfFreqChange(unsigned int newValue) {
    /* your code here */

    lcd.setCursor(0,1);
    lcd.print("ADF:");
    lcd.setCursor(4,1);
    lcd.print("     ");
    lcd.setCursor(4,1);
    lcd.print(newValue);
}
DcsBios::IntegerBuffer adfFreqBuffer(0x1426, 0xffff, 0, onAdfFreqChange);

//fréquznce FM
  
void onVhffmFreq1Change(char* newValue) {
    /* your code here */
    lcd.setCursor(0,0);
    lcd.print("FM :");
    lcd.setCursor(4,0);
    lcd.print(newValue);
}
DcsBios::StringBuffer<1> vhffmFreq1Buffer(0x14ec, onVhffmFreq1Change);

//cap
void onSbyCompassHdgChange(unsigned int newValue) {
    /* your code here */
    lcd.setCursor(9,1);
    lcd.print("CAP:");
    lcd.setCursor(13,1);
    lcd.print("   ");
    lcd.setCursor(13,1);
    lcd.print(newValue);
}
DcsBios::IntegerBuffer sbyCompassHdgBuffer(0x153a, 0xffff, 0, onSbyCompassHdgChange);
void onVhffmFreq2Change(unsigned int newValue) {
    /* your code here */
    lcd.setCursor(5,0);
    lcd.print(newValue);
}
DcsBios::IntegerBuffer vhffmFreq2Buffer(0x14e8, 0x0f00, 8, onVhffmFreq2Change);

//altitude

void onAltMslFtChange(unsigned int newValue) {
    /* your code here */
    lcd.setCursor(7,0);
    lcd.print("ALT:");
    lcd.setCursor(11,0);
    lcd.print("     ");
    lcd.setCursor(11,0);
    lcd.print(newValue);
}
DcsBios::IntegerBuffer altMslFtBuffer(0x0434, 0xffff, 0, onAltMslFtChange);
void setup() {
lcd.init();
lcd.backlight();
lcd.clear();
    DcsBios::setup();
    
}

void loop() {
  
  DcsBios::loop();
}

Pour chaque item, il y a une ligne "        ", c'est un moyen facile de réinitialiser l'affichage de l'item avant d'afficher la nouvelle valeur.

il faudra bien que tu compte le nombre d'espaces par valeur.
Attention la première position de la ligne est zéro, la seconde 1, la troisième 2....

Y a plus qu'à.
GO l'ami

Killight et Eltarius aiment ce message

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