Débuguage et optimisation code.

Modérateur : Dehas

Avatar du membre
Tomdu38
Pilote toutes catégories
Messages : 1104
Enregistré le : dim. 19 mai 2013 17:01
Réputation : 0

Re: Débuguage et optimisation code.

Message non lu par Tomdu38 »

Je pense que dans ce code tu peux choisir l'ordre des voix, il faut juste les "taper" dans le bon ordre

Pour les gaz en voie 3 :

Code : Tout sélectionner

enum chan_order{
  AILERON,
  ELEVATOR,
  THROTTLE,
  RUDDER,
  AUX1,
  AUX2
};
Pour gaz en voie 1 ça devrait être :

Code : Tout sélectionner

enum chan_order{
  THROTTLE,
  ELEVATOR,
  AILERON,
  RUDDER,
  AUX1,
  AUX2
};
ATTENTION : Je ne suis pas sur de l'ordre des autres voies, j'ai juste inverser Throttle et Aileron

Pour le montage, je pense qu'il faut juste "splitter" le signal ppm. 3 fils vers la CC3D et 3 fils vers un microcontrolleur style Attyni85 avec une alimentation en parallèle pour Le rx + l'attyni + la CC3D + les neopixels en +5V (Ne pas alimenter les leds par un output de l'attyni) : Attention à l'ampérage max

Pour le signal ppm, un vers input attyni et l'autre vers la CC3D.

Il me semble que ça devrait marcher comme ça !

A+


Service de découpe CNC pour les membres du forum NON DISPO POUR LE MOMENT
FPV Racer 250 (HomeMade)
*** In 4S high trust ***
Avatar du membre
vilajea1
Tricopter
Messages : 69
Enregistré le : ven. 10 mai 2013 15:34
Réputation : 0
Localisation : 74160-près de Genève

Re: Débuguage et optimisation code.

Message non lu par vilajea1 »

oui pour l'ordre des voies c'est simple, mais je voyait plutôt un bouton poussoir qui permet de faire le changement de mode de vol, par contre pour les autres modes de transmission autre que ppm, c'est faisable ?


Bientôt Yunnec Typhonn H
Vortex pro 250 immersionRC
Vortex 285 immersionRc
Xugong V2
Radio Jeti DS-16
FF9 Futaba UHF immersion RC
Trex 550, mini V-bar
Gopro 4, Mobius

....
Avatar du membre
Tomdu38
Pilote toutes catégories
Messages : 1104
Enregistré le : dim. 19 mai 2013 17:01
Réputation : 0

Re: Débuguage et optimisation code.

Message non lu par Tomdu38 »

Un bouton poussoir ??? je ne comprends pas ! c'est pour une application en multirotor ? ou tu veux simplement indiquer tes modes de vols par des indicateurs de couleurs ?

Pour le reste, oui tout est faisable... faut juste voir l'utilité... développer ou modifier un code pour 2 personnes ???

Pour le Sbus, sauf erreur de ma part, ce n'est pas encore le standard des contrôleurs de vol ! en général Pwm, PPM. Dans le cas de rx sbus, on peut utiliser un Sbus to PPM converter.

Pour le PWM, on doit pouvoir utiliser un code similaire à celui du PPM. Dans ce cas, on est pas obligé de préciser quelle pulsation lire, puisque dans le PWM on aurait : une voie = un input. Or dans le PPM on a 8 voies sur un input.

A+

Tom


Service de découpe CNC pour les membres du forum NON DISPO POUR LE MOMENT
FPV Racer 250 (HomeMade)
*** In 4S high trust ***
Avatar du membre
CoyotteDundee
Tricopter
Messages : 138
Enregistré le : mer. 19 mars 2014 08:02
Réputation : 0
Localisation : Liège
Genre :
Contact :

Re: Débuguage et optimisation code.

Message non lu par CoyotteDundee »

Hello Dehas,

Post intéressant...
Par contre, il y a des "trous" dans le code fourni. Ce n'est pas catastrophique mais ce n'est pas propre ;-) :

