#1 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-24 22:30:34

Honey пише:

Из частей hex тоже можно комбинировать и составлять программы.

Можно, но зачем мне это если я получу от человека готовый скетч, который я модифицирую и внедрю куда мне нужно. Извратом заниматься нет никакого желания.

#2 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-24 20:43:27

г0сть пише:

Не, ну этого в ТЗ не было, так шо звиняйте...

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

#3 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-24 19:21:55

г0сть пише:

Вот тибе бисплатна по случаю праздника. Пользуйся
https://files.dp.ua/ru/wM34WUSyD

Это какой-то подарочный вирус на прощанье? big_smile
Наверное воздержусь от скачивания. Но спасибо))

#4 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-24 14:26:11

Конечно, конечно, обязательно буду держать в курсе.
Можете уже начинать.

#5 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-24 13:00:03

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

#6 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-24 12:56:09

krabik пише:
martinways пише:

Скетч как раз рабочий.

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

Вы прикалываетесь что ли? Я имею ввиду скетч из самого первого поста. Что он там молотит если сообщение в сериал выдает только по нажатию кнопки? Все работает, вот еще раз, если вам лень страницу перемотать

#include "GyverButton.h" /// https://github.com/AlexGyver/GyverLibs/releases/download/GyverButton/GyverButton.zip

GButton load;
GButton unload;
GButton motorstop;

void setup() {
  Serial.begin(9600);
  load.setStepTimeout(81);
  unload.setStepTimeout(81);
}
void loop() {
  int analog = analogRead(7);
  motorstop.tick(analog < 940 && analog > 865); //2
  load.tick(analog < 1024 && analog > 940); //1
  unload.tick(analog < 865 && analog > 800); //3
  if (motorstop.isSingle()) Serial.println("mStopSingle");
  if (motorstop.isHold()) Serial.println("mStopHold");
  if (motorstop.isDouble()) Serial.println("mStopDouble");
  if (motorstop.isTriple()) Serial.println("mStopTriple");
  
  motorstop.resetStates();
 if (unload.isStep()) {Serial.println("UnLoadStep");}
  if (unload.isClick()) {
  Serial.println("StartLoad");
  }
  if (load.isStep()) {Serial.println("loadStep");}
  if (load.isClick()) {
  Serial.println("StartUnload");
  }
}

#7 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-23 18:56:05

ard125 пише:
martinways пише:

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

Дружище, если бы ваш скетч был рабочим или хотя бы нормально составлено ТЗ, думаю, ни у кого бы не возникло вопросов. Еще раз повторю с гайверовскими библиотеками не работал и изучать их функции нет никакого желания. Мог бы вам помочь и без них, но, раз пошла такая пьянка, действительно, давайте не будем продолжать.

Скетч как раз рабочий. Но к load.isClick() надо добавить запуск серии с интервалом и на срок 1 минуту, и возможность её досрочной остановки кликом кнопки motorstop.isClick или длинным нажатием load.isStep(), и это load.isStep() должно отработать так как обычно, как если бы не было запущено никакой серии, что там непонятного?? Я все нормально описал как должно работать. Вопросы только у Вас возникли и ни у кого более. А то, что за такую цену никто не хочет делать - это уже другой вопрос, это не связано с качеством ТЗ.

#8 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-23 17:40:34

renoshnik пише:

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

У меня лично такая логика - если я скачал библиотеку и там все функции работают как заявлено, то великого презрения она не может заслуживать. Вы мне так и не объяснили чем они так плохи.

P.S. И не развеяли мысли о зависти. На Ардуино ру про Гайвера написали старички форума (те же слова про "моветон") , думаю это просто у вас всех что-то личное к нему))) а не к его коду.
Другой форумчанин отсюда ничего плохого про эту библиотеку не сказал, так что не думаю что там все НАСТОЛЬКО плохо, чтобы аж сразу кидаться тапками в любого упоминающего Гайвера. Мне сам Гайвер по барабану, просто смешно это все.

#9 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-23 17:11:28

renoshnik пише:

Давайте я вам (ТС) немного уточню ситуацию.
У большинства профильных форумчан считается считается моветоном использование гайверовских библиотек.
Поэтому ваши объяснения функций этих библиотек воспринимается как бессмысленный набор действий.

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

