ARDUINO Наливатор. Обсуждение проекта

egor1991

✩✩✩✩✩✩✩
10 Окт 2025
4
0
Был не рабочий модуль привода, поменял его и все заработало. Только сейчас при входе в сервисный режим для настройки углов над рюмками, при повороте энкодера он сразу отключается и включается, и так же делает при выборе автоматического режима. В чем может быть проблема? И какой конденсатор должен стоять на помпе, если можно пришлите пожалуйста фото или ссылку

Вот такой нормально?
 

Вложения

ДмитрийСем

✩✩✩✩✩✩✩
22 Май 2025
1
0
Доброго дня! какую строку кода, взятого у Гайвера v1.5, мне нужно откорректировать, чтобы сделать паузу в 2секунды до начала работы серво привода в автоматическом режиме?!
Подробнее: Я устанавливаю автоматический режим наливатора и после установки рюмки сразу же включается сервопривод и поворачивает носик. Я хочу добавить паузу в 2 секунды, чтобы хотя бы успеть убрать руку.
 

Bruzzer

★★★★✩✩✩
23 Май 2020
747
227
какую строку кода, взятого у Гайвера v1.5, мне нужно откорректировать, чтобы сделать паузу в 2секунды до начала работы серво привода ...
Такой строки нет.
Можно предложить следующую конструкцию:
Создать переменную для вычисления задержки и значение требуемой задержки
#define DELAY_EMPTY_GLASS 2000 //Задержка начала движения сервы после установки рюмки, чтобы не било по рукам
uint32_t timeEmptyGlass; // время когда поставили пустой стакан
Добавить запоминание времени при добавлении пустой рюмки timeEmptyGlass = millis();
C++:
void flowTick() {
  if (FLOWdebounce.isReady()) {
    for (byte i = 0; i < NUM_SHOTS; i++) {
      bool swState = !digitalRead(SW_pins[i]) ^ SWITCH_LEVEL;
      if (swState && shotStates[i] == NO_GLASS) {  // поставили пустую рюмку
        timeEmptyGlass = millis();                                  // запомнили, когда поставили пустую рюмку. (чтобы сделать задержку начала движения)
        timeoutReset();                                             // сброс таймаута
        shotStates[i] = EMPTY;                                      // флаг на заправку
Добавить проверку окончания задержки в коде отвечающем за начало движения.
C++:
// поиск и заливка
void flowRoutnie() {
  if (systemState == SEARCH && (millis() - timeEmptyGlass >= DELAY_EMPTY_GLASS)) {       // если поиск рюмки
    bool noGlass = true;
 
Изменено: