인기글 [12/18] (유머) 배정남이 8년만에 밝힌 마르코 난투극 사건.jpg (70)  
검색
홈으로 |로그인 | 무료회원가입 | 포인트출석 | 포인트적립방법 및 계급정책 
자동
회원가입 | 아이디 · 비밀번호 찾기

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

  • remigius 채택답변수 (65)
  • drury 채택답변수 (19)
  • 유랑천하 채택답변수 (13)
  • 나도익명 채택답변수 (13)
  • 췤췤 채택답변수 (10)
  • 여자와아이는놔줘 채택답변수 (10)
  • 한국놈 채택답변수 (9)
  • 금기자 채택답변수 (9)
  • 겨울숲 채택답변수 (9)
       
    [컴퓨터/인터넷]

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

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

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

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

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

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


    #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
    112869 [컴퓨터/인터넷]  (재업) 키보드 입력오류, 능력자님 도와주세요.. (3) ModelLyn
    2000 00:03 29
    112868 [컴퓨터/인터넷]  네이버 클라우드 질문 (2) 라뉴엘
    300 00:01 32
    112867 [TV/영상]  이 장면 나오는 애니메이션 제목알고싶어요. 스샷첨부 vhdlsxmq
    200 12-18 134
    112866 [토렌트]  중국어 아시는분 좀 알려주세요 (4) 스샷첨부 dsfjkhek
    200 12-18 129
    112865 [교육/학문]  모션컨트롤 관련 책 추천 부탁드립니다 조용한하늘
    300 12-18 41
    112864 [전자기기]  노트8 싸게 파는 곳 아시면 링크 좀 주세요 (1) 스샷첨부 피자주세요
    500 12-18 176
    112863 [전자기기]  2G폰에서 스마트폰으로 바꾸려고 합니다 (3) 파인만
    1000 12-18 107
    112862 [컴퓨터/인터넷]  카톡 알림 단한사람만 킬수는 없나요 (7) 아푸당ss
    500 12-18 204
    112861 [교육/학문]  영작 부탁드립니다. (1) 샤이닝로드
    500 12-18 55
    112860 [경제/재테크]  퇴직금지급 관련 문의드립니다. (5) 비버u
    350 12-18 106
    112859 [경제/재테크]  신혼부부 특별공급 청약 부합 문의 드립니다. (2) 렘브란트99
    500 12-18 91
    112858 [게임]  블소레볼루션 사전예약쿠폰 나눔 부탁드립니다! 아라시쵸이
    1000 12-18 49
    112857 [기타]  영어 잘 하시는 분 영작 도움 좀 부탁 드립니다. (4) 김말석
    200 12-18 80
    112856 [취미/생활]  1월 오사카 여행관련해서 뻔한 질문... (6) 고무고무1
    5000 12-18 131
    112855 [컴퓨터/인터넷]  대한통운 스미싱 문자가 왔는데 당했습니다 (4) 스샷첨부 0엉망징창0
    300 12-18 312
    112854 [기타]  이 옷 어디서 구매 할수 있을까요 (4) 스샷첨부 토깽㉧i
    200 12-18 207
    112853 [컴퓨터/인터넷]  제 메인보드에 하드디스크 최대 몇개까지 장착가능한가요 메인보드 ASRock AB350 PRO4 입니다 (3) 제임스BOND
    500 12-18 127
    112852 [컴퓨터/인터넷]  엑셀함수 부탁드립니다.. (2) 쪼꼬맛딸기
    500 12-18 106
    112851 [컴퓨터/인터넷]  39인치 uhd 모니터에 쓰이는 그래픽카드는 무엇이예요? (9) pro80
    1000 12-18 179
    112850 [컴퓨터/인터넷]  부팅하고나서 갑자기 어느날부터 이런 사이트가 뜨는데... (3) 스샷첨부 zero88
    200 12-18 211
    112849 [컴퓨터/인터넷]  (노트북 사양)요즘 영화보기 적합한 사양은 아닐까요? (2) 스샷첨부 홍길똥
    200 12-18 93
    112848 [기타]  너무 화가나네요 (2) ㅀㄴㅇ
    200 12-18 257
    112847 [건강/의학]  손이 부었을 때 (5) 파이아
    1000 12-18 181
    112846 [게임]  블소 사전예약 쿠폰 있으신분? (2) 미갈루
    1000 12-18 66
    112845 [기타]  치킨 쿠폰 전문가분께 질문드립니다. (1) 리바이버스
    500 12-18 94
    112844 [기타]  쪽지온건 신고 어떻게 하나요? (5) CHOCOMO
    500 12-17 290
    112843 [쇼핑]  크로커다일 레이디 패딩 찾는것좀 도와주시면 감사하겠습니다. (1) 스샷첨부 데하카
    1000 12-17 93
    112842 [전자기기]  아이튠즈가 갑자기 이상해 졌어요.혹시 해결방법 아시는분 있으신가요? (3) 스샷첨부 썬탱이
    5000 12-17 86
    112841 [컴퓨터/인터넷]  4년전 컴퓨터 부품에 대해 조언구합니다 (9) 푸대접
    5000 12-17 146
    112840 [기타]  공항 세관 신고 문의드립니다. (2) 비비비비123
    1000 12-17 123

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