diff --git a/Programme_arduino_esclave b/Programme_arduino_esclave new file mode 100644 index 0000000..04ee952 --- /dev/null +++ b/Programme_arduino_esclave @@ -0,0 +1,246 @@ +#include + +SoftwareSerial soft1(A3,A2); +SoftwareSerial soft2(6,5); +SoftwareSerial soft3(9,10); + +const int in1 = A5; +const int out1 = A4; + +const int in2 = 8; +const int out2 = 7; + +const int in3 = 11; +const int out3 = 12; + +const int in4 = 2; +const int out4 = 3; + +int prem = 0; +int papa = 0; + +int potar = A0; + +void setup() +{ + Serial.begin(9600); + soft1.begin(9600); + soft2.begin(9600); + soft3.begin(9600); + + pinMode(in1,INPUT); + pinMode(out1,OUTPUT); + pinMode(in2,INPUT); + pinMode(out2,OUTPUT); + pinMode(in3,INPUT); + pinMode(out3,OUTPUT); + pinMode(in4,INPUT); + pinMode(out4,OUTPUT); + + digitalWrite(out1,LOW); + digitalWrite(out2,LOW); + digitalWrite(out3,LOW); + digitalWrite(out4,LOW); +} + +void loop() +{ + String msg=""; + char inByte='a'; + int tps; + int timeout; + int fin1=0,fin2=0,fin3=0,fin4=0; + char id = 0b01100001; + if(digitalRead(in1)==HIGH){ + digitalWrite(out1,HIGH); + soft1.listen(); + timeout=0; + tps=millis(); + while(soft1.available()<=0 && timeout<1000){ + timeout= millis() - tps; + } + if(timeout<1000){ + fin1=1; + while(inByte != '\n'){ + inByte = soft1.read(); + if(inByte !='\n'){ + msg += inByte; + delay(10); + } + } + if(prem==0){ + prem=1; + papa=1; + msg += id; + if((id & 0xF0) ==0x60) msg += '{'; //char pour 123 + else if((id & 0xF0) ==0x40) msg += 0b00000100; + msg += '\n'; + } + else msg+= '\n'; + } + digitalWrite(out1, LOW); + delay(50); + } + + else if(digitalRead(in2)==HIGH){ + digitalWrite(out2,HIGH); + soft2.listen(); + timeout=0; + tps=millis(); + while(soft2.available()<=0 && timeout<1000){ + timeout= millis() - tps; + } + if(timeout<1000){ + fin2=1; + while(inByte != '\n'){ + inByte = soft2.read(); + if(inByte !='\n'){ + msg += inByte; + delay(10); + } + } + if(prem==0){ + prem=1; + papa=2; + msg += id; + if((id & 0xF0) ==0x60) msg += '{'; //char pour 123 + else if((id & 0xF0) ==0x40) msg += 0b00000100; + msg += '\n'; + } + else msg+= '\n'; + } + digitalWrite(out2, LOW); + delay(50); + } + +else if(digitalRead(in3)==HIGH){ + digitalWrite(out3,HIGH); + soft3.listen(); + timeout=0; + tps=millis(); + while(soft3.available()<=0 && timeout<1000){ + timeout= millis() - tps; + } + if(timeout<1000){ + fin3=1; + while(inByte != '\n'){ + inByte = soft3.read(); + if(inByte !='\n'){ + msg += inByte; + delay(10); + } + } + if(prem==0){ + prem=1; + papa=3; + msg += id; + if((id & 0xF0) ==0x60) msg += '{'; //char pour 123 + else if((id & 0xF0) ==0x40) msg += 0b00000100; + msg += '\n'; + } + else msg+= '\n'; + } + digitalWrite(out3, LOW); + delay(50); + } + + else if(digitalRead(in4)==HIGH){ + digitalWrite(out4,HIGH); + timeout=0; + tps=millis(); + while(Serial.available()<=0 && timeout<1000){ + timeout= millis() - tps; + } + if(timeout<1000){ + fin4=1; + while(inByte != '\n'){ + inByte = Serial.read(); + if(inByte !='\n'){ + msg += inByte; + delay(10); + } + } + if(prem==0){ + prem=1; + papa=4; + msg += id; + if((id & 0xF0) ==0x60) msg += '{'; //char pour 123 + else if((id & 0xF0) ==0x40) msg += 0b00000100; + msg += '\n'; + } + else msg+= '\n'; + } + digitalWrite(out4, LOW); + delay(50); + } + + if(fin1==1 || fin2==1 || fin3==1 || fin4==1){ + if((fin1==1 && papa == 1) || (fin1 == 0)){ + timeout=0; + tps = millis(); + while(timeout<1000){ + digitalWrite(out1,HIGH); + timeout= millis() - tps; + if(fin1==1) timeout=0; + if(digitalRead(in1)==HIGH){ + soft1.print(msg); + soft1.flush(); + timeout = 1001; + } + } + digitalWrite(out1,LOW); + } + + if((fin2==1 && papa == 2) || (fin2 == 0)){ + timeout=0; + tps = millis(); + while(timeout<1000){ + digitalWrite(out2,HIGH); + timeout= millis() - tps; + if(fin2==1) timeout=0; + if(digitalRead(in2)==HIGH){ + soft2.print(msg); + soft2.flush(); + digitalWrite(out2,LOW); + timeout = 1001; + } + } + digitalWrite(out2,LOW); + } + + + if((fin3==1 && papa == 3) || (fin3 == 0)){ + timeout=0; + tps = millis(); + while(timeout<1000){ + digitalWrite(out3,HIGH); + timeout= millis() - tps; + if(fin3==1) timeout=0; + if(digitalRead(in3)==HIGH){ + soft3.print(msg); + soft3.flush(); + digitalWrite(out3,LOW); + timeout = 1001; + } + } + digitalWrite(out3,LOW); + } + + if((fin4==1 && papa == 4) || (fin4 == 0)){ + timeout=0; + tps = millis(); + while(timeout<1000){ + digitalWrite(out4,HIGH); + timeout= millis() - tps; + if(fin4==1) timeout=0; + if(digitalRead(in4)==HIGH){ + Serial.print(msg); + Serial.flush(); + digitalWrite(out4,LOW); + timeout = 1001; + } + } + digitalWrite(out4,LOW); + } + } +} \ No newline at end of file -- libgit2 0.21.2