нужна помощь в управлении шаговым двигателем

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

Не совсем. Через монитор порта, наверное, нагляднее будет.

#include <Servo.h>
unsigned long currentTime;
unsigned long currentTime2;
const int servoPin = 4;
const int ledPin = 13;
Servo Servo1;

void setup() {
    Servo1.attach(servoPin);
    Servo1.write(0);

    Serial.begin(9600);
}
void loop() {
    unsigned long newTime = millis();

    if (newTime - currentTime2 >= 2000ul) {
        currentTime2 = millis(); 

        if (Servo1.read() > 0) Servo1.write(0); else Servo1.write(90); // Двигаем серву
        Serial.println("Servo");
    }

    if (newTime - currentTime >= 500ul) {
        currentTime = millis(); 

        digitalWrite(ledPin, !digitalRead(ledPin)); // Моргаем штатным светодиодом
        Serial.println("Led");
    }

 }

 

zaratustra93
Offline
Зарегистрирован: 04.03.2021

AndreyD пишет:

Не совсем. Через монитор порта, наверное, нагляднее будет.

#include <Servo.h>
unsigned long currentTime;
unsigned long currentTime2;
const int servoPin = 4;
const int ledPin = 13;
Servo Servo1;

void setup() {
    Servo1.attach(servoPin);
    Servo1.write(0);

    Serial.begin(9600);
}
void loop() {
    unsigned long newTime = millis();

    if (newTime - currentTime2 >= 2000ul) {
        currentTime2 = millis(); 

        if (Servo1.read() > 0) Servo1.write(0); else Servo1.write(90); // Двигаем серву
        Serial.println("Servo");
    }

    if (newTime - currentTime >= 500ul) {
        currentTime = millis(); 

        digitalWrite(ledPin, !digitalRead(ledPin)); // Моргаем штатным светодиодом
        Serial.println("Led");
    }

 }

почему не совсем? сначала серву выводит в 0, потом моргает светодиод, в следующий раз срабатывает else и серва передвигается в 90, потом снова моргает светодиод, затем та как серва была в 90 ее снова передвигаем в 0, и моргаем светодиодом. в мониторе порта, и чередуется одно движение сервы и моргание

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

Неточность в слове "потом", более подходит слово "параллельно". Изменил строки 17 и 24.

#include <Servo.h>
unsigned long currentTime;
unsigned long currentTime2;
const int servoPin = 4;
const int ledPin = 13;
Servo Servo1;

void setup() {
    Servo1.attach(servoPin);
    Servo1.write(0);

    Serial.begin(9600);
}
void loop() {
    unsigned long newTime = millis();

    if (newTime - currentTime2 >= 2500ul) {
        currentTime2 = millis(); 

        if (Servo1.read() > 0) Servo1.write(0); else Servo1.write(90); // Двигаем серву
        Serial.println("Servo");
    }

    if (newTime - currentTime >= 300ul) {
        currentTime = millis(); 

        digitalWrite(ledPin, !digitalRead(ledPin)); // Моргаем штатным светодиодом
        Serial.println("Led");
    }

 }

 

zaratustra93
Offline
Зарегистрирован: 04.03.2021

AndreyD пишет:

Неточность в слове "потом", более подходит слово "параллельно". Изменил строки 17 и 24.

#include <Servo.h>
unsigned long currentTime;
unsigned long currentTime2;
const int servoPin = 4;
const int ledPin = 13;
Servo Servo1;

void setup() {
    Servo1.attach(servoPin);
    Servo1.write(0);

    Serial.begin(9600);
}
void loop() {
    unsigned long newTime = millis();

    if (newTime - currentTime2 >= 2500ul) {
        currentTime2 = millis(); 

        if (Servo1.read() > 0) Servo1.write(0); else Servo1.write(90); // Двигаем серву
        Serial.println("Servo");
    }

    if (newTime - currentTime >= 300ul) {
        currentTime = millis(); 

        digitalWrite(ledPin, !digitalRead(ledPin)); // Моргаем штатным светодиодом
        Serial.println("Led");
    }

 }

нужно добавить еще один if? чтобы серва делала два движения, а потом моргал светодиод

zaratustra93
Offline
Зарегистрирован: 04.03.2021

