BASIC4MCU | 질문게시판 | loop 문 관련
페이지 정보
작성자 중독아두이노 작성일2023-08-02 12:37 조회1,877회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=23057
본문
어제 질문은 오늘 천천히 읽어 나가며 합체를 완료 하였습니다. 하지만..루프문 중 패스워드 입력 받는 부분이 있는데 이 패스워드 입력 받는것 때문에버튼이나 초음파 센서 쪽으로 루프문이 안넘어가고 키패드에 걸려 있습니다.밑줄 친 부분을 혹시나 어떤 방법을 사용해서 탈출이 가능 할까요..?void loop(){if (millis() > 10) { // 10ms 가 되면timer0_millis=0; // millis 카운트 초기화if (digitalRead(pirPIN) == HIGH) { // 센서 감지가 되면time=100; // 10ms*500=5초 로 타이머를 설정Serial.println("pir_on");digitalWrite(ledPIN, HIGH); // led on}chk_time(); // 타이머 함수를 호출}char key = keypad.getKey();char str[5]={'0','0','0','0','\0'}; //입력받은 string 생성lcd.setCursor(0,0);lcd.print("Password:");int i=9, j=0;for (j=0;j<4;j++){ //비밀번호 4자릿수를 입력받음{digitalWrite(bluePin,HIGH);key = keypad.waitForKey();tone(buzzer,294,250);//레lcd.setCursor(i,0); //출력받은 키를 커서를 옮겨가며 출력lcd.print(key);str[j] = key; //받은 비밀번호를 스트링에 저장i++;}digitalWrite(bluePin,LOW);}if(strcmp(secretCode,str)==0) //비밀번호가 정확할 때{digitalWrite(greenPin, HIGH);unlock();digitalWrite(greenPin,LOW);}else //비밀번호가 틀렸을 때{digitalWrite(redPin, HIGH);tone(buzzer,262,200);tone(buzzer,262,200);lcd.init();lcd.print("Access Denined");delay(2000);lcd.init(); //LCD 초기화digitalWrite(redPin, LOW);}currentBTN = debounce(lastBTN);float dis = 0;dissensor(dis);if(lastBTN == LOW && currentBTN == HIGH){for(int i = 0; i < 3; i++) {Serial.println("open");mystep.step(steps);}delay(3000);// 초음파 센서 거리 측정Serial.print("distance : ");Serial.print(distance);Serial.println(" cm");float dis = distance;// 측정 거리 범주 내 3초 딜레이, 범주 외 스텝모터 close 동작for(;;) {dissensor(dis);Serial.print("distance : ");Serial.print(distance);Serial.println(" cm 3s delay");delay(3000);if(distance > 21) {for(int i = 0; i < 3; i++) {Serial.println("close");mystep.step(-steps);}break;}}}lastBTN = currentBTN;}
댓글 1
조회수 1,877master님의 댓글
master 작성일
if (millis() > 10) { // 10ms 가 되면
루프문 초기의 if()문 실행이 안되는 것이 문제인가요?
10ms 주기의 타이머인터럽트를 사용해서 처리 해보세요