Здесь на форуме вам вполне могут помочь написать нужный код. Именно помочь, но для этого нужно желание изучать язык программирования.
Если такого желания нет, то существуют разделы для заказов, на этом форуме и на других аналогичных.

Хахаха и здесь Гайвера люто ненавидят?? Ну вы даете пацаны)) Объясните человеку не в теме за что такая "анафема" (отлучение от церкви) данному индивидууму?)))) Мне, человеку со стороны, без разницы, какую библиотеку использовать, я набрал в гугле "библиотека для кнопок" и выдало Гайвера, посмотрел, попробовал, понравилось. Это зависть или че? Посмотрел его канал, сайт, все все красиво и понятно, видно, что человек любит свое дело и старается. Разъясните, буду знать.

"Поэтому ваши объяснения функций этих библиотек воспринимается как бессмысленный набор действий." - это потому что они такие плохие эти библиотеки или только из-за того, что их Гайвер написал?

#10 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-23 16:16:31

ard125 пише:

Так вам при удержании надо надо однократно или многократно?

p/s тут одних уточнений уже гривен на 100 набегает

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

#11 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-23 15:41:35

ard125 пише:
martinways пише:

конечно же библиотек куча и Вы не должны их все знать.

Ну так я и прошу вас - объясните своим словами что должно выполняться при длительном нажатии кнопки

В функционале библиотеки есть вариант обработки длинного нажатия кнопки - isStep, пример кода из моего скетча - if (load.isStep()) {Serial.println("LoadStep");} - при таком коде в порт будет постоянно выдаваться сообщение LoadStep с интервалом заданным в настройках библиотеки до тех пор пока держишь кнопку. Если же например присвоить кнопке isHold -  if (load.isHold()) {Serial.println("LoadStep");} - то при длительном нажатии сообщение LoadStep выдаст только 1 раз. Не знаю как еще лучше объяснить))

#12 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-23 15:16:44

ard125 пише:
martinways пише:

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

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

Я имел ввиду, что в скетче есть ссылка на библиотеку и сайт разработчика (в данном случае Гайвера), конечно же библиотек куча и Вы не должны их все знать.

#13 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-23 14:54:48

ard125 пише:

Объясните подробней что это значит

martinways пише:

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

Какой функции и какой библиотеки?

#include "GyverButton.h" /// https://github.com/AlexGyver/GyverLibs/releases/download/GyverButton/GyverButton.zip

Вот инструкции к библиотеке https://alexgyver.ru/gyverbutton/

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

#14 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-23 14:42:56

Sergio пише:

Такая работа у нас, именно работа, а не разводилово на бОльшие чем положено суммы как всем кажется))
Я считаю, что заниматься разбором кода и подробными обучающими комментариями не имеет смысла, если за день не добавится хотя бы 1300 грн. Вот отсюда и считаем, всё по-честному ))

1300 за такую фиговенькую функцию.... ну прекрасно, что Вы себя так высоко цените. Никаких претензий. Ваше дело предложить, мое дело отказаться. Пойду лучше намотаю пару помпончиков))))

#15 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-23 14:03:12

Sergio пише:

realsoft3d@gmail.com   но токо не за 200 грн )) если договоримся, распишу код с комментами на понятном для тебя уровне, дальше сможешь по этой методике делать много чего, уже самостоятельно.

Спасибо за предложение, но меня удивляет почему программисты в основном не называют цену? Я же понятия не имею сколько это может стоить, также не хочу, чтобы меня разводили на круглую сумму за услугу, которая стоит гораздо дешевле. Это знаете то же самое если бы Вы хотели купить в магазине какую-то конкретную вещь, а продавец цену не говорит, а спрашивает "Сколько Вы готовы за нее заплатить", и если вы не отвечаете или называете сумму которая продавца не устраивает, то он посылает вас в другое место.

#16 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-23 12:22:11

Нет на это моральных сил и времени))
Я и так уже фотошопер, веб-дизайнер, электронщик, конструктор, 3д-печатник, медик, предприниматель. Конечно же я не супер-специалист во всех этих сферах, но тем не менее мозг и терпение не резиновые)))
Может и возьмусь за Си, но пока в данный момент нет.

