Наливатор с ОЛЕД дисплеем , MP3-плееером, LED подсветкой , шаговиком или сервой.

Старик Похабыч

★★★★★★★
14 Авг 2019
4,319
1,319
Москва
@Soni666,
За увеличение и уменьшение объема налива отвечают 2 функции в файле menu_proc.ino

Уменьшение и увеличение объема налива:
byte IncreaseDrink(byte old_d) // тут проверка на положение в парковке!
{
  if (drinks_array[0].Position != servo.read()) return;
  (old_d >= max_Drink ) ? old_d = min_Drink : old_d++;
 
  return old_d;
};
//------------------------------------------------------//
byte DecreaseDrink(byte old_d)
{
  if (drinks_array[0].Position != servo.read()) return; // тут проверка на положение в парковке!
 
    (old_d <= min_Drink ) ? old_d = max_Drink : old_d--;
  return old_d;
};
Рассмотрим на примере с увеличением:
(old_d >= max_Drink ) ? old_d = min_Drink : old_d++;
если условие old_d >= max_Drink выполняется, то объем налитого будет равен min_Drink , т.к. при увеличении на 1 будет превышение максимального объема, иначе идет увеличение на 1.

Что бы изменить шаг процедуры лучше переделать. примерно так (не тестировал!), увеличение и уменьшение в данном случае будет на 2
C++:
byte IncreaseDrink(byte old_d) // тут проверка на положение в парковке!
{
  if (drinks_array[0].Position != servo.read()) return  old_d;
  old_d+=2;
  if (old_d > max_Drink )  old_d = min_Drink; 
  return old_d;
};

byte DecreaseDrink(byte old_d)
{
  if (drinks_array[0].Position != servo.read()) return old_d;
  old_d-=2;
  if (old_d < min_Drink ) old_d = max_Drink;
  return old_d;
};
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,319
1,319
Москва
Да. 3-ий провод сигнальный, исключительно для понимания проигрывается ли в данный момент что то или нет. Он необходим для работы наливатора, но для проверки можно без него. Подключить по схеме и загрузить любой пример из библиотеки
 

brabec86

✩✩✩✩✩✩✩
12 Ноя 2019
6
1
Как увеличить скорость сервы? Носик требежит сильно ,все разбрызгивается
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,319
1,319
Москва
Лучше этого не делать, но если оч. надо, то можно попробовать менять вот эти параметры.
C++:
#define STEP_TIME 15                        // свободное время между дрыгами сервы, чем больше время, тем проше играть энкодером во время движения, но и серва будет работать медленне
#define SERVO_DELAY 25                      // время необходимое серве для завершения 1-го шага движения.
1-ый параметр это время, которое отдается на все остальные действия в промежутках между шагами сервы, его надо уменьшить. до 10 точно можно.
2-ой это время, которое необходимо серве для выполнения одного шага. У моей сервы время было 23 мс, 25-с запасом. если 25 мс не хватает, то могут быть артефакты.
 

brabec86

✩✩✩✩✩✩✩
12 Ноя 2019
6
1
Лучше этого не делать, но если оч. надо, то можно попробовать менять вот эти параметры.
C++:
#define STEP_TIME 15                        // свободное время между дрыгами сервы, чем больше время, тем проше играть энкодером во время движения, но и серва будет работать медленне
#define SERVO_DELAY 25                      // время необходимое серве для завершения 1-го шага движения.
1-ый параметр это время, которое отдается на все остальные действия в промежутках между шагами сервы, его надо уменьшить. до 10 точно можно.
2-ой это время, которое необходимо серве для выполнения одного шага. У моей сервы время было 23 мс, 25-с запасом. если 25 мс не хватает, то могут быть артефакты.
Менял там, не помогло, краник дергается все равно ((
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,319
1,319
Москва
Есть такая функция bool ServoNaliv_by_rumka_asynch (byte rumka) в файле servonaliv.ino
там есть такой кусок
C++:
  // новое вычисление скорости
  if (abs(Delta) > 15) speed_k = speed_k + 0.2; else speed_k = speed_k - 0.3;
  if (speed_k > 3) speed_k = 3;
  if (speed_k < 1) speed_k = 1;
  Step = Step * speed_k;

  // старое вычисление скорости
  /*
    if (abs(Delta) > 20) Step = Step * 3;
    if (abs(Delta) > 5) Step = Step * 2;*/
попробуй убрать новое вычисление и поставить старое. Староне сразу начинает двигаться быстро и замедляется при приближении к месту. Если просто увеличить шаг, то скорее всего можно промахнуться по месту стоянки.

в новом варианте (который подписан как новый) увеличить скорость можно изменяя формулы в строке
if (abs(Delta) > 15) speed_k = speed_k + 0.2; else speed_k = speed_k - 0.3;
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,319
1,319
Москва
Как выяснилось на некоторых платах вот такой разводки (задняя сторона) не получилось толком запустить работу с MP3 плеером. Плеер работал только при подключении по USB . Замена платы решило проблему. При этом тестовый пример работает. Т.к. платы у меня такой нет, то понять в чем проблема не получилось.
IMG_20200418_182026.jpg

ЗЫ, Добавлена пара новых тостов.
 

Praporatorr

★★★✩✩✩✩
8 Дек 2019
86
109
Как выяснилось на некоторых платах вот такой разводки (задняя сторона) не получилось толком запустить работу с MP3 плеером. Плеер работал только при подключении по USB . Замена платы решило проблему. При этом тестовый пример работает. Т.к. платы у меня такой нет, то понять в чем проблема не получилось.
Посмотреть вложение 12399

ЗЫ, Добавлена пара новых тостов.
Была подобная проблема с некорректной работой в другом проекте. Решил подачей +5v на конденсатор C7, при этом пин 5v на плате не задействован. 🤷‍♂️
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,319
1,319
Москва
Все верно. она есть в доступных библиотеках Ардуино ИДЕ, но ссылку исправил, теперь открывается корректно. Спасибо
 

Praporatorr

★★★✩✩✩✩
8 Дек 2019
86
109
Доделал свою гравицапу )))
 

Вложения

Изменено:

Rexth

✩✩✩✩✩✩✩
25 Апр 2020
9
0
Старик, спасибо за проект. Собрал наливатор и столкнулся со следующей проблемой. первый налив проходит нормально, а после второго налива, перед произнесением тоста, система виснет намертво. если тосты отключить - нормально работает.
 

Rexth

✩✩✩✩✩✩✩
25 Апр 2020
9
0
да, после первого налива тост произносит. всегда один и тот же. а после второго зависает
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,319
1,319
Москва
Фоновая музыка включена при этом ? Идет ли воспроизведение мелодии до тоста и после тоста ?

Карта не может глючить ?
 

Rexth

✩✩✩✩✩✩✩
25 Апр 2020
9
0
от музыки не зависит. если музыка включена, то после второго налива система виснет, а музыкальный трэк продолжает играть до окончания, следующий не включается. Карту отформатировал, количество тостов поменял, меню в котором надо указать количество музыкальных трэков не вызывается. перепрошивка ардуинки не помогает