int relay1 = 8; int relay2 = 9; int relay3 = 10; char tmp; int in1= 2; int in2= 3; int in3= 4; int mode ; // Mode1= Sequence , Mode2 = Control int status1 = 0; int status2 = 0; int status3 = 0; //the delay int pause = 200; //count to decide which relays are HIGH and which are LOW int count = 0; // will store last time relay was updated unsigned long previousMillis = 0; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(in1, INPUT); pinMode(in2, INPUT); pinMode(in3, INPUT); pinMode(relay1, OUTPUT); pinMode(relay2, OUTPUT); pinMode(relay3, OUTPUT); digitalWrite(relay1, HIGH); digitalWrite(relay2, HIGH); digitalWrite(relay3, HIGH); // initialize serial communication at 9600 bits per second: Serial.begin(9600); //tampildata(); } // the loop routine runs over and over again forever: void loop() { if (Serial.available() > 0){ tmp = Serial.read(); if (tmp == 'o'){ modeonall(); mode =2; } else if (tmp == 'f'){ modeoffall(); mode = 2; } else if (tmp == 't'){ modeonall(); delay (4000); tampildata(); mode = 2; } else if (tmp == '1'){ //modeflipflop(); mode = 1; } } if (mode== 1){ modeflipflop(); } if (mode== 2){ //tampildata(); } //delay (1); // tampildata(); } void tampildata(){ status1 = ! digitalRead (in1); status2 = ! digitalRead (in2); status3 = ! digitalRead (in3); Serial.print (status1); Serial.print (","); Serial.print (status2); Serial.print (","); Serial.println (status3); } void modeoffall(){ //delay (1000); digitalWrite(relay1, HIGH); digitalWrite(relay2, HIGH); digitalWrite(relay3, HIGH); //tampildata(); // Serial.println ("Mode off"); } void modeonall(){ digitalWrite(relay1, LOW); digitalWrite(relay2, LOW); digitalWrite(relay3, LOW); // Serial.println ("Mode On"); // tampildata(); } void modeflipflop(){ // tampildata(); unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= pause) { // save the last time you blinked the relay previousMillis = currentMillis; if (count == 0) { digitalWrite(relay1, LOW); digitalWrite(relay2, HIGH); digitalWrite(relay3, HIGH); tampildata(); } else if (count == 1){ digitalWrite(relay1, HIGH); digitalWrite(relay2, LOW); digitalWrite(relay3, HIGH); tampildata(); } else if (count == 2) { digitalWrite(relay1, HIGH); digitalWrite(relay2, HIGH); digitalWrite(relay3, LOW); tampildata(); } else if (count == 3) { count = -1; } count++; } // tampildata(); }