1

Topic: Table control name?

Hello RemoteXY Community,

To start, excuse me for my English, I am French ... !

it is possible to make Table of control ?

like :
led_A[1]
led_A[2]
led_A[3]
...

instead of
led_A1
led_A2
led_A3
...

if I have a lot of control to simplify the code.
If anyone has a suggestion

Best regard

2 (edited by Guillaume 2017-09-20 22:04:30)

Re: Table control name?

Bienvenue smile

Oui sauf que le tableau commence à l'index 0, où 0 = R, 1 = G, 2 = B

Ce topic pourrait t'intéresser, en particulier la fin: http://forum.remotexy.com/viewtopic.php?id=120.

Pour les leds c'est un peu particulier, toutes les leds que tu veux mettre dans un tableau doivent être RGB, de façon à pouvoir créer un tableau à deux dimensions:

struct
{
    ...
    uint8_t leds[NUM_LEDS][3];
    ...

3 (edited by francis 2017-09-27 18:20:13)

Re: Table control name?

Merci Guillaume, pour cette piste qui m'a déjà fait toucher du doigt le mode de fonctionnement.

c'est pas conventionnelle mais pas reédibitif d'avoir un incrément de 3 en 3 dans le tableau (si les led sont en rvb)

c'est clair que la modif n'est pas très pratique à faire, mais ça m'ira

Grand merci

je m'y colle et rendrai compte ici, ci je trouve qlq chose d'interessant de plus à dire.

4

Re: Table control name?

Hello, me revoilà avec le resultat de mes essais ... concluant, merci Guillaume pour m'avoir donné le chemin.

dans cette exemple les leds sont simple mais si elle étaient RVB il suffirait d'incrémenté de 3 en 3

1ere étape après avoir récupéré le code avec le genérateurXY graphique
trier et remettre dans le bon ordre le Pack

donc passer de ça

// RemoteXY configurate 
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
  { 255,2,0,121,0,194,2,6,0,2,
  1,0,82,47,12,12,48,85,12,12,
  1,0,2,0,4,54,15,5,3,92,
  12,5,1,79,78,0,79,70,70,0,
  65,9,6,6,5,5,4,4,5,5,
  2,65,9,11,6,5,5,9,4,5,
  5,2,  etc...
// this structure defines all the variables of your control interface
struct {

    // input variable
  uint8_t Z; // =1 if button pressed, else =0
  uint8_t P; // =1 if switch ON and =0 if OFF

    // output variable
  uint8_t L8_b; // =0..255 LED Blue brightness
  uint8_t L1_b; // =0..255 LED Blue brightness
...ect

------
à
------
// RemoteXY configurate
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
{ 255, 2, 0, 121, 0, 194, 2, 6, 0, 2,                             //    Entête
  1, 0, 82, 47, 12, 12, 48, 85, 12, 12,  1, 0,                    // Z (Boutton poussoir  entête 1)
  2, 0, 4, 54, 15, 5, 3, 92,  12, 5, 1, 79, 78, 0, 79, 70, 70, 0, // P (Switch  entête 2)

  65, 10, 11, 11, 5, 5,  9, 9, 5, 5, 2,    //L0  (Entete des LED = 65)
  65, 9, 11, 6, 5, 5, 9, 4, 5,  5, 2,        //L1
//...etc

// this structure defines all the variables of your control interface
struct {

  // input variable
  uint8_t Z; // =1 if button pressed, else =0
  uint8_t P; // =1 if switch ON and =0 if OFF

  // output variable
    uint8_t L0_b; // =0..255 LED Blue brightness
    uint8_t L1_b; // =0..255 LED Blue brightness
//..etc

C'est un peu fastidieux mais faisable:
on identifie chaque ligne du pack qui corresponds au même ordre que la définition de variable dessous
on inverse ensuite les lignes du pack pour avoir les LED (dans mon cas) dans le bon ordre (à moins qu'elles aient été créés dans le bon ordre dans le générateur graphique.

est ensuite pour faire un tableau de led dans cette exemple
on remplace les lignes
/*
    uint8_t L0_b; // =0..255 LED Blue brightness
    uint8_t L1_b; // =0..255 LED Blue brightness
    uint8_t L2_b; // =0..255 LED Blue brightness
    ...
    uint8_t L47_b; // =0..255 LED Blue brightness
    uint8_t L48_b; // =0..255 LED Blue brightness
    uint8_t L49_b; // =0..255 LED Blue brightness
*/

par

// Tableau en remplacement de la tripoté de variable
  uint8_t L[50]; // =0..255 LED Green brightness modifié en tableau

et on a un tableau de Led
utilisable comme ça par exemple

for (unsigned short int j = 0; j < 50; j++)
  {
    RemoteXY.L[j] = LEDOFF;
  }

avec

#define LEDON 255   // constante pour LED allumé
#define LEDOFF 0     // constante pour LED éteinte

Celà pourrait etre sympa que le devellopeur de XYRemote nous gratifie d'une petite modif dans la génération du code avec l'outil graphique afin que le Pack soit directement formaté et commenté ligne par ligne.

Bonne continuation à tous
Francis

5 (edited by Guillaume 2017-09-30 23:15:18)

Re: Table control name?

Oui je comprends tout à fait, c'est fastidieux... Et j'aime bien ta suggestion, tu devrais la mettre dans la section Ideas and suggestions. Il me semble que j'avais demandé pour avoir la possibilité d'importer du code dans l'éditeur. C'était avant que ce forum existe et rien n'a vraiment changé dans RemoteXY depuis..

Et au lieu de trier le tableau et la struct, tu peux aussi stocker dans un autre tableau, des pointeurs vers chaque led de la struct, ainsi tu as juste à mettre ces pointeurs dans le bon ordre dans ton tableau, ensuite tu utilises ce tableau dans tes loops.