РАЗРАБОТКА АВТОМАТИЧЕСКОГО АППАРАТА ДЛЯ ПРОДАЖИ НАПИТКОВ НА ПЛАТФОРМЕ ARDUINO

В современном мире, где люди постоянно находятся в движении, автоматический аппарат для продажи напитков становится все более актуальным. Использование платформы Arduino делает его простым и доступным для создания, а также позволяет гибко настраивать и расширять функционал. В данной статье будет рассматриваться разработка автоматического аппарата на базе Arduino, который будет продавать различные виды напитков.

Для начала рассмотрим, что из себя представляет аппарат по продаже напитков и какие у него есть плюсы.

Аппарат по продаже напитков представляет собой автоматизированное устройство, предназначенное для продажи различных видов напитков, таких как газированные напитки, соки, вода и другие. Аппарат обычно имеет встроенный монетоприемник или купюроприемник, что позволяет покупателям оплачивать выбранный товар без участия продавца. Некоторые аппараты также могут быть оснащены системой выдачи сдачи и возможностью оплаты покупок с помощью банковских карт.

Плюсы:

  • Автоматизация процесса продажи - аппарат самостоятельно принимает оплату за товар и выдает его покупателю.
  • Удобство использования - покупателю не нужно обращаться к продавцу для покупки напитка, достаточно выбрать нужный товар на дисплее аппарата и оплатить его.
  • Экономия времени - аппарат по продаже напитков работает круглосуточно и не требует перерывов на обед или отдых.
  • Широкий ассортимент - в одном аппарате можно разместить большое количество различных напитков, что позволяет удовлетворить потребности разных покупателей.
  • Простота обслуживания - аппарат не требует специального ухода и может работать без вмешательства человека в течение длительного времени.

Когда мы узнали, что из себя представляет аппарат по продаже напитков, то можно начинать его разрабатывать.

Первым делом необходимо разработать концепцию аппарата. Он должен быть компактным и стильным, чтобы привлекать внимание покупателей. Основной функционал должен включать продажу напитков в банках и бутылках, а также возможность пополнения ассортимента в будущем.

Далее идет выбор компонентов, из которых будет сделан проект. Для создания автоматического аппарата нам понадобятся следующие компоненты:

  • Платформа arduino (например, arduino uno).
  • Дисплей для отображения информации о напитке и его стоимости (например, lcd дисплей 16x2).
  • Датчики для определения типа и размера тары (оптические датчики или датчики холла).
  • Механизм для подачи и приема тары (например, пневматический).
  • Монетоприемник и купюроприемник (например, mei cashcode sm).
  • Блок питания для обеспечения работы электроники и пневматики.
  • Корпус для размещения компонентов.
  • Зуммер для звукового оповещения о выполнении операции.

Третьим этапом будет идти разработка схемы подключения компонентов.

После того, как все необходимые компоненты будут выбраны, необходимо составить схему их подключения к платформе Arduino. Для этого нужно определить назначение каждого вывода Arduino и подключить соответствующие датчики и исполнительные устройства (Рисунок 1).

Рисунок 1. Схема подключения
Рисунок 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 курса специальности

«Компьютерные системы и комплексы»

ГАПОУ «МЦК-КТИТС»

Начать дискуссию