#include "Led.h"
#include "PC_and_VC.h"
#include "PS_and_VS.h"
#include "main_switch.h"
#include "manipulator.h"
// bool button_on = false;
bool step3_run_button = false;
bool step5_run_button = false;
int mode_main_switch = 0;
int previous_mode_snacks_prepare_and_vidacha_switch = -1;
int previous_mode_main_switch = -1;
bool is_need_snacks_okno_vidachi = false;
Led led;
/*
Покупка состоит из (информация из планшета в вендинговый аппарат):
- Кофе/снек
- индекс продукта
Пример заказа #1:
- Кофе:
- {2, 5} // заказано 2 кофе под номером 2 и 5
- Снеки:
- {2, 3, 4} // заказаны снеки под номером 2, 3 и 4
int array[2][4] = {
{2, 5},
{2, 3, 4}
}
Пример заказа #2:
- Кофе:
- {} // заказано 0 кофе
- Снеки:
- {12, 14} // заказаны снеки под номером 12 и 14
int array[2][4] = {
{},
{2, 4}
}
*/
/*
Вариант 1.
Кофе - Латте.
Вариант 2.
Снек - Сникерс.
Вариант 3.
Кофе: // номер кофе в массиве {последовательность нажатий сервоприводов и время ожидания приготовления}
- Латте
- Горячий шоколад
Снеки: // номер ячейки
- Сникерс
- Алёнка шоколад
- Фундук "рога и копыта"
*/
unsigned int cart[MAX_CATEGORY_PRODUCTS][MAX_PRODUCTS] = { // Корзина
// {2, 5}, // кофе (номер кофе в меню)
// {12, 13, 41, 22} // снеки (номер ячейки)
};
MAIN_SWITCH main_switch;
VIDACHA_COFFEE vidacha_coffee;
VIDACHA_SNACKS vidacha_snacks;
PC_and_VC pc_and_vc;
PS_and_VS ps_and_vs;
void setup() {
pinMode(button_pin, INPUT_PULLUP);
Serial.begin(115200);
init_joystick();
init_dc_motor();
init_dispenser_motor();
led.init();
init_manipulator(); // Инициализация ШД
init_endstops();
init_window_coffee();
init_servo();
// test_servo();
}
void loop() {
// joystick();
run_all_steppers_manipulator();
run_window_coffee_stepper();
led.flash();
main_switch.run();
}
/*
План:
========== Wokwi =============
тест скорости работы Ардуино Мега в момент обработки макс кол-ва устройств особенно ШД.
Ревью кода (навести порядок в коде):
найти переменные и функции которые находятся не в своих файлах (и переместить их или удалить)
Изменить все наши библиотеки для использования их через объекты (manipalator.open())
Эффективное управление данными (переменными и константами)
в функциях использовать ссылки и указатели для обработки массивов
VC и VS подумать над последовательностью case4 по 10. поправить блок схему в VC и VS
==============================
==== Arduino IDE - железо ====
тестировать выдачу двух одинаковых снеков сразу - prepare_snacks.ino 44 - case 3
в dispenser.h предусмотреть пропуск по времени выемки колеса dc тора для концевика (см DC_motor_expander.ino)
Подключить датчик объёма - VC и VS case4 и 8 (датчик объема)
настроить скорости и ускорения при отправке домой и в остальных случаях
Учитывать остаток кофе и снеков (в дисплее)
==============================
*/
/*
ДЗ
Ревью:
отыскать все TODO и обработать их
Во ВСЕХ файлах сделать Форматирование
Желательно ВЕЗДЕ константы (в том числе константы опр. через define) изменить на ВЕРХНИЙ_РЕГИСТР
ВЕЗДЕ в коде и в коментариях использовать одни и те же термины для одного и того же объекта
Написать к КАЖДОЙ функции в начале понятный коментарий
pins.h:
переименовать endstop1_pin .. endstop7_pin - от 1 до !7!
переименовать endstop9_pin и endstop7_pin вверх / вниз
желательно привести в единый стиль наименования: enable1Pin, step1Pin, direction1Pin, stepper1MaxSpeed и т.д.
подумать про VSCode - platformio для ардуино
*/
/*
Изменения:
*/
/*
Замеченные ошибки
*/
// Начало тестирования с определенных кейсов:
// pc ps
// vc vs
// pc 5 || ps 12