[아두이노

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 พ.ย. 2024

ความคิดเห็น • 9

  • @presketch
    @presketch 2 ปีที่แล้ว

    성공했어요 감사합니다
    /*
    *
    AccelStepper stepper = AccelStepper(연결방식, STEP핀, DIR핀);
    stepper.setMaxSpeed(1000); //최대속도
    stepper.setCurrentPosition(0); //현재 스탭을 설정
    stepper.currentPosition(); //현재 스탭을 반환
    stepper.setSpeed(200); //스탭모터의 방향과 속도를 설정
    stepper.runSpeed(); //스탭모터 작동(고정속도)
    stepper.setAcceleration(2000); //가속량을 설정함
    stepper.moveTo(1000); //목표스탭량을 설정함
    stepper.runToPosition(); //가속도를 붙혀서 스탭모터제어
    */
    #include //녹칸다 유튜브 아두이노2022-02-23 다시 테스트 해봐
    #define DIR 2
    #define STEP 3
    #define btn1 4
    #define btn2 5
    AccelStepper stepper = AccelStepper(1, STEP, DIR); //드라이버를 쓸때는 '1'을 쓰라고 개발자가 지정했다
    int speed = 1000;
    void setup() {
    // put your setup code here, to run once:
    Serial.begin(9600);
    pinMode(DIR,OUTPUT);
    pinMode(STEP,OUTPUT);
    pinMode(btn1,INPUT_PULLUP);
    pinMode(btn2,INPUT_PULLUP);
    stepper.setMaxSpeed(600); //(최대속도)초당 몇 스텝이냐? (1000 이면 1초에 5바퀴다)-자신의 스텝모터 성능에따라 조정해야함
    stepper.setAcceleration(600); //가속량을 설정함
    //stepper.setCurrentPosition(500); //현재 스탭을 설정
    }
    void loop() {
    // put your main code here, to run repeatedly:
    if(digitalRead(btn1) == LOW){
    //여기서 LOW는 버튼1이 눌러진것
    stepper.moveTo(800);
    stepper.runToPosition();
    }
    if(digitalRead(btn2) == LOW){
    //여기서 LOW는 버튼2가 눌러진것
    stepper.moveTo(-800);
    stepper.runToPosition();
    }

    }

    • @nockanda
      @nockanda  2 ปีที่แล้ว

      축하합니다!!!

  • @heesookim1566
    @heesookim1566 ปีที่แล้ว

    😊 좋은 강의 감사합니다

  • @dsmhan5289
    @dsmhan5289 ปีที่แล้ว

    아두이노 라즈베리 파이 어느게 좋을까요???

  • @dsmhan5289
    @dsmhan5289 ปีที่แล้ว

    220볼트 모터 구동도 올려 주시면 감사 하겠습니다~

  • @정일재-f7c
    @정일재-f7c 2 ปีที่แล้ว

    조이스틱 비례로 스텝모터 속도 제어는 힘든가봅니다 예시들이 거의 없네요

  • @presketch
    @presketch 2 ปีที่แล้ว

    안녕하세요. L293D 같은 경우 버튼을 눌렀을때 직관적으로 가능하고 코드도 비교적 간단한것 같습니다. 버튼을 눌렀을때 몇 스피드로, 몇 스텝만큼만 회전하라는 식으로 간단한데
    A4988의 경우 AcccelStepper로 할경우 그걸 잡기가 어렵네요. 버튼을 눌렀을때 길게 누를수도 있고 짧게 누를수도 있고 한데 딱 누른시간만큼 이동하네요.
    나중에 시간되실때 A4988을 l293d 코드 잡았을때처럼 코드잡는거 한번강의 부탁드립니다.
    L293D 코드
    #include
    #define STEPS 200
    bollean Button = false;
    Stepper stepper(STEPS, 8,9,10,11);
    void setup() {
    // put your setup code here, to run once:
    pinMode(3, INPUT);
    pinMode(4, INPUT);
    }
    void loop() {
    // put your main code here, to run repeatedly:
    int Button = digitalRead(3);
    if(Button == true){
    stepper.setSpeed(30);
    stepper.step(200);
    Button = !Button ;

    int Button = digitalRead(4);
    if(Button == true){
    stepper.setSpeed(30);
    stepper.step(-200);
    Button = !Button ;
    }
    }
    아래는 A4988로 버튼1을 누르면 일정거리만큼 시계방향 회전했다가 버튼2를 반대방향으로 회전하는건데, 아래코드로 해본 결과 , 업로드하고 버튼1을 누르면 600스텝을 가고 더이상 버튼들이 작동안함. 그리고 다시 업로드 해보고, 버튼 2를 누르면 반대방향으로 무한회전 합니다.. 이유가 월까요?
    /*
    *
    AccelStepper stepper = AccelStepper(연결방식, STEP핀, DIR핀);
    stepper.setMaxSpeed(1000); //최대속도
    stepper.setCurrentPosition(0); //현재 스탭을 설정
    stepper.currentPosition(); //현재 스탭을 반환
    stepper.setSpeed(200); //스탭모터의 방향과 속도를 설정
    stepper.runSpeed(); //스탭모터 작동(고정속도)
    stepper.setAcceleration(2000); //가속량을 설정함
    stepper.moveTo(1000); //목표스탭량을 설정함
    stepper.runToPosition(); //가속도를 붙혀서 스탭모터제어
    */
    #include //녹칸다 유튜브 아두이노2022-02-23 다시 테스트 해봐
    #define DIR 2
    #define STEP 3
    #define btn1 4
    #define btn2 5
    AccelStepper stepper = AccelStepper(1, STEP, DIR); //드라이버를 쓸때는 '1'을 쓰라고 개발자가 지정했다
    int speed = 1000;
    void setup() {
    // put your setup code here, to run once:
    Serial.begin(9600);
    pinMode(DIR,OUTPUT);
    pinMode(STEP,OUTPUT);
    pinMode(btn1,INPUT_PULLUP);
    pinMode(btn2,INPUT_PULLUP);
    stepper.setMaxSpeed(1000); //(최대속도)초당 몇 스텝이냐? (1000 이면 1초에 5바퀴다)-자신의 스텝모터 성능에따라 조정해야함
    stepper.setCurrentPosition(0); //현재 스탭을 설정
    }
    void loop() {
    // put your main code here, to run repeatedly:
    if(digitalRead(btn1) == LOW){
    //여기서 LOW는 버튼1이 눌러진것
    stepper.setSpeed(400); //스탭모터의 방향과 속도를 설정 200이면 초당 200스텝이므로 한 바퀴.(-)이면 반시계 방향
    while(stepper.currentPosition() != 600){ //스텝의 양
    stepper.runSpeed(); //스탭모터 작동(고정속도)
    }
    }
    if(digitalRead(btn2) == LOW){
    //여기서 LOW는 버튼2가 눌러진것
    stepper.setSpeed(-400); //스탭모터의 방향과 속도를 설정 200이면 초당 200스텝이므로 한 바퀴.(-)이면 반시계 방향
    while(stepper.currentPosition() != 600){ //스텝의 양
    stepper.runSpeed(); //스탭모터 작동(고정속도)
    }
    }
    }

  • @Gogangbo
    @Gogangbo ปีที่แล้ว

    여기사용된 부품들좀 전부알려주실수있을까요??

  • @taein-di2pg
    @taein-di2pg ปีที่แล้ว

    버튼 눌렀을태 정회전하고 다시 역회전하는데 뒤에 - 구간 명령지우면 역호전 어없에는거 아닌가요 잘안돼네요?