bangnaga icon

Khadijah-ATKP-Relay Sequence

bangnaga | PRO | 06/23/25 06:36:00 AM UTC (Edited) | 0 ⭐ | 183 👁️ | Never ⏰ | []
C++ |

2.86 KB

|

None

|

0 👍

/

0 👎

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();
}

Comments