Code : Tout sélectionner

 //detection de l'absence d'un creneau radio valide (<900ms), flash LED specifique
 if (ch1<900)
 {
     //séquence de flash failsafe, jouez a modifiez les valeurs de delay du ON et du OFF                   
 }
    //séquence de flash entre 1000 et 1250ms (de 0 a 25% des gaz)
 if ((ch1>1000) && (ch1<1250))
 {
 }                     
 //séquence de flash entre 1250 et 1500ms (de 25 a 50% des gaz)
 if ((ch1>1250) && (ch1<1500))
 {
 }
 //séquence de flash entre 1500 et 1750ms (de 50 a 75% des gaz)
 if ((ch1>1500) && (ch1<1750))
 {
 ...
Pour la clarté, j'ai viré le code utile pour ne garde que les tests. Que se passe-t-il si ch1 vaut exactement 1000, ou 1250 ou 1500 ?
RIen ! :-)
Le bon test devrait inclure un > et un <= comme dans

Code : Tout sélectionner

  if ((ch1>1000) && (ch1<=1250))
  {
  }                     
  //séquence de flash entre 1250 et 1500ms (de 25 a 50% des gaz)
  if ((ch1>1250) && (ch1<=1500))
  {
  }
D'autre part, a lire le code, il semble que une fois que l'on est dans une des fourchettes, on n'est pas dans l'autre. Or ici, toutes les fourchettes sont testées même si l'on a déjà traité l'info.
La première approche qui avait été faite, en "else if", est plus optimisée mais il faut la prendre à l'envers :

Code : Tout sélectionner

 if (ch1>1500)  // On part du haut et on redescend
  {
  }                     
  else if (ch1>1250) // > 1250 (mais <= 1500 à cause du test précédent)
  {
  }
else if (ch1>1000)  // > 100 (mais <= 1250 à cause des tests précédents)
  { 
  }
  ...
Voilà... Ce ne sont que quelques idées, bien évidement. ;-)

Coyotte



Taranis X9D 2.1.8 / Horus 2.2 RC18
Avec OpenTx 2.0, la question n'est plus "Est-ce possible ?" mais "Comment faire pour... ?"
Avec OpenTx 2.1, la question devient "Mais jusqu'où s'arrêteront-ils ?"
Avatar du membre
vilajea1
Tricopter
Messages : 69
Enregistré le : ven. 10 mai 2013 15:34
Réputation : 0
Localisation : 74160-près de Genève

Re: Débuguage et optimisation code.

Message non lu par vilajea1 »

Tomdu38 a écrit :Un bouton poussoir ??? je ne comprends pas ! c'est pour une application en multirotor ? ou tu veux simplement indiquer tes modes de vols par des indicateurs de couleurs ?

Pour le reste, oui tout est faisable... faut juste voir l'utilité... développer ou modifier un code pour 2 personnes ???

Pour le Sbus, sauf erreur de ma part, ce n'est pas encore le standard des contrôleurs de vol ! en général Pwm, PPM. Dans le cas de rx sbus, on peut utiliser un Sbus to PPM converter.

Pour le PWM, on doit pouvoir utiliser un code similaire à celui du PPM. Dans ce cas, on est pas obligé de préciser quelle pulsation lire, puisque dans le PWM on aurait : une voie = un input. Or dans le PPM on a 8 voies sur un input.

A+

Tom
Le but est d'avoir un module prêt a l'emploi pour ceux qui ne programme pas.

Genre : tu fourni les modules dans un club et pas besoin de retoucher le code en fonction des utilisateurs et leurs modes de vol.

Ils programment directement sur les modules fourni, par le biais d'un bouton poussoir et une led indiquant le mode (1 flash = mode 1, 2 flash = mode 2,...).
En fonction du type de modulation (PPM, S-bus,...) un cavalier a mettre sur le module et hop modulation selon l'utilisateur.

Je sais pas si c'est vraiment utile mais au WWS Team plusieurs pilote sont en modulation différente.

A voir si intérêt pour d'autre, mais merci pour tes conseils :-)

Une autre question : quel type de matériel faut t'il prévoir pour faire des CI en mode anglaise comme Will... (un lien sur le matériel peut être ?).

A+


Bientôt Yunnec Typhonn H
Vortex pro 250 immersionRC
Vortex 285 immersionRc
Xugong V2
Radio Jeti DS-16
FF9 Futaba UHF immersion RC
Trex 550, mini V-bar
Gopro 4, Mobius