zaratustra93 пишет:

AndreyD пишет:

Неточность в слове "потом", более подходит слово "параллельно". Изменил строки 17 и 24.

#include <Servo.h>
unsigned long currentTime;
unsigned long currentTime2;
const int servoPin = 4;
const int ledPin = 13;
Servo Servo1;

void setup() {
    Servo1.attach(servoPin);
    Servo1.write(0);

    Serial.begin(9600);
}
void loop() {
    unsigned long newTime = millis();

    if (newTime - currentTime2 >= 2500ul) {
        currentTime2 = millis(); 

        if (Servo1.read() > 0) Servo1.write(0); else Servo1.write(90); // Двигаем серву
        Serial.println("Servo");
    }

    if (newTime - currentTime >= 300ul) {
        currentTime = millis(); 

        digitalWrite(ledPin, !digitalRead(ledPin)); // Моргаем штатным светодиодом
        Serial.println("Led");
    }

 }

нужно добавить еще один if? чтобы серва делала два движения, а потом моргал светодиод

мне же не параллельно надо, а последовательно

b707
Offline
Зарегистрирован: 26.05.2017

zaratustra93 пишет:

мне же не параллельно надо, а последовательно

еще почти месяц прошел. а книжку ни одну так и не открывали. похоже

zaratustra93
Offline
Зарегистрирован: 04.03.2021

b707 пишет:

zaratustra93 пишет:

мне же не параллельно надо, а последовательно

еще почти месяц прошел. а книжку ни одну так и не открывали. похоже

 

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

вот тут помогли полностью рабочим скетчем http://arduino.ru/forum/programmirovanie/kak-vklyuchit-na-nekotoroe-vremya

b707
Offline
Зарегистрирован: 26.05.2017

zaratustra93 пишет:

мне вот интересно, почему некоторым целиком рабочий скетч написали, на просьбу о помощи, а мне пару строчек исправить сложно подсказать

в казино так же - кто-то выигрывает. а остальные нет

nik182
Offline
Зарегистрирован: 04.05.2015

А выигрывают те, кто не просит халявы, а старается понять и научится. По постам очень быстро становиться понятно кто есть кто.

sadman41
Offline
Зарегистрирован: 19.10.2016

zaratustra93 пишет:

вот тут помогли полностью рабочим скетчем http://arduino.ru/forum/programmirovanie/kak-vklyuchit-na-nekotoroe-vremya

Последний пост: Ср, 21/01/2015 - 22:55

Во времени путешествуете?

zaratustra93
Offline
Зарегистрирован: 04.03.2021

nik182 пишет:

А выигрывают те, кто не просит халявы, а старается понять и научится. По постам очень быстро становиться понятно кто есть кто.

 

конечно понятно, только и видишь иди книжку почитай, вместо помощи. на то и форум, чтобы либо попросить помощи, либо дать ее, а не советы книжку почитать. читал я книжку. 

zaratustra93
Offline
Зарегистрирован: 04.03.2021

sadman41 пишет:

zaratustra93 пишет:

вот тут помогли полностью рабочим скетчем http://arduino.ru/forum/programmirovanie/kak-vklyuchit-na-nekotoroe-vremya

Последний пост: Ср, 21/01/2015 - 22:55

Во времени путешествуете?

 

у меня нормальная дата стоит, сегодняшняя

b707
Offline
Зарегистрирован: 26.05.2017

zaratustra93 пишет:

sadman41 пишет:

Последний пост: Ср, 21/01/2015 - 22:55

Во времени путешествуете?

у меня нормальная дата стоит, сегодняшняя

тогда понятно, почему советы "почитать книжку" не в кассу. Может учебник чтения для первого класса поможет?

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

zaratustra93 пишет:

мне же не параллельно надо, а последовательно

Вам нужно "параллельно" опрашивать состояние кнопки и выполнять другие действия.

Вам было предложено два способа, первый через прерывание, второй через millies().

