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