....
Avatar du membre
Tomdu38
Pilote toutes catégories
Messages : 1104
Enregistré le : dim. 19 mai 2013 17:01
Réputation : 0

Re: Débuguage et optimisation code.

Message non lu par Tomdu38 »

Pour la réalisation de CI, à ma connaissance, 3 techniques :

- La gravure à l'anglaise : il faut une petite CNC ou une imprimante 3D avec un petite fraiseuse (un moteur brushless ça marche !!!) avec une fraise à graver.

- La gravure chimique : il faut une insoleuse UV ( Un scanner bricolé avec des led Uv ou des néons ça marche, j'en avais fait une ;)) et ensuite c'est plusieurs bains chimiques (2 bains différents, avec des rinçages à l'eau).
On utilise des produits spécifiques comme le perchlorure de fer ...etc. Tu peux aussi le faire avec des produits ménagers (cf tuto sur instructable).

- La réalisation de circuit avec des encres conductrices. En gros, un stylo avec une encre spécifique et tu dessines ton circuit... il faut voir la durée de vie, et l'épaisseur de cuivre avec le max d'ampère que tu peux faire passer.

Voilà en gros !

A+

PS : Il me semble que willmodelisme utilise la méthode 2.


Service de découpe CNC pour les membres du forum NON DISPO POUR LE MOMENT
FPV Racer 250 (HomeMade)
*** In 4S high trust ***
Avatar du membre
vilajea1
Tricopter
Messages : 69
Enregistré le : ven. 10 mai 2013 15:34
Réputation : 0
Localisation : 74160-près de Genève

Re: Débuguage et optimisation code.

Message non lu par vilajea1 »

Super merci pour les infos. Ça me plaît bien la gravure à l anglaise reste à trouver le matos pas trop cher et plug and play si c est possible :-)


Bientôt Yunnec Typhonn H
Vortex pro 250 immersionRC
Vortex 285 immersionRc
Xugong V2
Radio Jeti DS-16
FF9 Futaba UHF immersion RC
Trex 550, mini V-bar
Gopro 4, Mobius

....
Avatar du membre
willmodelisme
Pilote toutes catégories
Messages : 2095
Enregistré le : sam. 2 juin 2012 17:20
Réputation : 0
Localisation : essonne 91

Re: Débuguage et optimisation code.

Message non lu par willmodelisme »

La gravure a l'anglaise est faite avec une fraiseuse. Numérique ou à la main.
On élève le cuivre pour délimiter des pistes.

J' utilise la méthode chimique, typon imprimé sur transparent, insolation de plaque pré-sensibilisée avec une insoleuse LED, révélation avec de la soude caustique diluée puis gravure chimique avec eau oxygénée + acide chlorhydrique.
Avantage de cette méthode, tous les produits se trouvent au brico du coin ou au super-marché (sauf la plaque présensi. et les LED UV ;) ebay ou amazon )
Les transparents pour imprimante jet d'encre ne sont pas facile à trouver non plus....(y en a sur amazon).


Image
Avatar du membre
Tomdu38
Pilote toutes catégories
Messages : 1104
Enregistré le : dim. 19 mai 2013 17:01
Réputation : 0

Re: Débuguage et optimisation code.

Message non lu par Tomdu38 »

