인기글 [06/25] (연예인) 조현 아리 코스프레 볼륨감.. (25)  
검색
홈으로 |로그인 | 무료회원가입 | 포인트출석 | 포인트적립방법 및 계급정책 
자동
회원가입 | 아이디 · 비밀번호 찾기
알뜰공간
 업체정보  | 핫딜정보
 컴퓨터견적  | eTo마켓
 자동차업체  | 남성스타일
 보험상담실  | 대출상담실
자료공간
 공개자료실  | 추천사이트
포인트공간
 나눔이벤트  | 포인트배팅
 포인트선물  | 홍보포인트
 가위바위보 | 자동차경주
 포인트슬롯 | 포인트복권
 이벤트/충전소 | 포인트순위
이토공간
 공지사항  | 문의사항
 자주묻는질문  | 토렌트팁
 포인트적립 및 계급정책안내

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

  • 허밍타임2 채택답변수 (86)
  • 맹물 채택답변수 (23)
  • 금기자 채택답변수 (22)
  • 5180 채택답변수 (21)
  • 헌병대 채택답변수 (9)
  • 곰나라탱 채택답변수 (8)
  • 내가사는이유ㅤ 채택답변수 (5)
  • 능글이3 채택답변수 (5)
  • 갓지라 채택답변수 (5)
       
    [컴퓨터/인터넷]

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

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

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

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

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

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


    #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
    117052 [컴퓨터/인터넷]  인스타그램이나 페이스북 같은 SNS 상은 어떤 방식으로 운영이 되는 건가요? 헌병대
    5000 02:47 21
    117051 [컴퓨터/인터넷]  노트북으로 윈도우 옮기는게 가능한가요? (4) 눈거
    500 06-24 183
    117050 [기타]  개인통관고유부호 아시는분? (4) ModelLyn
    300 06-24 200
    117049 [교육/학문]  전기 설계 전등 가닥수 질문 드립니다. (1) 스샷첨부 ㅋㅌㅊㅍㅁㅂ
    500 06-24 81
    117048 [교육/학문]  "오르다"와 "올랐다'.. 어떻게 다른가요 ? (12) 섶다리
    500 06-24 212
    117047 [쇼핑]  사케 가격과 한국식 발음 이름좀 알려주세요 (5) 스샷첨부 함냐함냐함
    500 06-24 107
    117046 [컴퓨터/인터넷]  곰믹스 프로 크랙 사용중이신분 계시나요? (1) 그리운그날
    500 06-24 52
    117045 [기타]  옛날 만화 아시는분 (2) 늑유온
    500 06-24 315
    117044 [기타]  폭행사건 피해자입니다 문의드려요 (4) 왕의왕
    300 06-24 138
    117043 [컴퓨터/인터넷]  구글 크롬 왜이러는 걸까요? (4) 스샷첨부 실버크로스
    500 06-24 211
    117042 [취미/생활]  만화를 찾고 싶어요!!! (1) 출일호
    300 06-24 144
    117041 [기타]  강아지 키우시는 분께 질문요 (8) 성지김
    500 06-24 134
    117040 [컴퓨터/인터넷]  한글에서 줄간격 글쓸때마다 고정하는 법 있나요. (3) 스샷첨부 조각상
    400 06-24 70
    117039 [기타]  신차 자동차 보험 가입 질문 입니다. (6) 나별
    500 06-23 157
    117038 [취미/생활]  토이스토리 피규어 구매 어디서 해야할까요 (3) ro444
    300 06-23 189
    117037 [기타]  VR 인덱스를 구매하고 싶은데 방법이 궁금합니다 (2) kamakura
    300 06-23 92
    117036 [기타]  신호위반 카메라 찍힌거 언제쯤 집으로 오나요? (3) 제임스BOND
    2000 06-23 174
    117035 [기타]  혹시 꿈 해몽 가능 하신 분 있으실까요? (4) 가을의슬픔
    300 06-23 154
    117034 [기타]  번호변경후 카톡 계정을 탈퇴를 안하고 지워서 문제가 생겼어요.. (3) 그리운그날
    300 06-23 452
    117033 [기타]  아파트 천장 부분 누수 민사소송 가능한가요?? 답변을 듣고싶습니다. (3) 스샷첨부 한선희ALPHAM
    1500 06-23 203
    117032 [취미/생활]  미용실 용어 설명좀 해주세요 (2) 간담z
    400 06-23 172
    117031 [기타]  이 부분을 뭐라고 하나요? (6) 스샷첨부 휴지끈티팬티
    500 06-23 399
    117030 [취미/생활]  안경점에서 안경을 잘못 맞췄는데 이럴 경우 렌즈값 날린건가요? (23) 몸근영
    300 06-23 377
    117029 [전자기기]  주택 식기세척기 설치 (3) 스샷첨부 크런키z
    500 06-22 305
    117028 [전자기기]  스마트폰 화면이 간헐적으로 깜박거리는데 뭔가요? (4) 클리소벨
    300 06-22 143
    117027 [경제/재테크]  신용카드를 현금카드 위주로 쓸 경우에, 신용등급 상승에 반영이 되나요? (1) 간담z
    300 06-22 247
    117026 [기타]  현관 방범 방충문 잠금장치가 고장났는데 이 부품을 인터넷에서 구할수 있을까요? (3) 스샷첨부 sildra
    1500 06-22 126
    117025 [음악]  키타를 피크 대신 손가락으로 눌러 치는 것은 뭐라 하나요 ? (8) 스샷첨부 섶다리
    500 06-22 271
    117024 [기타]  인터파크 투어 청주 -> 제주 항공권 예약했는데요... (2) 아이언커튼
    300 06-22 104
    117023 [컴퓨터/인터넷]  블루레이 odd (4) suseke
    1000 06-22 271

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