Через millies() принцип такой (на основе примера из поста #1):

unsigned long previousMillis = 0;        

unsigned long interval = 100;           

void setup() {

}

void loop() {
  unsigned long currentMillis = millis();
 
  //проверяем не прошел ли нужный интервал, если прошел то
  if(currentMillis - previousMillis > interval) {
    previousMillis = currentMillis;  

    // здесь будет код по движению шаговика, который будет выполняться в каждые указанные в переменной interval  время.

  }

    // здесь будет код по опросу кнопки

}

 

b707
Offline
Зарегистрирован: 26.05.2017

zaratustra93 пишет:

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

Заратустра, если по сути - главная ваша проблема - что вы даже не пытаетесь понять. что происходит в коде, а тупо набрасываете операторы на бумагу. Вам уже несколько человек давали четкие подскахки , что и как поправить - но вы либо вообще не реагируете, либо делаете совсем не то.

Из этого очевидный вывод - вы ничего не понимаете и учиться не хотите, поэтому ни малейшего желания вам помогать нет.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

AndreyD пишет:

zaratustra93 пишет:

мне же не параллельно надо, а последовательно

Вам нужно "параллельно" опрашивать состояние кнопки и выполнять другие действия.

Вам было предложено два способа, первый через прерывание, второй через millies().

Через millies() принцип такой (на основе примера из поста #1):

unsigned long previousMillis = 0;        

unsigned long interval = 100;           

void setup() {

}

void loop() {
  unsigned long currentMillis = millis();
 
  //проверяем не прошел ли нужный интервал, если прошел то
  if(currentMillis - previousMillis > interval) {
    previousMillis = currentMillis;  

    // здесь будет код по движению шаговика, который будет выполняться в каждые указанные в переменной interval  время.

  }

    // здесь будет код по опросу кнопки

}

 

Ну вот тут даже идиоту стало бы понятно что надо делать Уважаемый ТС - если и после этого Вы не напишете программу, то Вы хуже идиота.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

zaratustra93 пишет:
на то и форум, чтобы либо попросить помощи, либо дать ее
Это Вам так кажется. А для меня форум - место, где можно поболтать с теми, с кем мне интересно. Вы, к сожалению, в это число не входите. И что? Мой подход неправильный? Вы мне его запретите?

А вообще, я всем тут цитирую фундаментальное описание любого форума (вернее, описание того, что происходит на любом форуме, куда заходит человек с просьбой сделать ему код). Читайте: «... брожение по интернетам с просьбами дать исходники управления для какого-нибудь невъебенно умного устройства, ввиду чего анонимы и бывалые форумов просто посылают тебя нахуй с этой просьбой несуразной. Посылают, кстати, только честные и добрые люди — и исключительно из добрых побуждений»

И это относится к любому форуму. Просто примите жизнь такой, какая она есть. Сразу станет легче.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

...И это относится к любому форуму.

некоторых надо банить, сразу, навсегда, только за выбранный НИК )))
PS вот категорически не разделяю многое из того, о чём говорил Заратустра

zaratustra93
Offline
Зарегистрирован: 04.03.2021

AndreyD пишет:

zaratustra93 пишет:

мне же не параллельно надо, а последовательно

Вам нужно "параллельно" опрашивать состояние кнопки и выполнять другие действия.

Вам было предложено два способа, первый через прерывание, второй через millies().