#17 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-23 11:47:13

vvr пише:
martinways пише:

мне просто нужно получить рабочий код, который я буду внедрять в гораздо бОльший скетч управления устройством, которое я задумал. Не могу себе позволить изучать сейчас C++ ради одного устройства, я не планирую становиться программистом))


и как вы собираетесь внедрять, если не знаете и не умеете...

Я же писал выше - метод научного тыка)) У меня получается иногда лепить скетчи из кусков чужих и дописывать по аналогии, плюс библиотеки, инструкции к которым есть. Смотрю какие куски кода примерно за что отвечают, изменяю под себя и вроде получается. Уже сделал так несколько уникальных и полезных для себя устройств.

#18 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-23 09:41:15

Сергій_П пише:

Звернись на https://freelancehunt.ua/ там швидко допоможуть.

А тут что меньше чем за 100$ никто не помогает?

#19 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-22 19:54:13

Дорогой друг Honey, я понимаю, что Вы подсказываете загадками, чтобы я понял принцип и чему-то научился, благодарен Вам за это, но в данный момент для меня в приоритете затраченное время, мне просто нужно получить рабочий код, который я буду внедрять в гораздо бОльший скетч управления устройством, которое я задумал. Не могу себе позволить изучать сейчас C++ ради одного устройства, я не планирую становиться программистом))

#20 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-22 19:17:38

То есть void runUnload вообще не нужно применять? Поместил все в Loop, тогда вообще все не работает, это тыкать пальцем в небо.... Еще что-то рабочее я могу изменить под себя, а с нуля эт сильно вряд ли..

#include "GyverButton.h" /// https://github.com/AlexGyver/GyverLibs/releases/download/GyverButton/GyverButton.zip

GButton load;
GButton unload;
GButton motorstop;



void setup() {
  Serial.begin(9600);
  load.setStepTimeout(81);
  unload.setStepTimeout(81);
}
void loop() {
  int analog = analogRead(7);
  motorstop.tick(analog < 940 && analog > 865); //2
  load.tick(analog < 1024 && analog > 940); //1
  unload.tick(analog < 865 && analog > 800); //3
  if (motorstop.isSingle()) Serial.println("mStopSingle");
  if (motorstop.isHold()) Serial.println("mStopHold");
  if (motorstop.isDouble()) Serial.println("mStopDouble");
  if (motorstop.isTriple()) Serial.println("mStopTriple");
  
  motorstop.resetStates();
 if (load.isStep()) {Serial.println("LoadStep");}
  if (load.isClick()) {
  Serial.println("StartLoad");

  }
  if (unload.isStep()) {Serial.println("UnloadStep");}
  if (unload.isClick()) {
  Serial.println("StartUnload");
  }
  
uint8_t flag1;
uint32_t mil1, mil1end;
for (;;) {
    if (unload.isClick()) {
        flag1 = 1;
        mil1 = millis();
        mil1end = mil1 + 60*1000;
    }
    if (unload.isStep()) {
        flag1 = 0;
        Serial.println("UnloadStep");
    }
    if (motorstop.isClick()) {
        flag1 = 0;
        Serial.println("UnLoadStop");
    }
    if (flag1 && millis() >= mil1) {
        Serial.println("StartUnload");
        mil1 += 200;
        if (mil1 > mil1end) {
            flag1 = 0;
        }
    }
}
}

#21 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-22 19:04:08

Подставил свои значения и вставил это все в void runUnload() , но не работает... Что за 200грн никто не хочет помочь? На дороге 200 не валяются, а если и валяются, то недолго))

#include "GyverButton.h" /// https://github.com/AlexGyver/GyverLibs/releases/download/GyverButton/GyverButton.zip

GButton load;
GButton unload;
GButton motorstop;


