Commande de 8 fonctions par script Lua pour OpenTx/EdgeTx

Ok. Pourrais tu, si tu as du temps de dispo, ajouter la commande des sorties 1 à 16 pour un arduino Pro Mini par exemple (en utilisant Serial à la place de Serial2) puis le même code pour un deuxième Arduino qui commanderait les voies 17 à 32 ?
Le même code pourrait servir pour les deux Arduino en ayant un #define par exemple.
On aurait ainsi un ensemble Widget/Arduino complet et fonctionnel de suite.
Puis en faire un zip.
 
Tu peux vérifier, j'ai plus l'habitude des arduinos , je n'utilise plus que des esp32



C++:
//#define OUTPUT_1
#define OUTPUT_2

byte SportTxValue[4] = { 0, 0, 0, 0 };
byte SportValue[4] = { 0, 0, 0, 0 };
byte dataArray[10] = { 0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 };
byte dataCounter = 0;
bool complet = false;

byte data =0;

#ifdef OUTPUT_1

byte output_1[8] = { 2, 3, 4, 5, 6, 7, 8, 9};
byte output_1B[8] = { 10, 11, 12, 13, A0, A1, A2, A3};
bool sortie1[8];
bool sortie1B[8];
#endif

#ifdef OUTPUT_2
byte output_2[8] = { 2, 3, 4, 5, 6, 7, 8, 9};
byte output_2B[8] = { 10, 11, 12, 13, A0, A1, A2, A3};
bool sortie2[8];
bool sortie2B[8];
#endif



void setup() {
Serial.begin(57600);

#ifdef OUTPUT_1
int x = 0;
int y = 0;
for(x = 0; x <=7; x++)
  {
   pinMode(output_1[x], OUTPUT);
    
    }
for(y = 0; y <=7; y++)
  {
   pinMode(output_1B[y], OUTPUT);
    
    }    
#endif

#ifdef OUTPUT_2
int x = 0;
int y = 0;
for(x = 0; x <=7; x++)
  {
   pinMode(output_2[x], OUTPUT);
    
    }
    
for(y = 0; y <=7; y++)
  {
    pinMode(output_2B[y], OUTPUT);
    
    }     
#endif



}

void loop() {
int x =0;
int y =0;  
 
SportRead(0x0D);


#ifdef OUTPUT_1 

output1();
output1B();

for(x = 0; x <=7; x++)
  {
 digitalWrite(output_1[x], sortie1[x]);
  }

for(y = 0; y <=7; y++)
  {
 digitalWrite(output_1B[y], sortie1B[y]);
  }

#endif

#ifdef OUTPUT_2
 output2();
 output2B();

for(x = 0; x <=7; x++)
  {
 digitalWrite(output_2[x], sortie2[x]);
  }

for(y = 0; y <=7; y++)
  {
 digitalWrite(output_2B[y], sortie2B[y]);
  }
#endif
}


void output1 (){
int x = 0;
for(x = 0; x <=7; x++)
  {
    sortie1[x]=bitRead(SportValue[0],x);
    
    }

}

void output1B (){
int x = 0;
for(x = 0; x <=7; x++)
  {
    sortie1B[x]=bitRead(SportValue[1],x);
    
    }

}

void output2 (){
int x = 0;
for(x = 0; x <=7; x++)
  {
    sortie2[x]=bitRead(SportValue[2],x);
    
    }

}

void output2B (){
int x = 0;
for(x = 0; x <=7; x++)
  {
    sortie2B[x]=bitRead(SportValue[3],x);
    
    }

}




void SportRead(uint8_t adresse)
{
  
 while (Serial.available()>0) {
      data = Serial.read();
    
    if (data == 0x7E) {
        dataCounter = 0;
        complet = false;
       
      
      }

      
#ifdef OUTPUT_1
    dataArray[dataCounter] = data;
      dataCounter++;
       
    if ((dataCounter == 10) &&(dataArray[1] == adresse) &&(dataArray[3] == 0x01)) {
        SportTxValue[0] = dataArray[5];
        SportTxValue[1] = dataArray[6];
        
        
    complet = true;

    }

    if (complet && ((SportValue[0] != SportTxValue[0])|| (SportValue[1] != SportTxValue[1]))) 
    {
    SportValue[0] = SportTxValue[0];
    SportValue[1] = SportTxValue[1];
    

    complet = false;
    
  }    
       

  #endif

  #ifdef OUTPUT_2

     
    if ((dataCounter == 10) &&(dataArray[1] == adresse) &&(dataArray[3] == 0x0A)) {
        SportTxValue[2] = dataArray[7];
        SportTxValue[3] = dataArray[8];

        
    complet = true; 
    }

    if (complet && ((SportValue[2] != SportTxValue[2])|| (SportValue[3] != SportTxValue[3]))) 
    {
    SportValue[2] = SportTxValue[2];
    SportValue[3] = SportTxValue[3];

    

    complet = false;
    
  }
 #endif


 }
}
 
Dernière édition:
Question, j'utilise un Pro Micro pour les tests.
Comment tu connecterais S-Port au port série RXTX avec une diode ?
 
Haut