<p>안녕하세요 ...</p> <p>아두이노 작업중인데 ... 몇날몇일을 밤새고 머리 쥐어싸매도 답이 안나와서 도움요청드립니다 ㅠㅠㅠㅠ</p> <p> </p> <p>원래 RFID까지 적용 예정이였는데 ... RFID 불량품이 와버려서 삭제할 예정입니당..</p> <p> </p> <p> </p> <hr style="height:1px;background-color:#999999;border:none;"><p> </p> <p><img src="http://thimg.todayhumor.co.kr/upfile/202301/167470778869f38bf44fc14669a712f9f2790118a2__mn533955__w800__h457__f22241__Ym202301.png" alt="KakaoTalk_20230126_132038686.png" style="width:800px;height:457px;"></p> <p> </p> <p>아두이노로 EM락 2개를 제어해야함.</p> <p> - 스위치 5개 조합으로 1번 EM락, 2번 EM락 제어를 해야함</p> <p> - 스위치 조합 : 흰색 + (조합) + 흰색 / 흰색이 시작과 끝을 의미함</p> <p> <br></p> <p> <br></p> <p>문제 사항</p> <p> - 현재 테스트로 [ W R Y G B W ] 1번 EM락 해제, [ W B G Y R W ] 2번 EM락 해제로 설정해둔 상태</p> <p> - 1번 EM락 해제까지는 정상 작동 함. 이후 W (4개 스위치 아무거나) W 눌러도 1번 EM락만 해제가 됨.</p> <p> - 2번 EM락 해제가 안 됨</p> <p> <br></p> <p>조건</p> <p> 1. 정답일 경우 파란색 경광등 5초간 회전</p> <p> 2. 오답일 경우 빨강색 경광등 5초간 회전</p> <p> 3. 경광등이 작동중일 경우 스위치를 작동 불가.</p> <p> 4. 경광등 작동 종료된 후 스위치 재입력 가능상태</p> <p> 4. W 스위치는 시작과 끝을 의미함.</p> <p> 5. W 스위치를 누르지 않고 조합을 누를경우 무효.</p> <p> </p> <hr style="height:1px;background-color:#999999;border:none;"><p> </p> <p> ```cpp</p> <p>int s1 = 2; //스위치 1 흰색</p> <p>int s2 = 3; //스위치 2 빨강</p> <p>int s3 = 4; //스위치 3 노랑</p> <p>int s4 = 5; //스위치 4 초록</p> <p>int s5 = 6; //스위치 5 파랑</p> <p> <br></p> <p>int em1lock = 7;</p> <p>int emlock;</p> <p> <br></p> <p>int s1c = 0; //스위치1 누른횟수</p> <p>int s2c = 0; //스위치2 누른횟수</p> <p>int s3c = 0; //스위치3 누른횟수</p> <p>int s4c = 0; //스위치4 누른횟수</p> <p>int s5c = 0; //스위치5 누른횟수</p> <p> <br></p> <p>int s1s; //스위치 1 동작정의</p> <p>int s2s; //스위치 2 동작정의</p> <p>int s3s; //스위치 3 동작정의</p> <p>int s4s; //스위치 4 동작정의</p> <p>int s5s; //스위치 5 동작정의</p> <p> <br></p> <p>int timeron = 0; //타이머 on</p> <p> <br></p> <p>int start1 = 0; //1번방 동작 시작</p> <p>int start2 = 0; //2번방 동작 시작</p> <p> <br></p> <p>int room1clear = 0; //첫번째방 성공</p> <p>int room2clear = 0; //두번째방 성공</p> <p> <br></p> <p>int act1 = 0; //룸1 첫번째 동작 성공</p> <p>int act2 = 0; //룸1 두번째 동작 성공</p> <p>int act3 = 0; //룸1 세번째 동작 성공</p> <p>int act4 = 0; //룸1 네번째 동작 성공</p> <p> <br></p> <p>int act5 = 0; //룸2 첫번째 동작 성공</p> <p>int act6 = 0; //룸2 두번째 동작 성공</p> <p>int act7 = 0; //룸2 세번째 동작 성공</p> <p>int act8 = 0; //룸2 네번째 동작 성공</p> <p> <br></p> <p>int sus = 0; //성공</p> <p>int fail = 0; //실패</p> <p> <br></p> <p>int rfidsus = 0;</p> <p>int rfidfail = 0;</p> <p> <br></p> <p>int red = A0; //경광등 빨강</p> <p>int blue = A1; //경광등 파랑</p> <p>int em1 = A2; //EmLock 1</p> <p>int em2 = A3; //EmLock 2</p> <p> <br></p> <p>//***************************************************************************************************************************************************************************************************************************</p> <p>void setup() {</p> <p> <br></p> <p> //스위치 1~5 입력모드</p> <p> pinMode(s1, INPUT);</p> <p> pinMode(s2, INPUT);</p> <p> pinMode(s3, INPUT);</p> <p> pinMode(s4, INPUT);</p> <p> pinMode(s5, INPUT);</p> <p> pinMode(em1lock, INPUT);</p> <p> <br></p> <p> //A0 빨강 경광등 출력</p> <p> pinMode(red, OUTPUT);</p> <p> digitalWrite(red, HIGH);</p> <p> <br></p> <p> //A1 파랑 경광등 출력</p> <p> pinMode(blue, OUTPUT);</p> <p> digitalWrite(blue, HIGH);</p> <p> <br></p> <p> //A2 EmLock1 출력</p> <p> pinMode(em1, OUTPUT);</p> <p> digitalWrite(em1, HIGH);</p> <p> <br></p> <p> //A3 EmLock2 출력</p> <p> pinMode(em2, OUTPUT);</p> <p> digitalWrite(em2, HIGH);</p> <p>}</p> <p> <br></p> <p>//***************************************************************************************************************************************************************************************************************************</p> <p>void loop()</p> <p> <br></p> <p>{</p> <p> <br></p> <p> Serial.println("s2c");</p> <p> Serial.println(s2c);</p> <p> Serial.println("s3c");</p> <p> Serial.println(s3c);</p> <p> Serial.println("s4c");</p> <p> Serial.println(s4c);</p> <p> Serial.println("s5c");</p> <p> Serial.println(s5c);</p> <p> Serial.println("act5");</p> <p> Serial.println(act5);</p> <p> Serial.println("act6");</p> <p> Serial.println(act6);</p> <p> Serial.println("act7");</p> <p> Serial.println(act7);</p> <p> Serial.println("act8");</p> <p> Serial.println(act8);</p> <p> Serial.println("emlock");</p> <p> Serial.println(emlock);</p> <p> <br></p> <p> if (digitalRead(em1lock) == HIGH) {</p> <p> <br></p> <p> emlock = 1;</p> <p> }</p> <p> else {</p> <p> emlock = 0 ;</p> <p> }</p> <p> <br></p> <p> //스위치1*******************************************************************************************************************************************************************************************************************</p> <p> if (digitalRead(s1) == LOW) {</p> <p> if (s1s == 0) {</p> <p> delay(50);</p> <p> s1s = 1;</p> <p> }</p> <p> }</p> <p> <br></p> <p> if (digitalRead(s1) == HIGH) {</p> <p> if (s1s == 1) {</p> <p> start1 += 1;</p> <p> s2c = 0; //s2c 초기화</p> <p> s3c = 0; //s3c 초기화</p> <p> s4c = 0; //s4c 초기화</p> <p> s5c = 0; //s5c 초기화</p> <p> <br></p> <p> act1 = 0; //룸1 첫번째 성공 초기화</p> <p> act2 = 0; //룸1 두번째 성공 초기화</p> <p> act3 = 0; //룸1 세번째 성공 초기화</p> <p> act4 = 0; //룸1 네번째 성공 초기화</p> <p> <br></p> <p> act5 = 0; //룸2 첫번째 성공 초기화</p> <p> act6 = 0; //룸2 두번째 성공 초기화</p> <p> act7 = 0; //룸2 세번째 성공 초기화</p> <p> act8 = 0; //룸2 네번째 성공 초기화</p> <p> <br></p> <p> delay(100);</p> <p> s1s = 0;</p> <p> }</p> <p> }</p> <p> <br></p> <p> //스위치2*******************************************************************************************************************************************************************************************************************</p> <p> if (digitalRead(s2) == LOW) {</p> <p> if (s2s == 0) {</p> <p> delay(50);</p> <p> s2s = 1;</p> <p> }</p> <p> }</p> <p> <br></p> <p> if (digitalRead(s2) == HIGH) {</p> <p> if (s2s == 1) {</p> <p> s2c += 1;</p> <p> delay(100);</p> <p> s2s = 0;</p> <p> }</p> <p> }</p> <p> <br></p> <p> //스위치3*******************************************************************************************************************************************************************************************************************</p> <p> if (digitalRead(s3) == LOW) {</p> <p> if (s3s == 0) {</p> <p> delay(50);</p> <p> s3s = 1;</p> <p> }</p> <p> }</p> <p> <br></p> <p> if (digitalRead(s3) == HIGH) {</p> <p> if (s3s == 1) {</p> <p> s3c += 1;</p> <p> delay(100);</p> <p> s3s = 0;</p> <p> }</p> <p> }</p> <p> <br></p> <p> //스위치4*******************************************************************************************************************************************************************************************************************</p> <p> if (digitalRead(s4) == LOW) {</p> <p> if (s4s == 0) {</p> <p> delay(50);</p> <p> s4s = 1;</p> <p> }</p> <p> }</p> <p> <br></p> <p> if (digitalRead(s4) == HIGH) {</p> <p> if (s4s == 1) {</p> <p> s4c += 1;</p> <p> delay(100);</p> <p> s4s = 0;</p> <p> }</p> <p> }</p> <p> <br></p> <p> //스위치5*******************************************************************************************************************************************************************************************************************</p> <p> if (digitalRead(s5) == LOW) {</p> <p> delay(50);</p> <p> s5s = 1;</p> <p> }</p> <p> <br></p> <p> <br></p> <p> if (digitalRead(s5) == HIGH) {</p> <p> if (s5s == 1)</p> <p> {</p> <p> s5c += 1;</p> <p> delay(100);</p> <p> s5s = 0;</p> <p> }</p> <p> }</p> <p> <br></p> <p> <br></p> <p> //1번룸*******************************************************************************************************************************************************************************************************************</p> <p> <br></p> <p> if (room1clear == 0 || emlock == 1) {</p> <p> //흰색 누른 후 빨간색 스위치 1번 눌렀을때</p> <p> if (start1 == 1 && s2c == 1) {</p> <p> act1 = 1;</p> <p> }</p> <p> <br></p> <p> //흰색 누른 후 노란색 스위치 1번 눌렀을때</p> <p> if (act1 == 1 && s3c == 1) {</p> <p> act2 = 1;</p> <p> }</p> <p> <br></p> <p> //흰색 누른 후 초록색 스위치 1번 눌렀을때</p> <p> if (act2 == 1 && s4c == 1) {</p> <p> act3 = 1;</p> <p> }</p> <p> <br></p> <p> //흰색 누른 후 파란색 스위치 1번 눌렀을때</p> <p> if (act3 == 1 && s5c == 1) {</p> <p> act4 = 1;</p> <p> }</p> <p> <br></p> <p> //모두 완료 후 하얀색 버튼 눌렀을때</p> <p> if (act4 == 1 && digitalRead(s1) == HIGH) {</p> <p> sus = 1;</p> <p> delay(200);</p> <p> }</p> <p> <br></p> <p> //클리어시</p> <p> if (sus == 1) {</p> <p> digitalWrite(em1, LOW);</p> <p> digitalWrite(blue, LOW);</p> <p> room1clear = 1;</p> <p> start1 = 0;</p> <p> s2c = 0; //s2c 초기화</p> <p> s3c = 0; //s3c 초기화</p> <p> s4c = 0; //s4c 초기화</p> <p> s5c = 0; //s5c 초기화</p> <p> <br></p> <p> act1 = 0; //첫번째 성공 초기화</p> <p> act2 = 0; //두번째 성공 초기화</p> <p> act3 = 0; //세번째 성공 초기화</p> <p> act4 = 0; //네번째 성공 초기화</p> <p> <br></p> <p> delay(5000);</p> <p> digitalWrite(em1, HIGH);</p> <p> digitalWrite(blue, HIGH);</p> <p> sus = 0;</p> <p> }</p> <p> <br></p> <p> //실패시 하얀색 버튼 눌렀을때</p> <p> if (act4 == 0 && start1 == 2 && sus == 0) {</p> <p> s1c = 0; //s1c 초기화</p> <p> s2c = 0; //s2c 초기화</p> <p> s3c = 0; //s3c 초기화</p> <p> s4c = 0; //s4c 초기화</p> <p> s5c = 0; //s5c 초기화</p> <p> <br></p> <p> act1 = 0; //첫번째 성공 초기화</p> <p> act2 = 0; //두번째 성공 초기화</p> <p> act3 = 0; //세번째 성공 초기화</p> <p> act4 = 0; //네번째 성공 초기화</p> <p> <br></p> <p> delay(100);</p> <p> fail = 1;</p> <p> }</p> <p> <br></p> <p> //실패시</p> <p> if (fail == 1 || timeron == 1) {</p> <p> digitalWrite(red, LOW);</p> <p> timeron = 0;</p> <p> fail = 0;</p> <p> delay(5000);</p> <p> digitalWrite(red, HIGH);</p> <p> start1 = 0; //스타트 초기화</p> <p> }</p> <p> }</p> <p> <br></p> <p> //2번룸*******************************************************************************************************************************************************************************************************************</p> <p> <br></p> <p> if (room1clear == 1 && emlock == 0) {</p> <p> //흰색 누른 후 파란색 스위치 1번 눌렀을때</p> <p> if (start1 == 1 && s5c == 1) {</p> <p> act5 = 1;</p> <p> }</p> <p> <br></p> <p> //흰색 누른 후 초록색 스위치 1번 눌렀을때</p> <p> if (act5 == 1 && s4c == 1) {</p> <p> act6 = 1;</p> <p> } else {</p> <p> s4c = 0;</p> <p> }</p> <p> //흰색 누른 후 노란색 스위치 1번 눌렀을때</p> <p> if (act6 == 1 && s3c == 1) {</p> <p> act7 = 1;</p> <p> }</p> <p> //흰색 누른 후 빨간색 스위치 1번 눌렀을때</p> <p> if (act7 == 1 && s2c == 1) {</p> <p> act8 = 1;</p> <p> }</p> <p> //모두 완료 후 하얀색 버튼 눌렀을때</p> <p> if (act8 == 1 && digitalRead(s1) == HIGH) {</p> <p> sus = 2;</p> <p> delay(200);</p> <p> }</p> <p> <br></p> <p> //클리어시</p> <p> if (sus == 2) {</p> <p> digitalWrite(blue, LOW);</p> <p> room2clear = 1;</p> <p> start1 = 0;</p> <p> s2c = 0; //s2c 초기화</p> <p> s3c = 0; //s3c 초기화</p> <p> s4c = 0; //s4c 초기화</p> <p> s5c = 0; //s5c 초기화</p> <p> <br></p> <p> act5 = 0; //첫번째 성공 초기화</p> <p> act6 = 0; //두번째 성공 초기화</p> <p> act7 = 0; //세번째 성공 초기화</p> <p> act8 = 0; //네번째 성공 초기화</p> <p> delay(10000);</p> <p> digitalWrite(blue, HIGH);</p> <p> sus = 0;</p> <p> }</p> <p> <br></p> <p> //rfid까지 성공</p> <p> if (sus == 2 && rfidsus == 1) {</p> <p> digitalWrite(em2, LOW);</p> <p> digitalWrite(blue, LOW);</p> <p> room2clear = 1;</p> <p> start1 = 0;</p> <p> delay(10000);</p> <p> <br></p> <p> digitalWrite(em2, HIGH);</p> <p> digitalWrite(blue, HIGH);</p> <p> sus = 0;</p> <p> }</p> <p> <br></p> <p> //실패시 하얀색 버튼 눌렀을때</p> <p> if (act8 == 0 && start1 == 2 && sus == 0) {</p> <p> s1c = 0; //s1c 초기화</p> <p> s2c = 0; //s2c 초기화</p> <p> s3c = 0; //s3c 초기화</p> <p> s4c = 0; //s4c 초기화</p> <p> s5c = 0; //s5c 초기화</p> <p> <br></p> <p> act5 = 0; //첫번째 성공 초기화</p> <p> act6 = 0; //두번째 성공 초기화</p> <p> act7 = 0; //세번째 성공 초기화</p> <p> act8 = 0; //네번째 성공 초기화</p> <p> <br></p> <p> delay(100);</p> <p> fail = 1;</p> <p> }</p> <p> <br></p> <p> //실패시</p> <p> if (fail == 1 || timeron == 1) {</p> <p> digitalWrite(red, LOW);</p> <p> timeron = 0;</p> <p> fail = 0;</p> <p> delay(5000);</p> <p> digitalWrite(red, HIGH);</p> <p> start1 = 0; //스타트 초기화</p> <p> }</p> <p> }</p> <p> <br></p> <p> //RFID*******************************************************************************************************************************************************************************************************************</p> <p> <br></p> <p>} //loop문</p> <p> <br></p> <p>```</p>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.