@vilajea1 : la gravure chimique sera la plus accessible. L'investissement est aussi moins lourd à moins d'avoir déjà une CNC ou une imprimante 3D. Pour les typons, je complète le propos de willmodelisme,tu peux le faire avec une imprimante jet d'encre ça marche aussi, mais faut des transparents spéciaux pour jet d'encre, et imprimer avec la meilleur résolution possible.
(j'avais fait mon premier circuit comme ça pour ma première carte de vol sur base arduino et imu 10 dof, ... )

Voici la V2 : http://multi-rotor-fans-club.com/viewto ... =36&t=2371" onclick="window.open(this.href);return false;

En finition , tu peux faire un étamage à froid.

A+


Service de découpe CNC pour les membres du forum NON DISPO POUR LE MOMENT
FPV Racer 250 (HomeMade)
*** In 4S high trust ***
Avatar du membre
willmodelisme
Pilote toutes catégories
Messages : 2095
Enregistré le : sam. 2 juin 2012 17:20
Réputation : 0
Localisation : essonne 91

Re: Débuguage et optimisation code.

Message non lu par willmodelisme »

Sinon j'avais pensé à une laser monochrome pour les typons, une d'occasion, là c'est top.
Je les fais parfois au boulot.

Sinon, laser ou jet d'encre, je double les typons en les superposant pour avoir un noir parfait.


Image
Avatar du membre
Dehas
Administrateur du site
Messages : 16171
Enregistré le : ven. 3 juin 2011 12:50
Réputation : 5
Localisation : Saint Dié des Vosges
Genre :
Contact :

Re: Débuguage et optimisation code.

Message non lu par Dehas »

Ou achetez vous les barrette de leds adressable type adafruit, car quand je vois le prix ça fait reculer, ça vas du simple au triple même sur Ebay !!


Avatar du membre
willmodelisme
Pilote toutes catégories
Messages : 2095
Enregistré le : sam. 2 juin 2012 17:20
Réputation : 0
Localisation : essonne 91

Re: Débuguage et optimisation code.

Message non lu par willmodelisme »

Un seul site pour moi:
http://www.adafruit.com/neopixel" onclick="window.open(this.href);return false;


Image
Avatar du membre
Dehas
Administrateur du site
Messages : 16171
Enregistré le : ven. 3 juin 2011 12:50
Réputation : 5
Localisation : Saint Dié des Vosges
Genre :
Contact :

Re: Débuguage et optimisation code.

Message non lu par Dehas »

Oui, je l'ai vue celui la, mais je ne trouve pas les FDP, car d'habitude les FDP des US sont exorbitants.


Avatar du membre
Dehas
Administrateur du site
Messages : 16171
Enregistré le : ven. 3 juin 2011 12:50
Réputation : 5
Localisation : Saint Dié des Vosges
Genre :
Contact :

Re: Débuguage et optimisation code.

Message non lu par Dehas »

C'est bien ce que je disais, 5,95$ la barrette et 9,15$ de FDP !!! ça fais 15,10$ soit environ 13,92€ pour une barrette !!


Avatar du membre
willmodelisme
Pilote toutes catégories
Messages : 2095
Enregistré le : sam. 2 juin 2012 17:20
Réputation : 0
Localisation : essonne 91

Re: Débuguage et optimisation code.

Message non lu par willmodelisme »

http://www.banggood.com/5Pcs-CJMCU-8-Bi ... 61344.html" onclick="window.open(this.href);return false;

http://www.banggood.com/50CM-36-SMD-505 ... 36919.html" onclick="window.open(this.href);return false;


Image
Avatar du membre
vilajea1
Tricopter
Messages : 69
Enregistré le : ven. 10 mai 2013 15:34
Réputation : 0
Localisation : 74160-près de Genève

Re: Débuguage et optimisation code.

Message non lu par vilajea1 »

Moi je prend chez semageek.com ou mchobby et les originaux car les copies pas les même dimension et qualité pas très top !.

Les ports sont gratuit sur bg http://www.banggood.com/5Pcs-CJMCU-8-Bi ... 61344.html" onclick="window.open(this.href);return false; pour 5 pieces.


Bientôt Yunnec Typhonn H
Vortex pro 250 immersionRC
Vortex 285 immersionRc
Xugong V2
Radio Jeti DS-16
FF9 Futaba UHF immersion RC
Trex 550, mini V-bar
Gopro 4, Mobius

....
Avatar du membre
willmodelisme
Pilote toutes catégories
Messages : 2095
Enregistré le : sam. 2 juin 2012 17:20
Réputation : 0
Localisation : essonne 91

Re: Débuguage et optimisation code.

Message non lu par willmodelisme »

Voici le lien de vilajea1 avec juste les neopixel:

https://boutique.semageek.com/fr/recher ... y=neopixel" onclick="window.open(this.href);return false;


Image
Avatar du membre
Tomdu38
Pilote toutes catégories
Messages : 1104
Enregistré le : dim. 19 mai 2013 17:01
Réputation : 0

Re: Débuguage et optimisation code.

Message non lu par Tomdu38 »

Les noms de référence des Leds sont :
- ws2812 : Led avec 6 pattes de connections
- ws2812B : Led avec 4 pattes de connections

J'ai acheté les miennes sur Ebay, à un revendeur Allemand pour une dizaine d'€ fdp in ! c'est un peu cher, mais rapide !

A+

Tom


Service de découpe CNC pour les membres du forum NON DISPO POUR LE MOMENT
FPV Racer 250 (HomeMade)
*** In 4S high trust ***
Avatar du membre
Papi78
Pilote toutes catégories
Messages : 3277
Enregistré le : ven. 3 mai 2013 12:13
Réputation : 5
Localisation : 39 et 78 à mi temps

Re: Débuguage et optimisation code.

Message non lu par Papi78 »

Dehas a écrit :Ou achetez vous les barrette de leds adressable type adafruit, car quand je vois le prix ça fait reculer, ça vas du simple au triple même sur Ebay !!
J'ai pris les miennes ici :
http://www.ebay.com/itm/2PCS-8x-WS2812- ... OU:FR:3160" onclick="window.open(this.href);return false;

Jeff j'attends ton crobard ;-)


Quand tu te sens en situation d'échec, souviens toi que le grand chêne a lui aussi été un gland !
Avatar du membre
Dehas
Administrateur du site
Messages : 16171
Enregistré le : ven. 3 juin 2011 12:50
Réputation : 5
Localisation : Saint Dié des Vosges
Genre :
Contact :

Re: Débuguage et optimisation code.

Message non lu par Dehas »

Merci pour les liens :super:
Jeff j'attends ton crobard ;-)
Quel croquis !!, vous avez tout sur le post, même le CI de Will.
D’ailleurs je fini le montage et je poste.


Avatar du membre
Papi78
Pilote toutes catégories
Messages : 3277
Enregistré le : ven. 3 mai 2013 12:13
Réputation : 5
Localisation : 39 et 78 à mi temps

Re: Débuguage et optimisation code.

Message non lu par Papi78 »

Dehas a écrit : Quel croquis !!, vous avez tout sur le post, même le CI de Will.
Non non, rien à voir, c'est pour un support de LED à imprimer... ;-)


Quand tu te sens en situation d'échec, souviens toi que le grand chêne a lui aussi été un gland !
Avatar du membre
Dehas
Administrateur du site
Messages : 16171
Enregistré le : ven. 3 juin 2011 12:50
Réputation : 5
Localisation : Saint Dié des Vosges
Genre :
Contact :

Re: Débuguage et optimisation code.

Message non lu par Dehas »

En suivant le lien de papi78, je me suis pris ça [yahoo.gif]
Image


Avatar du membre
vilajea1
Tricopter
Messages : 69
Enregistré le : ven. 10 mai 2013 15:34
Réputation : 0
Localisation : 74160-près de Genève

Re: Débuguage et optimisation code.

Message non lu par vilajea1 »

Papi78 a écrit :
Dehas a écrit :Ou achetez vous les barrette de leds adressable type adafruit, car quand je vois le prix ça fait reculer, ça vas du simple au triple même sur Ebay !!
J'ai pris les miennes ici :
http://www.ebay.com/itm/2PCS-8x-WS2812- ... OU:FR:3160" onclick="window.open(this.href);return false;

Jeff j'attends ton crobard ;-)
Salut, pas encore eu le temps Image je bosse au salon de l auto à Genève et rentre tard. Je te fait ça rapidement

Merci Image


Bientôt Yunnec Typhonn H
Vortex pro 250 immersionRC
Vortex 285 immersionRc
Xugong V2
Radio Jeti DS-16
FF9 Futaba UHF immersion RC
Trex 550, mini V-bar
Gopro 4, Mobius

....
Avatar du membre
Dehas
Administrateur du site
Messages : 16171
Enregistré le : ven. 3 juin 2011 12:50
Réputation : 5
Localisation : Saint Dié des Vosges
Genre :
Contact :

Re: Débuguage et optimisation code.

Message non lu par Dehas »

Alors, petit retour sur Le circuit imprimé de Will
Image

Image
Il est pas gros!!

Image
Image
Pose et soudure des transistors

Image
Le câblage.

Petite vidéo du du test de fonctionnement sur mon microbe !!


Me reste a faire la sécurisation a la colle chaude des fils, un bout de gaine et le montage définitif sur le microbe.
Pour moi, le test du CI de Will est concluant pour qu sait souder de petites pièces [yahoo.gif]
Merci Will pour ton développement et ton travail :super:


Avatar du membre
Dehas
Administrateur du site
Messages : 16171
Enregistré le : ven. 3 juin 2011 12:50
Réputation : 5
Localisation : Saint Dié des Vosges
Genre :
Contact :

Re: Débuguage et optimisation code.

Message non lu par Dehas »

vilajea1 a écrit :Hello,

Voila un bout de code fonctionnel pour la gestion des Leds Neopixel Adafruit ou autre selon la position des gaz.

Ne fonctionne que pour le ppm et sortie gaz voie 3. Code développer par un membre d'Argonay que l'on a pris et adapter pour notre utilisation.

Si quelqu'un veut faire la même chose mais pour du PWM, S-Bus, EX-Bus,... avec possibilité de choix pour la sortie des gaz voie 1 ou 3.

libraire : FastLED

Code : Tout sélectionner

/* CPPM2LED
  goebish 2014
  for m328 @ 16 MHz
  Date 01/03/2015 --> attafr
  Date 03/03/2015 --> Jeff
*/

#include <FastLED.h> // (lib available at https://github.com/FastLED/FastLED/archive/master.zip )
// see https://github.com/FastLED/FastLED/wiki/Pixel-reference for reference

// reglages
#define NUM_LEDS 8 // nombre de leds

#define WS2812_pin 4 // Pin de connection pour le Din Adafruit

#define PPM_pin 3    // PPM input

#define PPM_MIN 1000
#define PPM_MAX 2000

#define CHANNELS 5

enum chan_order{
  AILERON,
  ELEVATOR,
  THROTTLE,
  RUDDER,
  AUX1,
  AUX2
};
// end settings

CRGB leds[NUM_LEDS];
volatile uint16_t ppm[CHANNELS];

void setup() {
  // init leds
  FastLED.addLeds<NEOPIXEL, WS2812_pin>(leds, NUM_LEDS);
  FastLED.showColor(CRGB::Black);
  // init ppm values
  for(int i=0; i<CHANNELS; i++) {
    ppm[i] = 1520;
  }
  // init ppm counter
  TCCR1A = 0;  //reset timer1
  TCCR1B = 0;
  TCCR1B |= (1 << CS11);  //set timer1 to increment every 0.5µs (@16Mhz)
  // init ppm interrupt
  attachInterrupt(PPM_pin - 2, read_ppm, CHANGE);
  delay(100);
}

void loop()
{
  // set leds hue according to throttle value
  // FastLed hue chart: http://i.imgur.com/0utnZcB.jpg
  uint8_t hue = map( ppm[THROTTLE], PPM_MIN, PPM_MAX, 144 /*light blue*/, 0 /*red*/);
  uint8_t hug = 255; // map( ppm[ELEVATOR], PPM_MIN, PPM_MAX, 144 /*light blue*/, 0 /*red*/);
  FastLED.showColor( CHSV( hue, hug, 255));
  delay(25);
}

void read_ppm()
{
  #define PPM_SCALE 1L
  static unsigned int pulse;
  static unsigned long counterPPM;
  static byte chan;
  counterPPM = TCNT1; // x 0.5µs
  TCNT1 = 0;
  if(counterPPM < 1020 ) {  // pulse (< 510µs)
    pulse = counterPPM;
  }
  else if(counterPPM > 3820 ) {  // sync pulse (> 1910µs)
    chan = 0;
  }
  else{  // values between 510µs and 2420µs will end up here
    if(chan < CHANNELS) {
      ppm[chan]= (counterPPM + pulse) >> PPM_SCALE;
    }
    chan++;
  }
}

Je mettrai le schéma dès que j'ai un peu de temps.

A+
J'ai essayé de le passer sur une ATTiny85, j'ai des erreurs, la première

Code : Tout sélectionner

error: 'TCCR1B' was not declared in this scope
Apparemment le code ai fait pour un 328 !!


Répondre

Retourner vers « Codes et Programmations »