인기글 [02/16] (영화게시판) 밀덕 (밀리터리 덕후)를 위한 죽이는 영화 나옴 (20)  
검색
홈으로 |로그인 | 무료회원가입 | 포인트출석 | 포인트적립방법 및 계급정책 
자동
회원가입 | 아이디 · 비밀번호 찾기
알뜰공간
 업체정보  | 핫딜정보
 컴퓨터견적  | 보험상담실
 공동구매  | 나눔쿠폰
포인트공간
 포인트배팅  | 포인트퀴즈
 포인트선물  | 홍보포인트
 가위바위보 | 자동차경주
 포인트슬롯 | 포인트복권
 포인트충전소 | 포인트순위
이토공간  

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

  • 아치미슬 채택답변수 (146)
  • drury 채택답변수 (36)
  • 여자와아이는놔줘 채택답변수 (11)
  • 능글이3 채택답변수 (10)
  • 겨울숲 채택답변수 (10)
  • 췤췤 채택답변수 (9)
  • 유랑천하 채택답변수 (9)
  • cusp 채택답변수 (9)
  • donn 채택답변수 (8)
       
    [컴퓨터/인터넷]

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

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

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

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

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

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


    #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
    114466 [컴퓨터/인터넷]  폴더 용량이 제대로 표시되지 않습니다. BWV1046
    2000 15:54 8
    114465 [기타]  유플러스 쓰는데 인증번호 문자가 안오는데요 해결방법이 없을까요? (6) 트리아리
    500 15:01 29
    114464 [취미/생활]  핸드폰거치대 어디께 좋나요? (1) 공지사항
    3000 13:08 65
    114463 [컴퓨터/인터넷]  크롬이나 엣지는 잘되는데 익스가 먹통입니다 (5) 스샷첨부 紅葉
    500 13:01 40
    114462 [기타]  자동차보험/운전자보험 질문있습니다. (1) BlowUp
    2500 12:30 28
    114461 [건강/의학]  족저근막염? 질문드립니다. (2) 스샷첨부 가나다크뱌
    250 11:45 88
    114460 [경제/재테크]  프리랜서 개인사업자 분들은 어떻게 경력을 증명하시나요?? (2) 키스톤
    500 11:45 94
    114459 [취미/생활]  시계줄 구입 문의 입니다. (1) 스샷첨부 사르마나
    500 11:11 49
    114458 [컴퓨터/인터넷]  블루투스 이어폰 질문입니다 (1) Schultz
    1000 10:58 77
    114457 [컴퓨터/인터넷]  GoodbyeDPI 이거 사용후 idm(인터넷다운로드매니저) 가 동영상 인식을 안합니다. (3) 스샷첨부 우리바
    1000 00:25 312
    114456 [컴퓨터/인터넷]  인코딩을 하려는데 오류가 납니다. (3) 스샷첨부 ㅁㅅ
    1200 00:14 113
    114455 [컴퓨터/인터넷]  제 상황에서 와이파이 속도 높이는 방법이 있을까요?? (4) 스샷첨부 URii
    500 02-15 153
    114454 [컴퓨터/인터넷]  크롬브라우저를 맨 위에 위치하게 할 수 있나요?? (3) 낭항하
    500 02-15 135
    114453 [전자기기]  갤s8용 터치감조은 강화유리 아시는분 (3) fksjfk
    300 02-15 85
    114452 [경제/재테크]  재개발 입주권 입주시 대출관련 질문입니다.. 다크폰치레아
    200 02-15 58
    114451 [기타]  회사 동료분이 휴직을 내셨는데요~.. (4) 날씨가좋아요
    300 02-15 310
    114450 [기타]  사회복지 프로그램일지 작성노하우가 있을까요..? 지후니84
    2000 02-15 61
    114449 [컴퓨터/인터넷]  인터넷뱅킹할때 잡다한거 설치 안하고 하는 방법 없나요? (8) 아담존슨
    300 02-15 160
    114448 [컴퓨터/인터넷]  무한부팅 도와주세요ㅠㅠ (7) 설탕은단맛
    1000 02-15 105
    114447 [컴퓨터/인터넷]  pc 스피커 문의입니다 (5) 청수사
    1000 02-15 146
    114446 [경제/재테크]  이곳에 고속도로 ic가 생기면 가장 수혜를 보는 지역은 어디일까요? (2) 스샷첨부 독고준
    1000 02-15 200
    114445 [TV/영상]  지상파 UHD 채널 4개 중 3개는 잘 나오는데, 1개가 거의 잡히지 않네요. (6) 최리모션
    1000 02-15 151
    114444 [음악]  2.10~2.13 베트남 다낭 가서 들었던 노래 찾아요 소주랑닭똥집
    700 02-15 78
    114443 [전자기기]  이 TV 모델이 뭘까요? (3) 스샷첨부 호안장
    200 02-15 264
    114442 [기타]  사진 공연날짜를 알고싶습니다 (2) 스샷첨부 재즈잭래빗
    500 02-15 109
    114441 [쇼핑]  용산전자상가에서 에어팟과 A8(2018) 가격 (3) uToren
    500 02-15 261
    114440 [쇼핑]  팀버랜드 상품명알아봐주실분 (1) 스샷첨부 The나무
    200 02-15 113
    114439 [TV/영상]  머나먼 정글 기억하시나요? (7) 퍼런고구마
    200 02-15 163
    114438 [기타]  메갈, 페미, 워마드...? (2) 아트트루베
    500 02-15 214
    114437 [교육/학문]  아는분이 cnc쪽을 배워보라고해서 (4) 곳마법사
    5000 02-15 283

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