Через millies() принцип такой (на основе примера из поста #1):

unsigned long previousMillis = 0;        

unsigned long interval = 100;           

void setup() {

}

void loop() {
  unsigned long currentMillis = millis();
 
  //проверяем не прошел ли нужный интервал, если прошел то
  if(currentMillis - previousMillis > interval) {
    previousMillis = currentMillis;  

    // здесь будет код по движению шаговика, который будет выполняться в каждые указанные в переменной interval  время.

  }

    // здесь будет код по опросу кнопки

}

 

код для кнопки после кода для шаговика должен быть?  при запуске сразу крутиться начинает, но на кнопку реагирует, если нажать останавливается, если еще раз нажать то двигается

в эмуляторе при запуске не крутится, начинает крутиться после нажатия, а в реальной ардуине сразу крутится, но после нажатия кнопки останавливается

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

zaratustra93 пишет:

код для кнопки после кода для шаговика должен быть?  при запуске сразу крутиться начинает, но на кнопку реагирует, если нажать останавливается, если еще раз нажать то двигается

в эмуляторе при запуске не крутится, начинает крутиться после нажатия, а в реальной ардуине сразу крутится, но после нажатия кнопки останавливается

Выложите свой код, который у Вас получился, чтобы было что обсуждать.

zaratustra93
Offline
Зарегистрирован: 04.03.2021

#include <Servo.h>

int servoPin = 4;
Servo Servo1;
int switchPin = 3; // Порт кнопки
boolean lastButton = LOW; // Устанавливаем последнее значение кнопки - выключено
boolean currentButton = LOW; // Устанавливаем текущее значение кнопки - включено
boolean ledOn = false;
unsigned long previousMillis = 0;        

unsigned long interval = 500;           
unsigned long currentTime; // Переменная хранящая текущее значение времени
void setup() {
  Servo1.attach(servoPin);
  Servo1.write(0); 
  pinMode(switchPin, INPUT_PULLUP);
  currentTime = millis();
}

boolean debounce(boolean last)
{
  boolean current = digitalRead(switchPin);
  if(last != current)
  {
    delay(5);
    current = digitalRead(switchPin);
  }
  return current;
}

void loop() {
  unsigned long currentMillis = millis();

  //проверяем не прошел ли нужный интервал, если прошел то
  if(currentMillis - previousMillis > interval&&ledOn==true) {
    previousMillis = currentMillis;  

    if (Servo1.read() > 0) Servo1.write(0); else Servo1.write(45);
    
  }

  currentButton = debounce(lastButton);
  if(lastButton == LOW && currentButton == HIGH)
  {
    ledOn = !ledOn;
  }
  lastButton = currentButton;
  currentTime = millis();


}

AndreyD пишет:

zaratustra93 пишет:

код для кнопки после кода для шаговика должен быть?  при запуске сразу крутиться начинает, но на кнопку реагирует, если нажать останавливается, если еще раз нажать то двигается

в эмуляторе при запуске не крутится, начинает крутиться после нажатия, а в реальной ардуине сразу крутится, но после нажатия кнопки останавливается

Выложите свой код, который у Вас получился, чтобы было что обсуждать.

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

Не шаговик, а серво. Но это в принципе не важно.

Код, вроде, начинает приобретать рабочий вариант.

 

А currentTime для чего нужен?

5,6 строки LOW это кнопка включена или выключена, или в одном из пояснений неверно написано?

 

zaratustra93
Offline
Зарегистрирован: 04.03.2021

AndreyD пишет:

Не шаговик, а серво. Но это в принципе не важно.

Код, вроде, начинает приобретать рабочий вариант.

 

А currentTime для чего нужен?

5,6 строки LOW это кнопка включена или выключена, или в одном из пояснений неверно написано?

 

в пояснении не правильно написано. 

zaratustra93
Offline
Зарегистрирован: 04.03.2021

AndreyD пишет:

Не шаговик, а серво. Но это в принципе не важно.

Код, вроде, начинает приобретать рабочий вариант.

 

А currentTime для чего нужен?

5,6 строки LOW это кнопка включена или выключена, или в одном из пояснений неверно написано?

 

 

#include <Servo.h>
#include <Stepper.h>
const int stepsPerRevolution = 64;
Stepper myStepper1(stepsPerRevolution, 8,9,10,11);
int servoPin = 4;
Servo Servo1;
int switchPin = 3; // Порт кнопки
boolean lastButton = LOW; // Устанавливаем последнее значение кнопки - выключено
boolean currentButton = LOW; // Устанавливаем текущее значение кнопки - выключено
boolean ledOn = false;
unsigned long previousMillis = 0;        
unsigned long previousMillis2 = 0;

unsigned long interval = 500;
unsigned long interval2 = 800;           
unsigned long currentTime; // Переменная хранящая текущее значение времени
void setup() {
	Servo1.attach(servoPin);
	Servo1.write(0); 
	myStepper1.setSpeed(200);
	pinMode(switchPin, INPUT_PULLUP);
	currentTime = millis();
}

boolean debounce(boolean last)
{
	boolean current = digitalRead(switchPin);
	if(last != current)
	{
		delay(5);
		current = digitalRead(switchPin);
	}
	return current;
}

void loop() {
	unsigned long currentMillis = millis();

	//проверяем не прошел ли нужный интервал, если прошел то
	if (ledOn==true)
	{
		if(currentMillis - previousMillis > interval) {
			previousMillis = currentMillis;  

			if (Servo1.read() > 0) Servo1.write(0); else Servo1.write(90);
			// здесь будет код по движению шаговика, который будет выполняться в каждые указанные в переменной interval  время.

		}
		if(currentMillis - previousMillis2 > interval2) {
			previousMillis2 = currentMillis;  

			myStepper1.step(500);

		}
	}

	currentButton = debounce(lastButton);
	if(lastButton == LOW && currentButton == HIGH)
	{
		ledOn = !ledOn;
	}
	lastButton = currentButton;
	currentTime = millis();
	// здесь будет код по опросу кнопки

}

 

перенес if (ledOn==true) в отдельную строку, так правильно? вроде тоже работает. а шаговик не хочет

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

А с тем, что у вас серва при пуске начинает крутиться уже разобрались? Похоже, что нет. Решайте проблемы по порядку. А то баги так и будут накапливаться.

Рекомендую вывести в монитор порта digitalRead(switchPin) и посмотреть, что он выводит при отжатой и нажатой кнопке. И посмотреть, что делает код по обработке нажатий кнопки.

zaratustra93
Offline
Зарегистрирован: 04.03.2021

AndreyD пишет:

А с тем, что у вас серва при пуске начинает крутиться уже разобрались? Похоже, что нет. Решайте проблемы по порядку. А то баги так и будут накапливаться.

Рекомендую вывести в монитор порта digitalRead(switchPin) и посмотреть, что он выводит при отжатой и нажатой кнопке. И посмотреть, что делает код по обработке нажатий кнопки.


Разобрался. Кнопка была на землю, подключил на питание и резистор между 3 пином и землей

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

Ну как вариант. Надеюсь INPUT_PULLUP убрали?

А можно было немного подправить код и обойтись без подтяжки на землю.

zaratustra93
Offline
Зарегистрирован: 04.03.2021

AndreyD пишет:

Ну как вариант. Надеюсь INPUT_PULLUP убрали?

А можно было немного подправить код и обойтись без подтяжки на землю.

Да, но шагов к вообще не реагирует, а серва с кнопкой хорошо работает

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

Ну шаговика у меня нет, помочь дальше не смогу. Смотрите как там шаговик вообще работает и как его прикрутить к этому коду.

b707
Offline
Зарегистрирован: 26.05.2017

комментарии конечно огонь :)