void runUnload(){
  uint8_t flag1;
uint32_t mil1, mil1end;
int analog = analogRead(7);
  unload.tick(analog < 865 && analog > 800); //3
  motorstop.tick(analog < 940 && analog > 865); //2
for (;;) {
    if (unload.isClick()) {
        flag1 = 1;
        mil1 = millis();
        mil1end = mil1 + 60*1000;
    }
    if (unload.isStep()) {
        flag1 = 0;
        Serial.println("UnloadStep");
    }
    if (motorstop.isClick()) {
        flag1 = 0;
        Serial.println("UnLoadStop");
    }
    if (flag1 && millis() >= mil1) {
        Serial.println("StartUnload");
        mil1 += 200;
        if (mil1 > mil1end) {
            flag1 = 0;
        }
    }
}
}

void setup() {
  Serial.begin(9600);
  load.setStepTimeout(81);
  unload.setStepTimeout(81);
}
void loop() {
  int analog = analogRead(7);
  motorstop.tick(analog < 940 && analog > 865); //2
  load.tick(analog < 1024 && analog > 940); //1
  unload.tick(analog < 865 && analog > 800); //3
  if (motorstop.isSingle()) Serial.println("mStopSingle");
  if (motorstop.isHold()) Serial.println("mStopHold");
  if (motorstop.isDouble()) Serial.println("mStopDouble");
  if (motorstop.isTriple()) Serial.println("mStopTriple");
  
  motorstop.resetStates();
 if (load.isStep()) {Serial.println("LoadStep");}
  if (load.isClick()) {
  Serial.println("StartLoad");

  }
  if (unload.isStep()) {Serial.println("UnloadStep");}
  if (unload.isClick()) {
  Serial.println("StartUnload");
  runUnload();
  }
}

#22 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-22 16:07:26

Есть вот мой вариант скетча на основе запуска FOR, но в нем 3 проблемы - не получается добавить в void runLoad() и void runUnload()  остановку при помощи load.isStep или unload.isStep (пробовал дописывать условие else if, но не работает, может неправильно дописывал), а также если запустил серию кликом load.isClick, то если еще раз сделать клик на нее, то она уже не останавливается одним нажатием motorstop, просто проскакивает сообщение StopLoad, а серия продолжается и только по второму нажатию motorstop срабатывает остановка, ну и нет ограничения по времени. Может будет дешевле и проще доделать этот полурабочий скетч и фиг с ними уже с этими  флагами

#include "GyverButton.h" /// https://github.com/AlexGyver/GyverLibs/releases/download/GyverButton/GyverButton.zip

GButton load;
GButton unload;
GButton motorstop;

long previousMillis = 0;
long interval = 100;
void runLoad(){
  for (;;){  
  int analog = analogRead(7);
  load.tick(analog < 1024 && analog > 940); //1
  motorstop.tick(analog < 940 && analog > 865);//2
  if (motorstop.isClick()){
   Serial.println("LoadStop");
   break;
  }
  else {
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > interval) 
  {
  previousMillis = currentMillis;
  Serial.println("StartLoad");
  }
}
}
}

void runUnload(){
  for (;;){  
  int analog = analogRead(7);
  unload.tick(analog < 865 && analog > 800); //3
  motorstop.tick(analog < 940 && analog > 865);//2
  if (motorstop.isClick()){
   Serial.println("UnloadStop");
   break;
  }
  else {
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > interval) 
  {
  previousMillis = currentMillis;
  Serial.println("StartUnload");
  }
}
}
}

void setup() {
  Serial.begin(9600);
  load.setStepTimeout(81);
  unload.setStepTimeout(81);
}
void loop() {
  int analog = analogRead(7);
  motorstop.tick(analog < 940 && analog > 865); //2
  load.tick(analog < 1024 && analog > 940); //1
  unload.tick(analog < 865 && analog > 800); //3
  if (motorstop.isSingle()) Serial.println("mStopSingle");
  if (motorstop.isHold()) Serial.println("mStopHold");
  if (motorstop.isDouble()) Serial.println("mStopDouble");
  if (motorstop.isTriple()) Serial.println("mStopTriple");
  
  motorstop.resetStates();
 if (load.isStep()) {Serial.println("LoadStep");}
  if (load.isClick()) {
  Serial.println("StartLoad");
  runLoad();
  }
  if (unload.isStep()) {Serial.println("UnloadStep");}
  if (unload.isClick()) {
  Serial.println("StartUnload");
  runUnload();
  }
}

