편집 기록

편집 기록
  • 프로필 ᅟᅟᅟᅟ님의 편집
    날짜2021.12.08

    아두이노 코드 여쭤볼 수 있을까요??


    #include <SoftwareSerial.h>
    #define FND_A 2 // 핀 매치, A는 2번핀
    #define FND_DP 9 // 핀 매치, DP는 9번핀
    
    int TxPin = 11;              // 블루투스 TX핀 2번핀에 연결
    int RxPin = 10;             // 블루투스 RX핀 3번핀 연결
    SoftwareSerial BTSerial(TxPin, RxPin); 
    int Sound_Sensor = A0;     //소리 감지 센서 A0핀 연결
    int OUTPUT_pin = 13;        //LED연결한 릴레이모듈 6번 핀에 연결
    int i,j,q,m;                     //반복문, 7세그먼트 제어 위해  변수 선언
    
    void setup(){
     Serial.begin(9600);
      BTSerial.begin(9600);;
      pinMode(Sound_Sensor,INPUT);      //소리 감지 센서를 입력으로 설정
      pinMode(OUTPUT_pin,OUTPUT);       //릴레이 모듈에 연결된 핀을 출력으로 설정
      for (j=FND_A; j<=FND_DP; j++) // 핀 번호가 연속적으로 할당되어 있으므로 가능
    pinMode(j, OUTPUT); // pin2 ~ pin9 까지 모두 출력으로 세팅
    }
    
    void loop(){
      if(BTSerial.available())      
        {
          char cmd = (char)BTSerial.read();
          if(cmd=='1'){                       //어플상 전등 켜기 누르면 켜짐
            digitalWrite(OUTPUT_pin,HIGH);
          }else if(cmd=='0'){                 //어플상 전등 끄기 누르면 꺼짐
            digitalWrite(OUTPUT_pin,LOW);  
          }
    }
      boolean digit[11][8] = {
    {1, 1, 1, 0, 0, 1, 1, 0}, // 숫자 ‘9’에 대응
    {1, 1, 1, 1, 1, 1, 1, 1}, // 숫자 ‘8’에 대응
    {1, 1, 1, 0, 0, 0, 0, 1}, // 숫자 ‘7’에 대응
    {1, 0, 1, 1, 1, 1, 1, 0}, // 숫자 ‘6’에 대응
    {1, 0, 1, 1, 0, 1, 1, 0}, // 숫자 ‘5’에 대응
    {0, 1, 1, 0, 0, 1, 1, 0}, // 숫자 ‘4’에 대응
    {1, 1, 1, 1, 0, 0, 1, 0}, // 숫자 ‘3’에 대응
    {1, 1, 0, 1, 1, 0, 1, 0}, // 숫자 ‘2’에 대응
    {0, 1, 1, 0, 0, 0, 0, 0}, // 숫자 ‘1’에 대응
    {1, 1, 1, 1, 1, 1, 0, 0}, // 숫자 ‘0’에 대응
    {0,0,0,0,0,0,0}}; 
    
    boolean clearsegment[] = {0,0,0,0,0,0,0,0};
    
      if(analogRead(Sound_Sensor)>700){    // 소리 감지 센서에서 700이상 감지시 동작
        for (q=0; q<=10; q++){ // 숫자가 0~9까지 10개이므로 10번 루프
          for (j=FND_A; j<= FND_DP; j++){ // 정해진 한 개의 숫자 디스플레이
           digitalWrite(j, digit[q][j-2]); // 각 핀에 대응되는 1, 0 값을 Write
           digitalWrite(OUTPUT_pin,HIGH); //LED켜짐
           }
           delay(500);
           digitalWrite(OUTPUT_pin,LOW); //LED꺼짐
           delay(500);
        if(BTSerial.available())              
        {
          char cmd = (char)BTSerial.read();
          if(cmd=='3') {          //어플 상에서 알람 확인 누르면 브레이크
            for (j=FND_A; j<= FND_DP; j++){
              digitalWrite(j, clearsegment);
            }
          break;}
        }
        }
        }
       else {
        digitalWrite(OUTPUT_pin,LOW);  //시간 지나면 꺼짐
      }
    }
    

    위의 코드에서 if(cmd=='3') { //어플 상에서 알람 확인 누르면 브레이크 for (j=FND_A; j<= FND_DP; j++){ digitalWrite(j, clearsegment); } break;} 이 조건이 실행되면 7세그먼트 화면이 꺼지면서 코드가 중지되게 하고 싶은데 LED는 멈추는데 7세그먼트는 그 숫자에서 멈추더군요... 이 때 7세그먼트가 아예 꺼지게 하고 싶은데 방법을 모르겠습니다...

  • 프로필 알 수 없는 사용자님의 편집
    날짜2021.12.08

    아두이노 코드 여쭤볼 수 있을까요??


    include

    define FND_A 2 // 핀 매치, A는 2번핀

    define FND_DP 9 // 핀 매치, DP는 9번핀

    int TxPin = 11; // 블루투스 TX핀 2번핀에 연결 int RxPin = 10; // 블루투스 RX핀 3번핀 연결 SoftwareSerial BTSerial(TxPin, RxPin); int Sound_Sensor = A0; //소리 감지 센서 A0핀 연결 int OUTPUT_pin = 13; //LED연결한 릴레이모듈 6번 핀에 연결 int i,j,q,m; //반복문, 7세그먼트 제어 위해 변수 선언

    void setup(){ Serial.begin(9600); BTSerial.begin(9600);; pinMode(Sound_Sensor,INPUT); //소리 감지 센서를 입력으로 설정 pinMode(OUTPUT_pin,OUTPUT); //릴레이 모듈에 연결된 핀을 출력으로 설정 for (j=FND_A; j<=FND_DP; j++) // 핀 번호가 연속적으로 할당되어 있으므로 가능 pinMode(j, OUTPUT); // pin2 ~ pin9 까지 모두 출력으로 세팅 }

    void loop(){ if(BTSerial.available())
    { char cmd = (char)BTSerial.read(); if(cmd=='1'){ //어플상 전등 켜기 누르면 켜짐 digitalWrite(OUTPUT_pin,HIGH); }else if(cmd=='0'){ //어플상 전등 끄기 누르면 꺼짐 digitalWrite(OUTPUT_pin,LOW);
    } } boolean digit[11][8] = { {1, 1, 1, 0, 0, 1, 1, 0}, // 숫자 ‘9’에 대응 {1, 1, 1, 1, 1, 1, 1, 1}, // 숫자 ‘8’에 대응 {1, 1, 1, 0, 0, 0, 0, 1}, // 숫자 ‘7’에 대응 {1, 0, 1, 1, 1, 1, 1, 0}, // 숫자 ‘6’에 대응 {1, 0, 1, 1, 0, 1, 1, 0}, // 숫자 ‘5’에 대응 {0, 1, 1, 0, 0, 1, 1, 0}, // 숫자 ‘4’에 대응 {1, 1, 1, 1, 0, 0, 1, 0}, // 숫자 ‘3’에 대응 {1, 1, 0, 1, 1, 0, 1, 0}, // 숫자 ‘2’에 대응 {0, 1, 1, 0, 0, 0, 0, 0}, // 숫자 ‘1’에 대응 {1, 1, 1, 1, 1, 1, 0, 0}, // 숫자 ‘0’에 대응 {0,0,0,0,0,0,0}};

    boolean clearsegment[] = {0,0,0,0,0,0,0,0};

    if(analogRead(Sound_Sensor)>700){ // 소리 감지 센서에서 700이상 감지시 동작 for (q=0; q<=10; q++){ // 숫자가 0~9까지 10개이므로 10번 루프 for (j=FND_A; j<= FND_DP; j++){ // 정해진 한 개의 숫자 디스플레이 digitalWrite(j, digit[q][j-2]); // 각 핀에 대응되는 1, 0 값을 Write digitalWrite(OUTPUT_pin,HIGH); //LED켜짐 } delay(500); digitalWrite(OUTPUT_pin,LOW); //LED꺼짐 delay(500); if(BTSerial.available())
    { char cmd = (char)BTSerial.read(); if(cmd=='3') { //어플 상에서 알람 확인 누르면 브레이크 for (j=FND_A; j<= FND_DP; j++){ digitalWrite(j, clearsegment); } break;} } } } else { digitalWrite(OUTPUT_pin,LOW); //시간 지나면 꺼짐 } }

    위의 코드에서 if(cmd=='3') { //어플 상에서 알람 확인 누르면 브레이크 for (j=FND_A; j<= FND_DP; j++){ digitalWrite(j, clearsegment); } break;} 이 조건이 실행되면 7세그먼트 화면이 꺼지면서 코드가 중지되게 하고 싶은데 LED는 멈추는데 7세그먼트는 그 숫자에서 멈추더군요... 이 때 7세그먼트가 아예 꺼지게 하고 싶은데 방법을 모르겠습니다...