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

RomaT

★✩✩✩✩✩✩
5 Ноя 2019
104
38
@renby, проверил - всё нормально работает. То, что у вас льет на парковке тут не причем. Посмотрите несколько страниц назад форум, там этот случай рассматривался.
По поводу сервы - попробуйте обновить библиотеку servosmooth, там поправили кое какие баги (3.02)
 

2908969

★✩✩✩✩✩✩
5 Окт 2019
86
29
55
void flowRoutnie(int delayMove) {
внимательно смотрите когда переносите
я хоть буду внимательно смотреть, хоть не буду, все одно ничего в программировании не понимаю. Резюмируем: надо исправить ДВЕ строки кода:
1 flowRoutnie(100)
2 void flowRoutnie(int delayMove) {
правильно?
 

renby

★✩✩✩✩✩✩
5 Янв 2020
58
11
@renby, проверил - всё нормально работает. То, что у вас льет на парковке тут не причем. Посмотрите несколько страниц назад форум, там этот случай рассматривался.
По поводу сервы - попробуйте обновить библиотеку servosmooth, там поправили кое какие баги (3.02)
не могли бы вы поправленный файл c_func.ino скинуть? что то у меня не так...
 

RomaT

★✩✩✩✩✩✩
5 Ноя 2019
104
38
@2908969,
if (workMode) { // авто
LEDtick();
flowRoutnie(1000); // крутим отработку кнопок и поиск рюмок
} else { // ручной
if (btn.clicked()) { // клик!
systemON = true; // система активирована
timeoutReset(); // таймаут сброшен
}
if (systemON) flowRoutnie(0); // если активны - ищем рюмки и всё такое
}
}
}

