7ced8076b48168ff39ef98bf06d6040315394e9f3fda84c82f401c


7ced8076b48168ff39ee98bf06d604035ff78c820a2d434e92fa5c

//입출력번호

int PB_1 = 2;

int PB_2 = 5;

int IR = 4;

int Led_R = 10;

int Led_G = 6;

int Led_Y = 8;


//플리커 작용

int flickerCount = 0;

bool Relay = false;

bool R_G = true;

unsigned long start = 0;

const long endnumber = 200;


//오토전환 작용

bool Relay_Y = false;

bool auto_ = true;

bool PB_1_IR = false;

bool lastIRState = HIGH;


void setup() {

  pinMode(PB_1, INPUT);

  pinMode(PB_2, INPUT);

  pinMode(IR, INPUT);

  pinMode(Led_R, OUTPUT);

  pinMode(Led_G, OUTPUT);

  pinMode(Led_Y, OUTPUT);

}

void loop() {

//수동조작

if (!auto_ && digitalRead (PB_1) == HIGH && !Relay){

PB_1_IR = true;

}

//센서조작

int currentIR = digitalRead(IR);

if (auto_ && currentIR == LOW && lastIRState == HIGH && !Relay){

PB_1_IR = true;

}

lastIRState = currentIR;


//플리커 시작조건

if (PB_1_IR && !Relay){

  Relay = true;

  PB_1_IR = false;

  flickerCount = 0;

}

//플리커작동

if (Relay){

  unsigned long Millis = millis();

  if (Millis - start >= endnumber) {

    start = Millis;

   if (R_G) {

  digitalWrite(Led_R, HIGH);

  digitalWrite(Led_G, LOW);

   } else {

  digitalWrite(Led_G, HIGH);

  digitalWrite(Led_R, LOW);

  flickerCount++;

}

//플리커종료

R_G = !R_G;

if (flickerCount >= 5) {

   Relay = false;

   digitalWrite(Led_R, LOW);

   digitalWrite(Led_G, LOW);

}

}

}

//수동조작전환

if (digitalRead(PB_1) == HIGH){

 Relay_Y = false;

}

//센서조작전환

if (digitalRead(PB_2) == HIGH){

 Relay_Y = true;

}

//센서-수동상태표시

if (Relay_Y){

  auto_ = true;

  digitalWrite(Led_Y, HIGH);

}

else {

  auto_ = false;

  digitalWrite(Led_Y, LOW);

  }

}


센서 켜보니까 재미있네