РАЗРАБОТКА АВТОМАТИЧЕСКОГО АППАРАТА ДЛЯ ПРОДАЖИ НАПИТКОВ НА ПЛАТФОРМЕ ARDUINO
В современном мире, где люди постоянно находятся в движении, автоматический аппарат для продажи напитков становится все более актуальным. Использование платформы Arduino делает его простым и доступным для создания, а также позволяет гибко настраивать и расширять функционал. В данной статье будет рассматриваться разработка автоматического аппарата на базе Arduino, который будет продавать различные виды напитков.
Для начала рассмотрим, что из себя представляет аппарат по продаже напитков и какие у него есть плюсы.
Аппарат по продаже напитков представляет собой автоматизированное устройство, предназначенное для продажи различных видов напитков, таких как газированные напитки, соки, вода и другие. Аппарат обычно имеет встроенный монетоприемник или купюроприемник, что позволяет покупателям оплачивать выбранный товар без участия продавца. Некоторые аппараты также могут быть оснащены системой выдачи сдачи и возможностью оплаты покупок с помощью банковских карт.
Плюсы:
- Автоматизация процесса продажи - аппарат самостоятельно принимает оплату за товар и выдает его покупателю.
- Удобство использования - покупателю не нужно обращаться к продавцу для покупки напитка, достаточно выбрать нужный товар на дисплее аппарата и оплатить его.
- Экономия времени - аппарат по продаже напитков работает круглосуточно и не требует перерывов на обед или отдых.
- Широкий ассортимент - в одном аппарате можно разместить большое количество различных напитков, что позволяет удовлетворить потребности разных покупателей.
- Простота обслуживания - аппарат не требует специального ухода и может работать без вмешательства человека в течение длительного времени.
Когда мы узнали, что из себя представляет аппарат по продаже напитков, то можно начинать его разрабатывать.
Первым делом необходимо разработать концепцию аппарата. Он должен быть компактным и стильным, чтобы привлекать внимание покупателей. Основной функционал должен включать продажу напитков в банках и бутылках, а также возможность пополнения ассортимента в будущем.
Далее идет выбор компонентов, из которых будет сделан проект. Для создания автоматического аппарата нам понадобятся следующие компоненты:
- Платформа arduino (например, arduino uno).
- Дисплей для отображения информации о напитке и его стоимости (например, lcd дисплей 16x2).
- Датчики для определения типа и размера тары (оптические датчики или датчики холла).
- Механизм для подачи и приема тары (например, пневматический).
- Монетоприемник и купюроприемник (например, mei cashcode sm).
- Блок питания для обеспечения работы электроники и пневматики.
- Корпус для размещения компонентов.
- Зуммер для звукового оповещения о выполнении операции.
Третьим этапом будет идти разработка схемы подключения компонентов.
После того, как все необходимые компоненты будут выбраны, необходимо составить схему их подключения к платформе Arduino. Для этого нужно определить назначение каждого вывода Arduino и подключить соответствующие датчики и исполнительные устройства (Рисунок 1).
Программирование Arduino
Следующий этап - написание программы для Arduino. Программа должна обеспечивать выполнение следующих функций:
- прием монет и купюр;
- определение типа и размера монеты или купюры;
- расчет стоимости напитка в зависимости от его типа и объема;
- управление механизмом подачи и приема тары;
- отображение информации о стоимости и выбранном напитке на дисплее;
- звуковое оповещение о выполнении операций.
Код проекта
using namespace std;
// Определение типа монеты или купюры
enum class CurrencyType {
Coin,
Banknote
};
// Размеры монеты или купюры
enum class CurrencySize {
Small,
Medium,
Large
};
// Структура для хранения информации о денежных единицах
struct Currency {
CurrencyType type;
CurrencySize size;
double value; // Значение денежной единицы
};
// Структура для хранения информации о напитке
struct Drink {
string name;
double price;
};
// Карта для хранения информации о напитках
map drinks = {
{"Coca-Cola", {"Coca-Cola", 1.5}},
{"Sprite", {"Sprite", 1.2}},
{"Fanta", {"Fanta", 1.3}}
};
class VendingMachine {
private:
double insertedMoney;
double selectedDrinkPrice;
string selectedDrinkName;
public:
VendingMachine() : insertedMoney(0), selectedDrinkPrice(0) {}
// Прием монет и купюр
void acceptCurrency(Currency currency) {
if (currency.type == CurrencyType::Coin || currency.type == CurrencyType::Banknote) {
insertedMoney += currency.value;
cout << "Accepted " << (currency.type == CurrencyType::Coin ? "coin" : "banknote") << " of value " << currency.value << endl;
} else {
cout << "Invalid currency type!" << endl;
}
}
// Выбор напитка
void selectDrink(string drinkName) {
if (drinks.find(drinkName) != drinks.end()) {
selectedDrinkName = drinkName;
selectedDrinkPrice = drinks[drinkName].price;
cout << "Selected drink: " << drinkName << " Price: " << selectedDrinkPrice << endl;
} else {
cout << "Invalid drink selection!" << endl;
}
}
// Расчет стоимости напитка
double calculateDrinkCost() {
return selectedDrinkPrice;
}
// Управление механизмом подачи и приема тары
void dispenseDrink() {
if (selectedDrinkName.empty()) {
cout << "Please select a drink first!" << endl;
return;
}
if (insertedMoney < selectedDrinkPrice) {
cout << "Insufficient funds!" << endl;
return;
}
cout << "Dispensing " << selectedDrinkName << endl;
// Возврат сдачи
double change = insertedMoney - selectedDrinkPrice;
if (change > 0) {
cout << "Change: " << change << endl;
}
// Сброс состояния выбора напитка и вставленных денег
selectedDrinkName = "";
selectedDrinkPrice = 0;
insertedMoney = 0;
}
// Отображение информации о стоимости и выбранном напитке на дисплее
void displayInformation() {
cout << "Selected drink: " << selectedDrinkName << " Price: " << selectedDrinkPrice << endl;
cout << "Inserted money: " << insertedMoney << endl;
}
// Звуковое оповещение
void playSound() {
cout << "Beep!" << endl;
}
};
int main() {
VendingMachine vendingMachine;
// Пример работы с вендинговым автоматом
vendingMachine.acceptCurrency({CurrencyType::Coin, CurrencySize::Small, 0.5});
vendingMachine.acceptCurrency({CurrencyType::Coin, CurrencySize::Large, 1});
vendingMachine.selectDrink("Coca-Cola");
vendingMachine.acceptCurrency({CurrencyType::Banknote, CurrencySize::Medium, 5});
vendingMachine.dispenseDrink();
vendingMachine.displayInformation();
vendingMachine.playSound();
return 0;
}
Этот код демонстрирует базовый функционал вендингового автомата на C++, включая прием денежных единиц, выбор напитка, расчет стоимости, управление механизмом выдачи напитков и сдачи, отображение информации на дисплее и звуковое оповещение.
Тестирование и отладка. После написания программы необходимо проверить ее работоспособность на практике. Для этого можно использовать тестовые образцы тары и различные монеты и купюры. Если в процессе тестирования обнаруживаются ошибки или недочеты, их следует исправить и провести повторную отладку.
Заключение
Создание автоматического аппарата для продажи напитков - это интересный и увлекательный процесс. Используя платформу Arduino, можно создать компактный и функциональный аппарат, который будет успешно справляться с продажей различных видов напитков.
Фасхеев Б.И.,
студент 4 курса специальности
«Компьютерные системы и комплексы»
ГАПОУ «МЦК-КТИТС»