[아두이노 기초]23강_버튼 누르는 횟수에 따라 서보모터의 각도를 다양하게 동작 / 버튼 누를때마다 카운트

Поділитися
Вставка
  • Опубліковано 24 вер 2024
  • 버튼 스위치를 누르는 횟수에 따라 서보모터의 각도를 다양하게 동작시키는 방법을 소개합니다.
    실습코드 다운로드
    drive.google.c...

КОМЕНТАРІ • 7

  • @남드론-i4d
    @남드론-i4d 4 місяці тому

    안녕하세요!
    23강에서 어떤 코드을 넣으면 자동차 와이퍼 처럼 서보모터가 작동할까요?

  • @남드론-i4d
    @남드론-i4d 4 місяці тому

    조언을 부탁드립니다 😊

  • @aosj80
    @aosj80 5 місяців тому

    공부중인 직장인입니다.. 완전 초보구요..
    영상참고해서 led 제어중인데..
    깜박이는 LED제어라서 if문 안에 딜레이 넣어놓았구요..
    if문이 좀 길어요... if문이 끝나야 다음 if 문으로 넘어가구요..
    중요한건 버튼이 먹었다 안먹었다 하네요... 이건 어떻게 해결해야할까요??
    #define DELAY_TIME 60
    int count = 0; // 버튼 카운트 초기화
    int previous_button = 0; // 직전의 버튼 상태
    void setup() {
    pinMode(2, INPUT_PULLUP);
    pinMode(3, OUTPUT);
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(7, OUTPUT);
    pinMode(8, OUTPUT);
    }
    void loop() {

    int button = 1 - digitalRead(2);
    // 버튼 누르면 "1", 버튼 떼면 "0"
    if (button != previous_button){
    // 버튼을 처음 눌렀는지 계속 누르고 있는지 확인
    if (button == 1){ count = count + 1; }
    } // 버튼을 누른 경우만 버튼 횟수를 저장
    previous_button = button; // 직전의 버튼 상태에 저장

    if (count == 0){
    delay(DELAY_TIME);}


    if (count == 0){~~~~~~~~}
    if (count == 1){~~~~~~~~}
    if (count == 2){~~~~~~~~}
    if (count == 3){~~~~~~~~}

  • @남드론-i4d
    @남드론-i4d 4 місяці тому

    servo motor;
    int count=0;
    int previos_button=0;
    voin setup(){
    pinMode(12,INPUT_PULLUP);
    motor.attach(2);
    }
    void loop(){
    int button=1-digitalRead(12);
    if (button ! =previous_button){
    if (button==1){count=conut+1;}
    }
    previous_button;{
    if(count==0){motor.write(10);delay(5000);motor.write(170);delay(1000);}
    이렇게 코드을 했습니다
    자동차 와이퍼 처럼 스위치 눌러서 서보모터 단수 속도 제어가 될까요?

  • @jhkjms123
    @jhkjms123 Рік тому +1

    안녕하세요 강좌 열심히 보고 있는 구독자 입니다!
    버튼을 한번 누른 후 10초 후에 90도가 움직이고
    한번 더 버튼을 눌러 두번째 카운트에도 똑같이 10초 후에 170도가 움직이게 구현을 해보고 싶어서
    if (count == 0) { motor.write(10); delay(100); }
    if (count == 1) {delay(1000); motor.write(90); delay(100); }
    if (count == 2) {delay(1000); motor.write(170); delay(100); }
    if (count == 3) { count = 0; }
    이렇게 짜서 넣어 봤는데 첫번째 카운트에서는 잘 작동하고 두번째 카운트 부터는 아예 동작을 하지 않습니다.
    이럴 때 에는 어떻게 해결해야 할지 여쭤 볼 수 있을까요??

    • @mulilab
      @mulilab  Рік тому

      안녕하세요,
      버튼을 누른 다음 1초후에 서보모터를 작동시키려고 하시는군요, if문 안에 delay를 넣으면 카운트 값이(1 또는 2) 있으면 delay를 실행시켜 버튼 신호값을 읽기가 힘듭니다, 아마 가끔 작동될때도 있고 안될때도 있을 것입니다,
      원하시는 해결책이 될지는 모르지만, 버튼을 누를때(카운트 값이 0,1,2,3) 1초후에 값을 저장하도록 해보시면 좋겠습니다,
      위 영상의 코드에서 아래의 버튼 카운트 부분에 delay(1000)만 추가해 보세욧!
      if (button == 1){ count = count + 1; delay(1000); }
      즐거운 코딩하세요!

    • @hobbymachinist
      @hobbymachinist Рік тому

      millis()를 사용하는 것은 어떨까요? button 이 눌렸는지 확인하고 눌렸으면 millis() 값을 읽고, millis() value가 duration이 지나게되면 if ( millis() - lastbutton > duration) 으로 하는 것은 어떨까요?