Skip to content

Instantly share code, notes, and snippets.

@rafitc
Last active November 26, 2021 11:25
Show Gist options
  • Select an option

  • Save rafitc/7d3fb7ce91024fc32aa01ca9d427a02c to your computer and use it in GitHub Desktop.

Select an option

Save rafitc/7d3fb7ce91024fc32aa01ca9d427a02c to your computer and use it in GitHub Desktop.
int red = 3;
int green = 4;
int blue = 5;
int relay_1 = 7;
int relay_2 = 8;
int button = 2;
int b2 = 10;
int w2 = 11;
int delay_1 = 75;
int delay_2 = 500;
bool state = false;
int count = 0;
bool change = true;
int intLED = 13;
void setup() {
pinMode(b2, OUTPUT);
pinMode(w2, OUTPUT);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(relay_1, OUTPUT);
pinMode(relay_2, OUTPUT);
pinMode(intLED, OUTPUT);
pinMode(button, INPUT_PULLUP);
//attachInterrupt(digitalPinToInterrupt(button), blink, FALLING);
Serial.begin(9600);
}
bool checkPin(){
bool state = false;
if(digitalRead(button) == 0){
state = true;
count++;
change = true;
delay(1000);
}
return state;
}
void white(){
digitalWrite(red, HIGH);
digitalWrite(green, HIGH);
digitalWrite(blue, HIGH);
digitalWrite(w2, HIGH);
}
void redClr(){
digitalWrite(red, HIGH);
digitalWrite(green, LOW);
digitalWrite(blue, LOW);
digitalWrite(b2, HIGH);
}
void blueClr(){
digitalWrite(red, LOW);
digitalWrite(green, LOW);
digitalWrite(blue, HIGH);
}
void turnOffAll(){
digitalWrite(red, LOW);
digitalWrite(green, LOW);
digitalWrite(blue, LOW);
digitalWrite(b2, LOW);
digitalWrite(w2, LOW);
}
void extraRelayBlink(){
state = !state;
digitalWrite(relay_1, state);
digitalWrite(relay_2, !state);
}
void extraRelaySingleChange(){
if(change){
state = !state;
extraRelayOff();
}
digitalWrite(relay_1, state);
digitalWrite(relay_2, !state);
}
void extraRelayOff(){
digitalWrite(relay_1, LOW);
digitalWrite(relay_2, LOW);
}
void blinkPattern(){
for(int i =0; i<=15; i++){
if(count != 0){
return;
}
white();
extraRelayBlink();
delay(delay_1);
turnOffAll();
extraRelayOff();
delay(delay_1);
checkPin();
}
if(count != 0){
return;
}
delay(delay_2);
for(int i =0; i<=15; i++){
if(count != 0){
return;
}
redClr();
extraRelayBlink();
delay(delay_1);
turnOffAll();
extraRelayOff();
delay(delay_1);
checkPin();
}
if(count != 0){
return;
}
delay(delay_2);
for(int i =0; i<=15; i++){
if(count != 0){
return;
}
blueClr();
extraRelayBlink();
delay(delay_1);
turnOffAll();
extraRelayOff();
delay(delay_1);
checkPin();
}
if(count != 0){
return;
}
delay(delay_2);
}
void onlyRed(){
turnOffAll();
redClr();
}
void onlyWhite(){
turnOffAll();
white();
}
void onlyBlue(){
turnOffAll();
blueClr();
}
void loop() {
Serial.println(count);
if(checkPin()){
Serial.print("INT COUNT : ");
Serial.println(count);
}
if(count == 0){
checkPin();
blinkPattern();
}
else if(count == 1){
checkPin();
if(change){
onlyWhite();
extraRelaySingleChange();
change = false;
}
}
else if(count == 2){
checkPin();
if(change){
onlyRed();
extraRelaySingleChange();
change = false;
}
}
else if(count == 3){
checkPin();
if(change){
onlyBlue();
extraRelaySingleChange();
change = false;
}
}
else if(count >= 4){
count = 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment