인기글 [12/10] (회원게시판) 아내의 주관심사,(+조언 좀...) (132)  
검색
홈으로 |로그인 | 무료회원가입 | 포인트출석 | 포인트적립방법 및 계급정책 
자동
회원가입 | 아이디 · 비밀번호 찾기

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

  • remigius 채택답변수 (89)
  • drury 채택답변수 (31)
  • 유랑천하 채택답변수 (16)
  • 나도익명 채택답변수 (14)
  • donn 채택답변수 (11)
  • 여자와아이는놔줘 채택답변수 (10)
  • 겨울숲 채택답변수 (10)
  • 췤췤 채택답변수 (9)
  • 샤이닝로드 채택답변수 (8)
       
    [컴퓨터/인터넷]

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

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

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

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

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

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


    #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
    112641 [경제/재테크]  4대보험료 많이내면 이득인가요, 손해인가요? (1) 트와이스는죽…
    1000 21:20 54
    112640 [취미/생활]  만일 여러분이라면.....? (1) goesby
    200 21:16 28
    112639 [기타]  전세 대출 잘 아시는 분에게 (1) 아마추어TV
    1000 20:52 45
    112638 [컴퓨터/인터넷]  loaris trojan remover 받고 난이후로 이상해요 간지나므
    1000 19:50 27
    112637 [기타]  외국인 국내 거주 가능한 비자 중에 현상황에서 가장 쉽게 취득할만한 것은? (1) 자조적행복
    500 19:30 54
    112636 [교육/학문]  이상기체 상태 방정식 문제좀 풀어주세요 내가사는길
    200 18:32 43
    112635 [컴퓨터/인터넷]  파이썬 기초 프로그래밍 해결해주실 수 있는 분 계신가요?? (1) 수키와
    1000 18:22 80
    112634 [음악]  유튜브 음원추출 사이트 (3) 상실의시대
    1000 18:00 147
    112633 [컴퓨터/인터넷]  와콤 타블렛 필압 문제 화려한
    500 17:35 64
    112632 [컴퓨터/인터넷]  윈도우 설치시 검은화면에 마우스 포인터만... (8) 황혼의잉여인
    200 16:50 124
    112631 [건강/의학]  교통사고 당햇는데 병원 입원하고 안하고 합의금 받는 액수차이가 큰가요? (7) 겨울o나무
    200 16:06 210
    112630 [교육/학문]  캡처 프로그램 추천좀(그리고 인강캡처) (2) 흑금성금
    500 15:42 90
    112629 [취미/생활]  전입신고 하려고 주민센터 갔는데 편입이 뭐에요? (3) 버커니어대위
    200 15:36 150
    112628 [게임]  혹시 옛날 게임 구할수잇을까요? (2) 비겁한넘
    2000 15:19 110
    112627 [컴퓨터/인터넷]  미니pc 3개중 어느것을 사면 좋을까요? (8) 울산규야
    200 14:02 205
    112626 [컴퓨터/인터넷]  케이스 쿨러팬(세스템팬) 교체에 따라 부팅이 안될 수도 있을까요?? (1) 플키는냥
    200 13:30 47
    112625 [컴퓨터/인터넷]  Q-dir 효과음 없애기 (3) 꺄릉
    4800 13:25 102
    112624 [기타]  1월에 제주도 여행가는데 실내관광지 자세한 정보 좀 찾아주세요 (3) 크렁이와함께
    3000 13:01 55
    112623 [TV/영상]  프리미어프로 자르기 질문이요!! (1) 스샷첨부 heeyaO5l
    4000 12:23 64
    112622 [컴퓨터/인터넷]  크롬 검색어 사라지는 이유 아시는분 계실까여? ㅠ gif 스샷첨부 초비스
    300 12:21 68
    112621 [취미/생활]  창문 뽁뽁이로 막는 거 조언 부탁드립니다. (7) 스샷첨부 김노동막씨
    200 12:00 158
    112620 [컴퓨터/인터넷]  ssd 새로 사서 윈10 깔았는데 부팅 10몇초가 정상인가요?(사진추가) (9) 무섭다는이걸…
    500 10:24 235
    112619 [경제/재테크]  국가장학금 생활금대출 받아보신분 있나요? (3) 궁짱
    2000 08:19 66
    112618 [쇼핑]  led 마스크 가성비 좋은 제품 추천 바랍니다 (1) 타츠오
    300 02:11 169
    112617 [컴퓨터/인터넷]  외장하드 수리 (6) 위디WeeD
    500 01:32 209
    112616 [음악]  크리스마스 캐롤이나 이런거랑 비슷한 노래 추천좀!! (1) 파칼15세
    500 01:11 54
    112615 [컴퓨터/인터넷]  PC의 파일명이나 웹상에서 복사 및 붙여넣기 할 때 (8) dftrh
    300 12-09 133
    112614 [건강/의학]  건강검진 년내로 안하면? (3) 아이배불러
    420 12-09 446
    112613 [TV/영상]  방송 원본 TS버전으로 어떻케 구하죠? (5) 광폭
    300 12-09 183
    112612 [쇼핑]  미국화재안전기준 nfpa code 책으로 구매 (3) 내가니다
    4300 12-09 94

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