ce programme (que tu m'a fait) fonctionnait il y a deux jours, je ne comprends plus...
/************************************************************************
RC 6/SERVOS + Mixage 8/BOUTONS EMETTEUR
Radio TRUC 6S_8B_1M
Permet d'avoir :
1,2,3,4,5 ou 6 voies proportionnelles.
Un mixage des voies 1 et 2 peut être actionné ou pas grâce à un inter.
1,2,3,4,5,6,7 ou 8 voies TOR qui pourra actionner des relais
*************************************************************************/
#include <SPI.h>
#include "RF24.h"
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
typedef struct { uint8_t Msg0; uint8_t Msg1; uint8_t Msg2; uint8_t Msg3;
uint8_t Msg4; uint8_t Msg5; uint8_t MsgBt; }MsgSt_t;
MsgSt_t MonMessage;
#define NB_ELTS_DANS_TABLE(Table) (sizeof(Table) / sizeof(Table[0]))
int potpin_0 = A0; int potpin_1 = A1; int potpin_2 = A2;
int potpin_3 = A3; int potpin_4 = A4; int potpin_5 = A5;
#define poussoir 2
int val_0; int val_1; int val_2; int val_3; int val_4; int val_5;
int i;
int m; // Message
int val_1x; int val_2x; int diff;
int neutre = 90;
int posmin = 45; int posmax = 135; // Ligne à valider pour une rotation de 90° des servos ou Ligne à supprimer pour 180°
//int posmin = 0; int posmax = 180; // Ligne à valider pour une rotation de 180° des servos ou Ligne à supprimer pour 90°
int b_t[] = {2,2,3,4,5,6,7,8}; // tableau des Boutons
int b[] = {2,2,3,4,5,6,7,8}; // Tableau bite de message
//----------------------------------------------------------------
void setup(void)
{
Serial.begin(9600);
pinMode(poussoir,INPUT);
for (i = 0; i < NB_ELTS_DANS_TABLE(b_t); i ++)
{ pinMode(b_t, INPUT); digitalWrite(b_t, HIGH);}
radio.begin();
radio.openWritingPipe(pipe);
}
//----------------------------------------------------------------
void loop()
{
for (i = 0; i < NB_ELTS_DANS_TABLE(b_t); i ++) {
if (digitalRead(b_t)) { b = bitClear(m,i); }
else { b = b = bitSet(m,i); }
}
val_0 = (analogRead(potpin_0)); val_0 = map(val_0, 0, 1023, posmin, posmax);
val_1 = (analogRead(potpin_1)); val_1 = map(val_1, 0, 1023, posmin, posmax);
val_2 = (analogRead(potpin_2)); val_2 = map(val_2, 0, 1023, posmin, posmax);
val_3 = (analogRead(potpin_3)); val_3 = map(val_3, 0, 1023, posmin, posmax);
val_4 = (analogRead(potpin_4)); val_4 = map(val_4, 0, 1023, posmin, posmax);
val_5 = (analogRead(potpin_5)); val_5 = map(val_5, 0, 1023, posmin, posmax);
//----------------------------------------------------------------------------
if (digitalRead(poussoir)== LOW ) {
val_1x = val_1; // Donne à la variable (val_1x) la valeur de (signal) lue sur le pin2
val_2x = val_2; // Donne à la variable (val_2x) la valeur de (signal) lue sur le pin2
diff = (val_2x - neutre); // Calcule l'ecart entre les deux servos
val_1 = val_1x - diff; val_2 = val_1x + diff; // Calcule la position des servos
val_1=constrain(val_1, posmin, posmax); // Calibre les valeurs pour le servo1 dans la plage acceptée
val_2=constrain(val_2, posmin, posmax);
}
MonMessage.Msg0 = val_0; MonMessage.Msg1 = val_1; MonMessage.Msg2 = val_2;
MonMessage.Msg3 = val_3; MonMessage.Msg4 = val_4; MonMessage.Msg5 = val_5;
//----------------------------------------------------------------------------
MonMessage.MsgBt = m;
Serial.print("Tx: " + String(val_0) + "-" + String(val_1) + "-" + String(val_2) + "-");
Serial.println(String(val_3) + "-" + String(val_4) + "-" + String(val_5) + "-" + String(m));
radio.write(&MonMessage, sizeof(MonMessage));
}
//============================= FIN DE PROGRAMME ======================