//#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
}
}