Вот это хорошо

//проверяем не прошел ли нужный интервал, если прошел то
	if (ledOn==true)
	{

что мы тут проверям? интервал? - где?

вместо этого мы проверяем, горит ли светодиод - и только при горящем светодиоде у нас двигаются серва и шаговик, а вовсе не по времени...

ТС пишет скетч. как гнилой кафтан чинит - в одном месте отпарывает, в другое пришивает...

Когда учебник пойдете читать Заратустра?

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

ТС импровизирует в своём незнании, комбинирует то что нашёл, пытается осознать как всё работает, ну я так надеюсь. А это тоже неплохо, для начала. ИМХО.

b707
Offline
Зарегистрирован: 26.05.2017

AndreyD пишет:

ТС импровизирует в своём незнании

точно, как обезьянка за пишущей машинкой

Цитата:
комбинирует то что нашёл

тащит как сорока яркие предметы в свое гнездо

Цитата:
пытается осознать как всё работает

а вот этого, Андрей - я не вижу. Ветка тянется уже месяц (или сколько там - два?) - а у нас все зависло на стадиях обезьянки и сороки, человека в ТС не видно пока

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

Предположу, либо он совсем школьник, либо девушка.

b707
Offline
Зарегистрирован: 26.05.2017

AndreyD пишет:

Предположу, либо он совсем школьник, либо девушка.

а девушка что - не человек? :)

zaratustra93
Offline
Зарегистрирован: 04.03.2021

AndreyD пишет:

Ну шаговика у меня нет, помочь дальше не смогу. Смотрите как там шаговик вообще работает и как его прикрутить к этому коду.

пока вместо шаговика добавил вторую серву, обе работают с разным периодом, кнопка срабатывает, но они двигаются параллельно, как  сделать чтобы последовательно? когда вместо второй сервы ставил шаговик, то кнопка плохо срабатывает, только когда серва работает, когда шаговик не срабатывает

