Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Vitaly
2017-04-06 00:12:39

// EasyDriver connections
#define step_pin 9  // Pin 9 connected to Steps pin on EasyDriver
#define dir_pin 8   // Pin 8 connected to Direction pin
#define SLEEP 12     // Pin 12 connected to SLEEP pin
                   
volatile boolean TurnDetected;  // need volatile for Interrupts
volatile boolean rotationdirection;  // CW or CCW rotation

// Rotary Encoder Module connections
const int PinCLK=2;   // Generating interrupts using CLK signal
const int PinDT=3;    // Reading DT signal
const int PinSW=4;    // Reading Push Button switch

int StepperPosition=0;    // To store Stepper Motor Position
int StepsToTake=4;      // Controls the speed of the Stepper per Rotary click

int direction;   // Variable to set Rotation (CW-CCW) of stepper


// Interrupt routine runs if CLK goes from HIGH to LOW
void rotarydetect ()  {
delay(4);  // delay for Debouncing
if (digitalRead(PinCLK))
rotationdirection= digitalRead(PinDT);
else
rotationdirection= !digitalRead(PinDT);
TurnDetected = true;
}


void setup ()  {

    pinMode(dir_pin, OUTPUT);
   pinMode(step_pin, OUTPUT);
   pinMode(SLEEP, OUTPUT);   
   digitalWrite(SLEEP, HIGH);  // Wake up EasyDriver
   delay(5);  // Wait for EasyDriver wake up
   
/* Configure type of Steps on EasyDriver:
  //
// LOW LOW = Full Step //
// HIGH LOW = Half Step //
// LOW HIGH = A quarter of Step //
// HIGH HIGH = An eighth of Step //
*/
   
  pinMode(PinCLK,INPUT);  // Set Pin to Input
  pinMode(PinDT,INPUT); 
  pinMode(PinSW,INPUT);
  digitalWrite(PinSW, HIGH); // Pull-Up resistor for switch
  attachInterrupt (0,rotarydetect,FALLING); // interrupt 0 always connected to pin 2 on Arduino UNO
}


void loop ()  {

  if (!(digitalRead(PinSW))) {   // check if button is pressed
  if (StepperPosition == 0) {  // check if button was already pressed
  } else {
      if (StepperPosition > 0) {  // Stepper was moved CW
        while (StepperPosition != 0){  //  Do until Motor position is back to ZERO
          digitalWrite(dir_pin, HIGH);  // (HIGH = anti-clockwise / LOW = clockwise)
          for (int x = 1; x < StepsToTake; x++) {
              digitalWrite(step_pin, HIGH);
              delay(1);
              digitalWrite(step_pin, LOW);
              delay(1);           
            }
            StepperPosition=StepperPosition-StepsToTake;
        }
      }
      else {
        while (StepperPosition != 0){
          digitalWrite(dir_pin, LOW);  // (HIGH = anti-clockwise / LOW = clockwise)
              for (int x = 1; x < StepsToTake; x++) {
              digitalWrite(step_pin, HIGH);
              delay(1);
              digitalWrite(step_pin, LOW);
              delay(1);           
            }
           StepperPosition=StepperPosition+StepsToTake;
        }
      }
      StepperPosition=0; // Reset position to ZERO after moving motor back
    }
  }

// Runs if rotation was detected
  if (TurnDetected)  {
        TurnDetected = false;  // do NOT repeat IF loop until new rotation detected

// Which direction to move Stepper motor
        if (rotationdirection) { // Move motor CCW
            digitalWrite(dir_pin, HIGH);  // (HIGH = anti-clockwise / LOW = clockwise)
            for (int x = 1; x < StepsToTake; x++) {
              digitalWrite(step_pin, HIGH);
              delay(1);
              digitalWrite(step_pin, LOW);
              delay(1);           
            }
            StepperPosition=StepperPosition-StepsToTake;
        }

        if (!rotationdirection) { // Move motor CW
            digitalWrite(dir_pin, LOW);  // (HIGH = anti-clockwise / LOW = clockwise)
            for (int x = 1; x < StepsToTake; x++) {
              digitalWrite(step_pin, HIGH);
              delay(1);
              digitalWrite(step_pin, LOW);
              delay(1);         
            }
            StepperPosition=StepperPosition+StepsToTake;
        }
  }
}

Vitaly
2017-04-06 00:11:36

Получилось у меня компиляция кода. работает но с ошибкой. без разницы в какую сторону я кручу энкодер двигатель крутится в одну сторону. помогите пожалуйста разобратся.

Vitaly
2017-04-06 00:09:00

Продолжение...

NoName
2017-02-22 12:11:10

игорь1962,  [ вырезано цензурой ]

IgorT12
2017-02-22 08:17:55

Тёзка. ты не прав!!!! ".....ИЛИ ВАС И....." знания этого языка тебе не помогут. А вот читать и вникать в прочитанное пора бы научиться. Для того чтоб тебе помогли практически нужно чтоб у кого то был в руках твой Леон. И к стати установки у тебя правильно указаны? "Инструменты - Плата- "
P.S. Пробуй другие версии IDE. У меня их несколько, каждая ведёт себя по своему .

vvr
2017-02-17 09:11:40
Vitaly пише:

насколько сложно переделать код под леонардо?

дороже чем купить уно ))))

Vitaly
2017-02-16 22:30:38

насколько сложно переделать код под леонардо?

Vitaly
2017-02-16 22:28:58
vvr пише:

есть несколько путей.
1. читаем книжки, лазим по форумам, учимся программировать.
   пробуем писать программу.
   если что то не получается - показываем код и задаём вопросы, может быть кто то подскажет)))
   это если интересно и хочется в этом направлении развиваться...
2. формулируем задачу, озвучиваем бюджет и заказываем за денежку.
   а это если не хочется возиться)))

p.s. ждать что кто то просто так будет тратить своё время не стоит...

на первый вариант у меня не так уж и много времени для создания этого проекта.
второй вариант интересно цена помощи.

vvr
2017-02-16 22:22:21

ну и можно просто отказаться от этой библиотеки, на ней свет клином не сошёлся
я её вообще ни разу не использовал smile

vvr
2017-02-16 22:21:15

я не знаю как будет работать с 1.8.1 - у меня она не установлена
чтобы работало с леонардо нужно шаманить библиотеку - для этого нужно серьёзно в программировании разбираться)))
проще купить нано или уну с нужным камнем

Vitaly
2017-02-16 22:13:12

то есть мне нужно скачать версию 1.6.4?
а как переписать для леонардо?

vvr
2017-02-16 22:12:37

вот ваша проблема

This Arduino library (current only supports ATMega328p based Arduinos)

на леонардо не катит...

vvr
2017-02-16 22:08:05

нет разницы уно или леонардо
на 1.8.1 проверить не могу, но могут и быть проблемы smile

Vitaly
2017-02-16 22:03:51

у меня версия 1.8.1 но это код для ардуино уно. есть ли разница?

vvr
2017-02-16 21:52:48

какая у вас версия arduino IDE
у меня в 1.6.4 компилируется
в 1.5.2 нет))))

Підвал форуму