인기글 [02/22] (정보) 매일아침 텐트치는 식단공개 (67)  
검색
홈으로 |로그인 | 무료회원가입 | 포인트출석 | 포인트적립방법 및 계급정책 
자동
회원가입 | 아이디 · 비밀번호 찾기
알뜰공간
 업체정보  | 핫딜정보
 컴퓨터견적  | 보험상담실
 공동구매  | 나눔쿠폰
포인트공간
 포인트배팅  | 포인트퀴즈
 포인트선물  | 홍보포인트
 가위바위보 | 자동차경주
 포인트슬롯 | 포인트복권
 이벤트/충전소 | 포인트순위
이토공간  

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

  • 아치미슬 채택답변수 (136)
  • drury 채택답변수 (25)
  • 금기자 채택답변수 (13)
  • 여자와아이는놔줘 채택답변수 (12)
  • 빅장스타일러 채택답변수 (11)
  • cusp 채택답변수 (11)
  • 능글이3 채택답변수 (9)
  • 페이마임 채택답변수 (9)
  • 겨울숲 채택답변수 (8)
       
    [컴퓨터/인터넷]

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

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

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

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

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

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


    #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
    114629 [음악]  북유럽쪽 출신 남성가수의 뮤비를 찾습니다. 락정기
    295 00:23 1
    114628 [기타]  공기업의 지역인재 채용과 블라인드 (1) 느리게걷는사…
    500 00:19 29
    114627 [컴퓨터/인터넷]  전면부 시스템쿨러가 전원을 꺼도 안멈추네요 (5) 스샷첨부 멍통
    200 02-22 41
    114626 [TV/영상]  [일드] 무마시킨 겨울 ~우리 집 문제는 없었던 일로~ 자막 구해봅니다. 김몽실
    200 02-22 24
    114625 [쇼핑]  옥션 편의점택배 반품 질문 입니다. 우리바
    500 02-22 39
    114624 [컴퓨터/인터넷]  윈10 실행창(돋보기) 명령어를 까먹었습니다. 알수있을까요? (3) CubeSI
    200 02-22 71
    114623 [경제/재테크]  경기도 경기침체?? (5) gwonm
    300 02-22 121
    114622 [기타]  실업급여 질문 드립니다. (4) 이제화
    1000 02-22 103
    114621 [TV/영상]  btn 녹화에 관해 질문드립니다 (2) 다이돌핀
    500 02-22 37
    114620 [기타]  비데 직접 설치하다가 기존 볼트가 두동강 났어요;; (5) 스샷첨부 써브듀
    200 02-22 144
    114619 [기타]  피어 더 워킹데드 S04E15 한글자막 구해요 (1) 마틴고어
    500 02-22 41
    114618 [교육/학문]  현직 소방점검 관련 직종에 근무하는 이토인 계신가요? (1) 男子
    500 02-22 89
    114617 [컴퓨터/인터넷]  용량 큰 파일 복사/이동 안되는 현상 (2) 막출
    200 02-22 131
    114616 [컴퓨터/인터넷]  외장 ssd속도 질문이요 (5) 홍이요
    500 02-22 94
    114615 [음악]  갤럭시 j3 2016인데요 (2) 주백통
    200 02-22 94
    114614 [컴퓨터/인터넷]  와이파이 속도 측정결과에 대해서 질문이요~ (4) 스샷첨부 프로이카
    200 02-22 88
    114613 [컴퓨터/인터넷]  바이두 광고 스샷첨부 청수사
    1000 02-22 123
    114612 [컴퓨터/인터넷]  파이썬 내용 한번만 해석해주세영 (1) 깔봉
    1000 02-22 119
    114611 [TV/영상]  스카이라이프 위성 케이블에 대해서 질문 드립니다. (3) dlfjswps
    1000 02-22 82
    114610 [취미/생활]  독일 여행에 대해 정보 부탁드립니다. (5) ㅏㅐ구
    500 02-22 83
    114609 [컴퓨터/인터넷]  source tree 질문이요 (3) 예스노예스하…
    2000 02-22 60
    114608 [기타]  예전 이토같은 강좌, 전자책 많은 곳 있나요? (2) 밤팅이
    200 02-22 182
    114607 [경제/재테크]  원룸 도시가스 전기세 질문입니다...... (7) 유나군
    300 02-22 274
    114606 [컴퓨터/인터넷]  형님들 백신 갠춘한거 하나만 주십쇼.. (6) 갈릭2
    500 02-22 209
    114605 [게임]  오랜만에 와서 다운받는걸 까먹음 (2) 스샷첨부 데아클라인
    200 02-22 233
    114604 [TV/영상]  영화제목 궁금합니다..오토바이 탄 여자 (4) 아드렌
    200 02-22 244
    114603 [취미/생활]  일본어 한문장 번역좀 부탁드립니다 (2) 15S51
    1000 02-21 168
    114602 [건강/의학]  가정용 체온계 추천 부탁드립니다 (4) 천마검선
    1000 02-21 121
    114601 [게임]  쉐도우 오브 툼레이더 버그 질문입니다 (3) vnfmsg
    200 02-21 106
    114600 [취미/생활]  만화책 제목이 궁금합니다 (2) 금주성공
    1000 02-21 195

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