#include <Servo.h>
#include <Stepper.h>
const int stepsPerRevolution = 200;
Stepper myStepper1(stepsPerRevolution, 8,9,10,11);
int servoPin = 4;
Servo Servo1;
int servoPin2 = 5;
Servo Servo2;
int switchPin = 3; // Порт кнопки
boolean lastButton = LOW; // Устанавливаем последнее значение кнопки - выключено
boolean currentButton = LOW; // Устанавливаем текущее значение кнопки - выключено
boolean On = false;
unsigned long previousMillis = 0;        
unsigned long previousMillis2 = 0;

unsigned long interval = 2000;
unsigned long interval2 = 500;           
unsigned long currentTime; // Переменная хранящая текущее значение времени
void setup() {
	Servo1.attach(servoPin);
	Servo1.write(0); 
	Servo2.attach(servoPin2);
	Servo2.write(0);
	myStepper1.setSpeed(200);
	pinMode(switchPin, INPUT);
	currentTime = millis();
	Serial.begin(9600);

}

boolean debounce(boolean last)
{
	boolean current = digitalRead(switchPin);
	if(last != current)
	{
		delay(5);
		current = digitalRead(switchPin);
	}
	return current;
}

void loop() {
	unsigned long currentMillis = millis();

	if (On==true)
	{
		if(currentMillis - previousMillis > interval) {
			previousMillis = currentMillis;  

			if (Servo1.read() > 0) Servo1.write(0); else Servo1.write(90);
			Serial.println("Servo");

		}
		if(currentMillis - previousMillis2 > interval2) {
			previousMillis2 = currentMillis;  

			if (Servo2.read() > 0) Servo2.write(0); else Servo2.write(90);
			Serial.println("Servo2");

		}
	}

	currentButton = debounce(lastButton);
	if(lastButton == LOW && currentButton == HIGH)
	{
		On = !On;
		Serial.println("button");
	}
	lastButton = currentButton;
	currentTime = millis();

}

 

Гриша
Offline
Зарегистрирован: 27.04.2014

zaratustra93 пишет:

....обе работают с разным периодом, кнопка срабатывает, но они двигаются параллельно, как  сделать чтобы последовательно?

Что вы понимаете под словом последовательно? чтобы было последовательно нужен признак (флаг) - сейчас работает первая, а потом вторая. Ну или работать по счетчику, который работает по таймеру.  

b707
Offline
Зарегистрирован: 26.05.2017

zaratustra93 пишет:

пока вместо шаговика добавил вторую серву, обе работают с разным периодом, кнопка срабатывает, но они двигаются параллельно, как  сделать чтобы последовательно?

Заратустра, в ветке почти 100 постов - а вы так и не обьяснили толком, что хотите добиться. Вы можете четко и ясно написать. что и как должно срабатывать при нажатии и отжатии кнопок?

zaratustra93
Offline
Зарегистрирован: 04.03.2021

b707 пишет:

zaratustra93 пишет:

пока вместо шаговика добавил вторую серву, обе работают с разным периодом, кнопка срабатывает, но они двигаются параллельно, как  сделать чтобы последовательно?

Заратустра, в ветке почти 100 постов - а вы так и не обьяснили толком, что хотите добиться. Вы можете четко и ясно написать. что и как должно срабатывать при нажатии и отжатии кнопок?


В самом начале и было написано, при нажатии кнопки серва дюповорачивается на определенный угол, потом поворачивается обратно, после этого шаговик делает какое- количество шагов, и потом все повторяется циклично, этот цикл останавливается повторным нажатием кнопки в любой момент

zaratustra93
Offline
Зарегистрирован: 04.03.2021

b707 пишет:

zaratustra93 пишет:

пока вместо шаговика добавил вторую серву, обе работают с разным периодом, кнопка срабатывает, но они двигаются параллельно, как  сделать чтобы последовательно?

Заратустра, в ветке почти 100 постов - а вы так и не обьяснили толком, что хотите добиться. Вы можете четко и ясно написать. что и как должно срабатывать при нажатии и отжатии кнопок?

 

 так, но запускается и останавливается все одной кнопкой.

Servo1.write(90);
delay(500);
Servo1.write(0);
delay(500);
mystepper.step(1000);
delay(500);

 

