#1 Програмування Arduino » Куплю скетч. » 2020-03-05 16:38:37

OverlordLSBeam
відповідей: 2

Всем привет, у меня тут такая задача, но что-то пока не разобрался как это сделать.
У меня есть DC - моторчик, и мне нужно чтобы он работал в две стороны с какой-то частотой(например когда моторчик работает в одном направлении 1 секунду, в другом 5 секунд, потом 2 секунды и в другую 5 и тд, хорошо было бы задавать эти значения с клавиатуры, чтобы была возможность с цикличной частотой и с наростающей, как я описал выше), ход в этого моторчика 60 градусов(ограничен специальными затворками).
Подробнее объясню задачу при контакте, сейчас так сумбурно
Кто за какие цены готов решить эту задачу?
Предложения услуг на почту: fckdoto@gmail.com

#2 Re: Програмування Arduino » Ввод задержки с клавиатуры » 2020-02-27 15:42:01

YK пише:

Ну так оно точно нормально работать не будет.
В коде не должно быть задержек delay()....
И не надо замораживать поток Serial.Read....

Почитай что то типа https://www.instructables.com/id/Coding-Timers-and-Delays-in-Arduino/


Ну или обратись к кому то чтобы нормально написали

Спасибо, буду с этим что-то крутить smile
Если бы у меня был кто-то, кто разбирается в этом xD

#3 Програмування Arduino » Ввод задержки с клавиатуры » 2020-02-27 14:41:10

OverlordLSBeam
відповідей: 3

Всем привет, у меня тут такая задача, но что-то пока не разобрался как это сделать.
У меня есть DC - моторчик, и мне нужно чтобы он работал в две стороны с какой-то частотой, но её нужно задать вводом с сериал порта с клавиатуры, ну и например, чтобы эта задержка росла с каждым тиком на 500мс. Я с ардуино не так давно знаком, еще не понял как это реализировать. Это через Serial.read ()?
Вот что я накидал, ну очевидно, что оно не работает, но если убрать эти сериал, моторчик тикает.

#include <L298N.h> //library l298n
int in1 = 8;
int in2 = 9;
int i;
void setup()
{
  pinMode(in1, OUTPUT); //in1,in2 as outputs
  pinMode(in2, OUTPUT);
  Serial.begin(9600);
}
void loop()
{
  Serial.read(i); //Ввести значение задержки i начальное
  Serial.write("delayClose=")//Пишет на экране текст и значение
  for (i; i<20000; i+500) // От заданого i увеличивается на 500мс
   {
    digitalWrite(in1, HIGH); //on in1 +, on in2 -
    digitalWrite(in2, LOW);
    delay(i);             //delay after 5s
   if (i == 20000) break; // Когда задержка 20с заканчиватся работа
    }
  Serial.read(k);//Ввести значение задержки k начальное
  Serial.write("delayOpen=")//Пишет на экране текст и значение
  for (k; k<20000; k+500)// От заданого k увеличивается на 500мс
   {
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    delay(k);
    if (i == 20000) break;// Когда задержка 20с заканчиватся работа
   }
  }
}

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