인기글 [05/27] (반려동물) 마사지 받고 잠드는 야옹이 뚜루 (20)  
검색
홈으로 |로그인 | 무료회원가입 | 포인트출석 | 포인트적립방법 및 계급정책 
자동
회원가입 | 아이디 · 비밀번호 찾기
알뜰공간
 업체정보  | 핫딜정보
 컴퓨터견적  | eTo마켓
 자동차업체  | 남성스타일
 보험상담실  | 대출상담실
자료공간
 공개자료실  | 추천사이트
포인트공간
 포인트응모  | 포인트배팅
 포인트선물  | 홍보포인트
 가위바위보 | 자동차경주
 포인트슬롯 | 포인트복권
 이벤트/충전소 | 포인트순위
이토공간
 공지사항  | 문의사항
 자주묻는질문  | 토렌트팁
 포인트적립 및 계급정책안내

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

  • 허밍타임2 채택답변수 (94)
  • 헌병대 채택답변수 (15)
  • 내가사는이유ㅤ 채택답변수 (14)
  • 금기자 채택답변수 (11)
  • drury 채택답변수 (10)
  • 굿모닝입니다 채택답변수 (7)
  • nick4 채택답변수 (7)
  • donn 채택답변수 (6)
  • 이화에월담하고 채택답변수 (5)
       
    [컴퓨터/인터넷]

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

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

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

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

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

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


    #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()가 처리되도록 함이 바람직함.
       

    지식iN  주간조회순 | 월간조회순 | 반기조회순 질문상태  |   | 
     
    번호 제목 글쓴이 상태 포인트 날짜 조회
    [공지]  ※ 지식iN 게시판 이용안내 eToLAND
    0 03-28
    [공지]  ※ 토렌트사이트질문,저작권 자료요청 금지 eToLAND
    0 08-25
    116567 [경제/재테크]  개인 회생, 파산 관련해서 문의 드립니다. (1) KKKK
    5000 21:54 17
    116566 [컴퓨터/인터넷]  모바일에선 열리는데 데스크탑에서 안열리는경우는 뭔가요? (1) 클리소벨
    1000 20:28 74
    116565 [기타]  폰트 문의드립니다. (1) 종이장미
    500 19:50 35
    116564 [취미/생활]  산책할만한곳 추천 부탁드립니다. (1) 불펭
    2000 18:56 50
    116563 [음악]  흑인 밴드 음악을 알고 싶습니다~ (1) MyPlace
    300 17:38 58
    116562 [기타]  2층짜리 단독 주택에서 에어컨 사용하시는 분? vmflaos1
    400 16:23 168
    116561 [기타]  사기 고소한거 진행상황 정확히 알아보려면 어떡해야하나요?? (2) gackt082
    1000 13:43 165
    116560 [컴퓨터/인터넷]  사무실 특정 공유기만 네이버, 다음 등 접속이 안됩니다. (3) IFBB
    600 12:55 131
    116559 [기타]  오케이 포스기 (3) 엘렌페이지
    333 10:50 142
    116558 [컴퓨터/인터넷]  트위터 사용하시는 분 질문 좀 (1) 탐색
    500 07:18 95
    116557 [쇼핑]  갤럭시A5 2017 A520 지갑 케이스 추천좀요 (1) 영천사
    300 05:44 100
    116556 [컴퓨터/인터넷]  넷플릭스 오프라인 성인인증 (1) 스샷첨부 지쟈쓰
    300 05-26 811
    116555 [전자기기]  폰 화면이 안나오네요 (4) hell444
    500 05-26 129
    116554 [기타]  어떤 직업이 있을까요? (2) nsg3029
    800 05-26 161
    116553 [기타]  월요일 10시에 경찰서출석하기로했는데 .. 몇일정도 미뤄돌라고하면 미뤄주나요?? (2) 시비거는남자
    3000 05-26 271
    116552 [컴퓨터/인터넷]  파이어폭스에서 구글 이미지 검색 등록하기? (5) 스샷첨부 Tsukasaa
    2000 05-26 76
    116551 [컴퓨터/인터넷]  컴퓨터 초보 탈출 관련 PT 문서 자료 다운 받을수 있는 사이트 있을까요???? (2) 쉥퉁이
    3000 05-26 68
    116550 [교육/학문]  일본어 동사활용과제인데 ㅠㅠ 도와주세요 (7) 스샷첨부 갓유리
    1223 05-26 190
    116549 [TV/영상]  (영화) 동양쪽 동굴 탈출 호러영화 제목 궁금하네요 (2) 빙글빙그르
    1000 05-26 99
    116548 [컴퓨터/인터넷]  노트북 보조 통풍 시스템 조언 좀 부탁 드립니다. (3) 스샷첨부 시나타스
    300 05-26 167
    116547 [컴퓨터/인터넷]  크롬에서 새로 고침 안하고 보도록 설정하는 방법 있나요? (긴급) (7) 곰나라탱
    5000 05-26 119
    116546 [컴퓨터/인터넷]  중고 메인보드에 새생명 불어넣기 프로젝트를 시작하려 합니다. 도와주세요. (1) 스샷첨부 루디2
    1500 05-26 212
    116545 [컴퓨터/인터넷]  윈도우 탐색기에서 "(1)" 이란 단어를 검색할수 있는 방법은 없나요? (3) 스샷첨부 몰라할꺼없어
    300 05-26 189
    116544 [TV/영상]  카카오tv 동영상 퍼오는것좀 알려주세요 (7) Master30
    500 05-26 116
    116543 [기타]  이 자재 이름이 먼가요? (5) 스샷첨부 리리2
    500 05-26 348
    116542 [기타]  검정색봉투를 재활용봉투로 쓰면 불법인가요?? (2) 짱하치
    300 05-26 303
    116541 [경제/재테크]  일반 주택 매매 할때 매도인은 매매후에 멀 해야 하나요? (6) 초짜악마
    500 05-26 135
    116540 [전자기기]  시스템 에어컨 설치 질문 (2) 스샷첨부 백이이
    500 05-26 139
    116539 [교육/학문]  게임 중독에 관해 과제를 해야되는데 어렵네요 ㅠㅠ (2) 갓유리
    2445 05-25 146
    116538 [기타]  이 마이크 구매하고싶은데 방법 알려주세요.. (2) 스샷첨부 향긋한향기
    500 05-25 185

     1  2  3  4  5  6  7  8  9  10  다음