// поиск и заливка
void flowRoutnie(int delayMove) {

if (systemState == SEARCH) { // если поиск рюмки
bool noGlass = true;
for (byte i = 0; i < NUM_SHOTS; i++) {
if (shotStates == EMPTY && i != curPumping) { // поиск
TIMEOUTtimer.stop();
noGlass = false; // флаг что нашли хоть одну рюмку
curPumping = i; // запоминаем выбор
systemState = MOVING; // режим - движение
shotStates[curPumping] = IN_PROCESS; // стакан в режиме заполнения
delay(delayMove);
servoON(); // вкл питание серво
servo.attach();
servo.setTargetDeg(shotPos[curPumping]); // задаём цель
DEBUG("find glass=");
DEBUGln(curPumping);
break;
}
}
красным то что поменялось или добавилось



@renby, у меня много чего другого в файле, ещё больше запутаетесь, сверху кусок скопируйте в свой файл


ЗЫ посмотрел и добавил ещё LEDtick();, потому как после установки рюмки и задержки на движение светодиод под рюмкой не загорается пока не пройдет задержка, так как LEDtick(); в loop вызывается после flowTick(), код сверху поправил
 
Изменено:
  • Лойс +1
Реакции: 2908969

renby

★✩✩✩✩✩✩
5 Янв 2020
58
11
Спасибо. Побежал я на работу, вечером попробую исправить.
 

renby

★✩✩✩✩✩✩
5 Янв 2020
58
11
@2908969,


@renby, у меня много чего другого в файле, ещё больше запутаетесь, сверху кусок скопируйте в свой файл


ЗЫ посмотрел и добавил ещё LEDtick();, потому как после установки рюмки и задержки на движение светодиод под рюмкой не загорается пока не пройдет задержка, так как LEDtick(); в loop вызывается после flowTick(), код сверху поправил
1580919161193.png
 

djzhuravl

✩✩✩✩✩✩✩
6 Ноя 2019
1
0
Всем привет. Собрал наливатор, все загрузилось. Но при роботе постоянно, перезагружается, зависает, и не переключается в автоматический режим. В чем проблема подскажите пожалуйста???
 

RomaT

★✩✩✩✩✩✩
5 Ноя 2019
104
38
@VICLER, shotStates это массив enum`ов
enum {NO_GLASS, EMPTY, IN_PROCESS, READY} shotStates[NUM_SHOTS];
судя по ошибке не воспринимает EMPTY, но код посмотрел, не в этом дело
 

RomaT

★✩✩✩✩✩✩
5 Ноя 2019
104
38
@djzhuravl, или ардуинку менять или же проверяйте внимательно что напаяли и в скетче насколько правильно пины прописали
 
  • Лойс +1
Реакции: djzhuravl

VICLER

★★★★★★✩
9 Дек 2019
801
662
Hamburg
@VICLER, shotStates это массив enum`ов
enum {NO_GLASS, EMPTY, IN_PROCESS, READY} shotStates[NUM_SHOTS];
судя по ошибке не воспринимает EMPTY, но код посмотрел, не в этом дело
во-первых это массив и не важно из чего он состоит. Если обращаться к нему без скоб, получите адресс первого елемента массива. Компилятор поэтому и ругается, потому что нет реализации оператора == для сравнения адреса и не адресса
 

RomaT

★✩✩✩✩✩✩
5 Ноя 2019
104
38
@VICLER, :LOL: на скрине да, но в скетче с которого скрин всё правильно написано) я скетч смотрел
 

VICLER

★★★★★★✩
9 Дек 2019
801
662
Hamburg
@RomaT, в скетче может всё и правильно, а в сообщении ошибка. Renby скопировал и вставил вместе с ошибкой. Просто при вставке таких скобок с i простым текстом в сообщении, они почему-то исчезают.
 

maks100

✩✩✩✩✩✩✩
5 Янв 2019
5
1
Такая проблема, после того как закончило наливать, а есть еще что наливать, носик движется (где то пол секунды ) к 0 позиции, а потом уже в другом нужном направлении...
 

maks100

✩✩✩✩✩✩✩
5 Янв 2019
5
1
Поправил,
C++:
void flowRoutnie() {
  if (systemState == SEARCH) {                            // если поиск рюмки
    bool noGlass = true;
    for (byte i = 0; i < NUM_SHOTS; i++) {
      if (shotStates[i] == EMPTY && i != curPumping) {    // поиск рюмки
        noGlass = false;                                  // флаг что нашли хоть одну рюмку
        curPumping = i;                                   // запоминаем выбор
        systemState = MOVING;                             // режим - движение
        shotStates[curPumping] = IN_PROCESS;              // стакан в режиме заполнения
        servoON();                                        // вкл питание серво
        //Правка servo.attach() второй аргумент по умолчанию 0
        servo.attach(SERVO_PIN, shotPos[curPumping]);
        servo.setTargetDeg(shotPos[curPumping]);          // задаём цель
        DEBUG("find glass");
        DEBUG(curPumping);
        break;
      }
    }
 

VICLER

★★★★★★✩
9 Дек 2019
801
662
Hamburg
@maks100, думаю эту строку вообще можно убрать.

C++:
servo.attach(SERVO_PIN, shotPos[curPumping]);
так как в библиотеке реализованно автоматическое подключение и отключение
 
  • Лойс +1
Реакции: maks100

RomaT

★✩✩✩✩✩✩
5 Ноя 2019
104
38
C++:
servo.attach(SERVO_PIN, shotPos[curPumping]);
На сколько помню это подключить и указать нулевую позицию от которой отчет пойдет дальше, т.е. если указано 45°, то 45° становится 0°, а 0° становится -45°
Кода пока нет под рукой глянуть
 

VICLER

★★★★★★✩
9 Дек 2019
801
662
Hamburg
@RomaT, не, там просто подключение и поворот на полной скорости на заданный угол
 

RomaT

★✩✩✩✩✩✩
5 Ноя 2019
104
38
@maks100, включите дебаг, и лог из сериала выложите (после ресета однократный налив допустим двух рюмок в ручном режиме
#define DEBUG_UART 1
 
Изменено: