//Code du transmeteur (gant)

#include <SPI.h>
#include "RF24.h"

int msg[5]; //Nombre total de données envoyées.

//Définir les branchements des capteurs de flexion
int flex_5 = A5;
int flex_4 = A4;
int flex_3 = A3;
int flex_2 = A2;
int flex_1 = A1;

//Définir les variables des valeurs des capteurs de flexion
int flex_5_val;
int flex_4_val;
int flex_3_val;
int flex_2_val;
int flex_1_val;


//Définir les constantes
RF24 radio(9,10);                     //Les pinss 9 et 10 sont les pin digital où  CE et CSN sont connectées
const int flexPin = A5;     // Pin à laquel le diviseur de tension est connectée
const uint64_t pipe = 0xE8E8F0F0E1LL; //adresse du modem
const float VCC = 5;      // tension
const float R_DIV = 47000.0;  // valeur du résisteur utilisé
const float flatResistance = 25000.0; // résistance capteur flexion relâché
const float bendResistance = 100000.0;  // résistance capteur de flexion pliée à environ 90 degrés

void setup(void){

  Serial.begin(9600);
  pinMode(flexPin, INPUT);
  radio.begin();
  radio.openWritingPipe(pipe);
}

void loop(void){
  // lit l'ADC, et calcule à partir de ça la  tension et la résistance
  int ADCflex = analogRead(flexPin);
  float Vflex = ADCflex * VCC / 1023.0;
  float Rflex = R_DIV * (VCC / Vflex - 1.0);
  Serial.println("Resistance: " + String(Rflex) + " ohms");

  // estimer l'angle du senseur
  float angle = map(Rflex, flatResistance, bendResistance, 0, 90.0);
  Serial.println("Bend: " + String(angle) + " degrees");
  Serial.println();

/*Mesurer la valeur min du senseur, la valeur max du senseur, l'angle min du servo et l'angle max du servo
et rentrer ses valeurs dans l'ordre dans les flex_val comme ci-dessous*/
  delay(500);
  flex_5_val = analogRead(flex_5);
  flex_5_val = map(flex_5_val, 630, 730, 80, 20);

  flex_4_val = analogRead(flex_4);
  flex_4_val = map(flex_4_val, 520, 710, 70, 175);

  flex_3_val = analogRead(flex_3);
  flex_3_val = map(flex_3_val, 510, 680, 140, 10);

  flex_2_val = analogRead(flex_2);
  flex_2_val = map(flex_2_val, 580, 715, 90, 175);

  flex_1_val = analogRead(flex_1);
  flex_1_val = map(flex_1_val, 550, 700, 90, 175);

  msg[2] = flex_4_val;
  msg[1] = flex_5_val;
  msg[3] = flex_3_val;
  msg[4] = flex_2_val;
  msg[5] = flex_1_val;
  radio.write(msg, sizeof(msg));
}