Ви не увійшли.
// 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;
}
}
}
Получилось у меня компиляция кода. работает но с ошибкой. без разницы в какую сторону я кручу энкодер двигатель крутится в одну сторону. помогите пожалуйста разобратся.
Продолжение...
игорь1962, [ вырезано цензурой ]
Тёзка. ты не прав!!!! ".....ИЛИ ВАС И....." знания этого языка тебе не помогут. А вот читать и вникать в прочитанное пора бы научиться. Для того чтоб тебе помогли практически нужно чтоб у кого то был в руках твой Леон. И к стати установки у тебя правильно указаны? "Инструменты - Плата- "
P.S. Пробуй другие версии IDE. У меня их несколько, каждая ведёт себя по своему .
насколько сложно переделать код под леонардо?
дороже чем купить уно ))))
насколько сложно переделать код под леонардо?
есть несколько путей.
1. читаем книжки, лазим по форумам, учимся программировать.
пробуем писать программу.
если что то не получается - показываем код и задаём вопросы, может быть кто то подскажет)))
это если интересно и хочется в этом направлении развиваться...
2. формулируем задачу, озвучиваем бюджет и заказываем за денежку.
а это если не хочется возиться)))p.s. ждать что кто то просто так будет тратить своё время не стоит...
на первый вариант у меня не так уж и много времени для создания этого проекта.
второй вариант интересно цена помощи.
ну и можно просто отказаться от этой библиотеки, на ней свет клином не сошёлся
я её вообще ни разу не использовал
я не знаю как будет работать с 1.8.1 - у меня она не установлена
чтобы работало с леонардо нужно шаманить библиотеку - для этого нужно серьёзно в программировании разбираться)))
проще купить нано или уну с нужным камнем
то есть мне нужно скачать версию 1.6.4?
а как переписать для леонардо?
вот ваша проблема
This Arduino library (current only supports ATMega328p based Arduinos)
на леонардо не катит...
нет разницы уно или леонардо
на 1.8.1 проверить не могу, но могут и быть проблемы
у меня версия 1.8.1 но это код для ардуино уно. есть ли разница?
какая у вас версия arduino IDE
у меня в 1.6.4 компилируется
в 1.5.2 нет))))