인기글 [10/23] (정보) 전자레인지 500% 활용법  
검색
홈으로 |로그인 | 무료회원가입 | 포인트출석 | 포인트적립방법 및 계급정책 
자동
회원가입 | 아이디 · 비밀번호 찾기

질문과답변 월간 최다답변채택 회원

  • remigius 채택답변수 (108)
  • 맹물 채택답변수 (77)
  • 치단된코멘트 채택답변수 (34)
  • 유랑천하 채택답변수 (18)
  • 여명808 채택답변수 (17)
  • donn 채택답변수 (12)
  • 페이마임 채택답변수 (11)
  • 능글이3 채택답변수 (11)
  • 나도익명 채택답변수 (10)
       
    [컴퓨터/인터넷]

    아두이노 관련 문의 드립니다

    글쓴이 : 대청 날짜 : 2018-10-12 (금) 11:26 조회 : 230

    현재 졸작으로 음주측정잠금장치를 만드는데

    저희가 만든 케이스에 잠금 장치를 만들어두고 그 위에 알콜센서를 두어 음주후 불었을때 일정수치이상이 되면 빨간불이 들어와 서브모터를 이용하여 잠금장치가 작동하지 않고 일정수치이하가 되면 파란불이 들어오고 잠금장치가 풀리는 것을 만들고 있습니다

    현재 문제는 서브모터가 맘대로 작동하지가 않네요...

    한번 봐주시고 문제점이나 해결책 좀 주세요~~


    #include <Servo.h>

    Servo myservo;     // 서보모터 객체 생성

    int mq3Pin = A0;    // MQ-3 센서핀을 아두이노 보드의 A5 핀으로 설정
    int redPin = 7;     // LED 센서의 R 핀을 아두이노 보드의 7번 핀으로 설정
    int greenPin = 6;   // LED 센서의 G 핀을 아두이노 보드의 6번 핀으로 설정
    int bluePin = 5;    // LED 센서의 B 핀을 아두이노 보드의 5번 핀으로 설정
    int val = 0;        // 에탄올 센서 전역변수 설정
    int piezo = 3;      // 부저 스피커 3번핀으로 설정
    int motor = 9;      // 서보모터 2번 핀으로 설정
    int angle = 90;     // 서보모터 초기 각도 값(90도)

    void setup(){
      myservo.attach(motor);          // 서보모터 연결
      myservo.write(angle);
      Serial.begin(9600);          // 아두이노 보드와 PC간의 통신속도 설정 
      pinMode(redPin,OUTPUT);       // LED의 R,G,B 핀을 출력으로 설정
      pinMode(greenPin,OUTPUT);
      pinMode(bluePin,OUTPUT);
      pinMode(piezo, OUTPUT);       // 부저 스피커 출력설정
      delay(1000);
    }

    void loop(){
      val = analogRead(mq3Pin); 
      Serial.println(analogRead(mq3Pin));   // MQ-3 센서 출력값을 시리얼 모니터로 출력

      if(val>=400){                  // 센서 값이 400 이상이면
        if(val == 400){
          setColor(255, 0, 0);         // RGB 빨강
          Serial.print("400임");
          tone(piezo, 494);          // 부저 스피커 특정 조건이 만족하면 "시" 음으로 울림
          servo_ON();
          delay(500);
        }
      } 
      else if(val>=200 && val<400){  // 센서 값이 200 이상, 400 미만이면
        if(val <= 399){
          setColor(255, 255, 0);       // RGB 노랑
          Serial.print("300임");
          tone(piezo, 494);
          servo_ON();
          delay(500);
        }
      }
      else if(val<=200){               // 센서 값이 200 미만 이면
        if(val <= 200){                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
          setColor(0, 0, 255);          // RGB 파랑
          Serial.print("200임");
          servo_ON();
          myservo.write(angle);
          delay(500);
        }
      }
       noTone(piezo);
       servo_OFF();
    }

    // RGB 색상만들기용
    void setColor(int red, int green, int blue)
    {
      analogWrite(redPin, red);
      analogWrite(greenPin, green);
      analogWrite(bluePin, blue);
    }

    void servo_ON(){
      myservo.attach(9);  // attaches the servo on pin 9 to the servo object
      myservo.write(90);
      myservo.detach(10000);
    }

    void servo_OFF(){
      myservo.attach(9);  // attaches the servo on pin 9 to the servo object
      myservo.write(0);
      myservo.detach(10000);
    }


    요청자가 자신의 1000포인트를 걸었습니다. 답변이 채택되면 500포인트를 드립니다.

    치단된코멘트 2018-10-12 (금) 11:43
    1. int motor = 9;      // 서보모터 2번 핀으로 설정

    2. setup에서 attach했는데 밑에 servo_on, off에서 attach, detach를 왜 하는거지요?

    3. 버튼을 하나 만들어서 다시 잠글 수 있게 만드는게 좋겠네요.

    4. 입으로 불었을때에 불었는지 안 불었는지 어떻게 체크하지요? air pressure sensor를 붙여야 할거 같은데요. 일단 입으로 공기를 불었는지 안 불었는지 체크하는게 먼저일거 같네요.

    5.  else if(val<=200) 불었는지 안 불었는지 로직이 없어서 이 조건문은 항상 작동합니다.

    6. rgb led도 255가 의미가 없습니다. setColor(0, 0, 1);  해도 마찬가지입니다. high, low만 있어서요.

    - 시리얼과 led로 출력 하지 마시고 lcd나 oled로 텍스트로 보이게 하고 나중에 3d print로 하우징해서 외관으로도 있어보이게 만드는거 추천요. 전원도 충전식 배터리 붙여야 겠네요.
         
           
    글쓴이 2018-10-12 (금) 13:50
    저희도 그렇게 잘 알지 못해서 이래저래 묻고 배운거 갖다붙이고 한거 같아요 ㅎㅎ
    에어압력센서도 구입해야 하고 전원 온오프도 잡아야할꺼 같아요
    배터리는 보조배터리 분해해서 달려고 하고 있어요
    어느정도 정리해서 해보고 다시 도움부탁드립니다 ^^
    blkbird 2018-10-12 (금) 12:15
    loop문에서 if문을 처리하더라도
    if문을 벗어나 마지막에 servo_OFF()를 항상 만나게 되어 있으니
    if문내에서 servo_OFF()가 처리되도록 함이 바람직함.
       

    질문과답변 질문상태  |   | 
     
    번호 제목 글쓴이 상태 포인트 날짜 조회
    [공지]  ※ 토렌트사이트질문,자료요청 금지 (질문자,답변자 같이 제재) eToLAND
    0 08-25
    [공지]  ※ 질문과답변 게시판 이용안내 eToLAND
    0 03-28
    111185 [음악]  이 음악 찾고 싶네요. 아이스푸푸
    1200 11:43 22
    111184 [컴퓨터/인터넷]  컴알못 메인보드 추천좀요 (1) 백이이
    350 11:31 28
    111183 [컴퓨터/인터넷]  네이버 아이디 해킹 (3) 쭌옵
    1000 09:46 211
    111182 [컴퓨터/인터넷]  고장난 하드디스크 헤드만 구해 수리할 수 있을까요? (9) 오드아이서클
    500 08:03 147
    111181 [컴퓨터/인터넷]  삼성노트북 램프 질문이요 (2) 주백통
    200 08:02 43
    111180 [기타]  하이패스 단말이 전원표시는 뭘까요?? (2) 스샷첨부 애니사랑vv
    700 05:14 118
    111179 [기타]  카페나 인터넷에서 중고 거래할때 개인정보 어디까지 노출해야되나요? (3) AH모르파티
    200 04:18 109
    111178 [기타]  20평정도 보일러설치 얼마나 할까요? (3) 슬림덕
    1000 02:48 117
    111177 [컴퓨터/인터넷]  마우스 가운데 버튼 인터넷 페이지 클릭시 이표시 안뜨게 하는 방법있나요 (1) 스샷첨부 AH모르파티
    200 02:03 139
    111176 [음악]  노래 잘 부르고 싶은데 .. 이거 타고나야 하나요? (7) impossi
    200 00:41 147
    111175 [컴퓨터/인터넷]  유튜브 수익창출 질문좀.. (5) 깐죽솜
    500 00:38 193
    111174 [전자기기]  갤럭시s6 수평보정 (1) 이러럴수가
    200 10-22 103
    111173 [쇼핑]  야자수 매트 구입처 문의.. 상향이동
    248 10-22 113
    111172 [경제/재테크]  이사 후 하자 발생시 보상을 전주인한테 청구가 가능한가요?? (3) 키스톤
    500 10-22 161
    111171 [기타]  중소기업 청년 소득세 감면 신청하는데 원천징수 관련하여 질문있습니다. (1) 염아
    200 10-22 86
    111170 [전자기기]  노트북 키보드 오류 어떻게 고쳐야 되나요? (4) 미미지키
    700 10-22 66
    111169 [기타]  금정상환 서류 작성후 돈빌려줬을시.... (1) 강인수
    500 10-22 49
    111168 [교육/학문]  공차설계의 치수공차 예제 이응이응크크
    1000 10-22 90
    111167 [기타]  아마 성우분이신 것같은데... (2) 스샷첨부 큰곰백작님
    200 10-22 172
    111166 [컴퓨터/인터넷]  PC 중고시세 좀 여쭤보겠습니다. (3) 스샷첨부 Jabberwk
    500 10-22 127
    111165 [게임]  어세신 크리드 시리즈 순서와 리메이크 발매 정도좀 알려주실분 없으신가요? (4) epub
    1000 10-22 116
    111164 [기타]  면세품 질문 (3) Ashlyn
    300 10-22 65
    111163 [건강/의학]  MRI 비용이 어떻게 되나요 (3) 토깽㉧i
    300 10-22 165
    111162 [취미/생활]  타오바오 건담 직구 관련 문의 입니다.. (5) 으와웅
    300 10-22 126
    111161 [전자기기]  카메라를 중고로 처분하려는데 문의드립니다. (7) 유정연♡
    935 10-22 133
    111160 [컴퓨터/인터넷]  게이밍 노트북 사려는데.. (9) 살자니고생
    200 10-22 182
    111159 [취미/생활]  막걸리식초 만들기 (1) 봉래산
    1000 10-22 143
    111158 [컴퓨터/인터넷]  워드프레스 블로그 복구 (3) I0O4™
    500 10-22 79
    111157 [취미/생활]  다육이가 말라 죽어가고 있어요. (5) 스샷첨부 하이네켄☆
    500 10-22 227
    111156 [기타]  이런 농기계는 이름이랑 어디서 구매(중고)해야 할까요? (2) 스샷첨부 말보로스카이
    500 10-22 188
     1  2  3  4  5  6  7  8  9  10  다음