#23 Re: Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-22 15:56:15

А я откуда знаю расценки? Блин, ну я понимаю, что это не супер-сложная задача для тех, кто в теме. Делаю устройство для себя. 200грн например.

#24 Програмування Arduino » Помогите доделать простой скетч за денежку » 2020-12-22 15:34:50

martinways
відповідей: 61

Друзья, кто и за сколько денег поможет мне допилить несложную функцию в скетч, я не учил C++ и пока не планирую, делаю скетчи при помощи библиотек и методом научного тыка, но тут уже без знаний никуда. Использовал библиотеку Гайвера обработки кнопок, есть 3 кнопки - load, unload и motorstop. В скетче расписаны разные варианты отработки нажатий кнопки - просто клик isClick, одиночное нажатие isSingle, двойное нажатие isDouble и тройное isTriple, удержание кнопки isHold, функция isStep - выдача серии сообщений с заданным интервалом пока держишь кнопку.

Значит что требуется допилить:

- При клике на кнопку load  (событие load.isClick) в сериал должна запуститься выдача сообщения "StartLoad" с периодичностью например 100ms максимум на время например 1 минута, но при клике на кнопку motorstop - (событие motorstop.isClick) выдача сообщений "StartLoad" должна прекратиться и 1 раз выдается сообщение "LoadStop", также эта серия должна остановиться при длительном нажатии на кнопку load (событие load.isStep) и пока держишь кнопку должна отрабатываться выдача сообщений "LoadStep" в соответствии с этой функцией библиотеки.

- то же самое надо сделать и по отношению к кнопке unload - клик unload.isClick - запуск серии сообщений "StartUnload" интервал 100ms на 1 минуту, остановить серию преждевременно можно кликом на motorstop (событие motorstop.isClick) с однократной выдачей "UnloadStop" или же долгим нажатием на кнопку unload (unload.isStep)  с выдачей "UnloadStep" в соответствии с заданным в библиотеке или настройках интервалом.

Требуется сделать это все без применения delay. Код должен быть простым и правильным))
Что-то мне там люди советовали это делать при помощи флагов, но я в этом ниче не шурупаю и нет сил разбираться, сделал запуск серии при помощи for (;;) , но мне сказали  так неправильно и не все из задуманного таким образом получилось реализовать, поэтому жду Ваших предложений.

#include "GyverButton.h" /// https://github.com/AlexGyver/GyverLibs/releases/download/GyverButton/GyverButton.zip

GButton load;
GButton unload;
GButton motorstop;

void setup() {
  Serial.begin(9600);
  load.setStepTimeout(81);
  unload.setStepTimeout(81);
}
void loop() {
  int analog = analogRead(7);
  motorstop.tick(analog < 940 && analog > 865); //2
  load.tick(analog < 1024 && analog > 940); //1
  unload.tick(analog < 865 && analog > 800); //3
  if (motorstop.isSingle()) Serial.println("mStopSingle");
  if (motorstop.isHold()) Serial.println("mStopHold");
  if (motorstop.isDouble()) Serial.println("mStopDouble");
  if (motorstop.isTriple()) Serial.println("mStopTriple");
  
  motorstop.resetStates();
 if (unload.isStep()) {Serial.println("UnLoadStep");}
  if (unload.isClick()) {
  Serial.println("StartLoad");
  }
  if (load.isStep()) {Serial.println("loadStep");}
  if (load.isClick()) {
  Serial.println("StartUnload");
  }
}

#25 Re: Програмування Arduino » Помогите написать скетч для двух реле и кнопок » 2020-09-25 14:26:42

г0сть пише:

Резисторы поставить 10 кОм или можно использовать внутреннюю подтяжку. Для этого просто заменить INPUT на INPUT_PULLUP. По поводу кода - зачем там switch-case? ИМХО достаточно простого if-else.

Дружище, а можете помочь переписать код? Если нужна оплата напишите сколько, я просто вообще не в курсе принципов и синтаксиса, буду тыкать наугад целую вечность. Надо еще защиту от дребезга встроить.

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