Гриша
Offline
Зарегистрирован: 27.04.2014

К примеру, на этом сайте есть временные диаграммы работы некоего устройства (нам не важно какого), рисуйте временную диаграмму своего устройства, раз у вас трудности с описанием логики словами. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

AndreyD пишет:

Предположу, либо он совсем школьник, либо девушка.

а девушка что - не человек? :)

Заратустра проповедовал, что НЕТ!

zaratustra93
Offline
Зарегистрирован: 04.03.2021

Гриша пишет:

К примеру, на этом сайте есть временные диаграммы работы некоего устройства (нам не важно какого), рисуйте временную диаграмму своего устройства, раз у вас трудности с описанием логики словами. 

 

и что же там непонятного написано? 

Гриша
Offline
Зарегистрирован: 27.04.2014

zaratustra93 пишет:

и что же там непонятного написано? 

пост 89. Не примерно, а точно нужно. Вот и рисуйте и вам проще и нам понятней, может тогда и поможем чем.  

zaratustra93
Offline
Зарегистрирован: 04.03.2021

Гриша пишет:

zaratustra93 пишет:

и что же там непонятного написано? 

пост 89. Не примерно, а точно нужно. Вот и рисуйте и вам проще и нам понятней, может тогда и поможем чем.  

убрал примерно, если смущает. с куском скетча, то понятно что должно быть? к этому нужно добавит кнопку, чтобы запускать и останавливать можно было

zaratustra93
Offline
Зарегистрирован: 04.03.2021

zaratustra93 пишет:

Гриша пишет:

zaratustra93 пишет:

и что же там непонятного написано? 

пост 89. Не примерно, а точно нужно. Вот и рисуйте и вам проще и нам понятней, может тогда и поможем чем.  

убрал примерно, если смущает. с куском скетча, то понятно что должно быть? к этому нужно добавит кнопку, чтобы запускать и останавливать можно было

 

до каждой мелочи докапываетесь которая роли не играет в скетче, то комментарий в скетче не там и не тот, то примерно. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

zaratustra93 пишет:

до каждой мелочи докапываетесь которая роли не играет в скетче

Вы такой специалист в скетчах, что точно знаете что там играет роль а что - нет? Что же Вы тогда в этой теме делаете?

Мелочей в программах не бывает.

Гриша
Offline
Зарегистрирован: 27.04.2014

zaratustra93 пишет:

до каждой мелочи докапываетесь которая роли не играет в скетче, то комментарий в скетче не там и не тот, то примерно. 

что бы помочь, нужно понимать, а понимать проще, когда это наглядно - график (временные диаграммы) это наглядно. Не поленитесь нарисовать этот график, это не сложно. Вам самому будет проще решать эту задачу, а если вы график нарисовать не можете - то о какой программе может идти речь? Есть вариант с блоксхемой, но в данном случае он не такой наглядный - тут нужен график  (временные диаграммы).

b707
Offline
Зарегистрирован: 26.05.2017

zaratustra93 пишет:

до каждой мелочи докапываетесь которая роли не играет в скетче, то комментарий в скетче не там и не тот, то примерно. 

Заратустра - вы все еще не поняли? - Никто вам готовый код писать не будет. Если вы не желаете учиться - тогда нечего вам на этом форуме делать

zaratustra93
Offline
Зарегистрирован: 04.03.2021

b707 пишет:

zaratustra93 пишет:

до каждой мелочи докапываетесь которая роли не играет в скетче, то комментарий в скетче не там и не тот, то примерно. 

Заратустра - вы все еще не поняли? - Никто вам готовый код писать не будет. Если вы не желаете учиться - тогда нечего вам на этом форуме делать

 

кто-то просил помощи и не приложил свой скетч, хотя-бы то что у него получилось и ему полностью готовый скетч написали, у меня же большая часть есть, и вам трудно помочь?

b707
Offline
Зарегистрирован: 26.05.2017

zaratustra93 пишет:

кто-то просил помощи и не приложил свой скетч, хотя-бы то что у него получилось и ему полностью готовый скетч написали, у меня же большая часть есть, и вам трудно помочь?

значит этот "кто-то" так повел себя на форуме, что ему было приятно помогать