Диспенсер для вина Nagini - носик в виде головы змеи, вдо...
Диспенсер для вина Nagini — носик в виде головы змеи, вдохновленный миром волшебников
Это изготовленный фанатами 3D-напечатанный диспенсер для вина в форме змеи, выходящей из волшебной книги, вдохновленный знаменитой фантастической вселенной — ГАРРИ ПОТТЕРОМ. Жидкость вытекает прямо изо рта змеи, создавая волшебный и привлекательный эффект вечеринки, усиленный струящимися светодиодными огнями.
Рекомендации по печати
Для достижения наилучших результатов голову следует печатать из трех отдельных частей. Это упрощает печать, улучшает качество поверхности и обеспечивает чистую установку внутренних трубок, насоса и электроники.
Требуемое оборудование (помимо 3D-печати)
Для сборки полнофункциональной версии вам понадобится:
Жидкостный насос 12 В
источник питания 12 В
Ардуино (УНО или Нано)
Релейный модуль (Активный НИЗКИЙ)
Датчик магнитного поля Холла
3 светодиода
Силиконовая трубка/шланг (вводится через головку от помпы прямо во флакон)
Провода и основные разъемы
Трубка проходит через печатную головку, соединяется с насосом и попадает прямо в бутылку вина.
⚙ Как это работает
Система активируется с помощью магнита и датчика магнитного поля Холла. Когда магнит подносится близко к датчику, Arduino обнаруживает магнитное поле, включает насос 12 В через реле и запускает плавную светодиодную анимацию.
При удалении магнита насос немедленно останавливается, и все светодиоды автоматически гаснут.
Код Ардуино
const int HallPin = 2; // Датчик Холла (DO)
const int pumpPin = 13; // Реле насоса АКТИВНЫЙ НИЗКИЙ
const intled1Pin = 3; // светодиод 1
const intled2Pin = 4; // светодиод 2
const intled3Pin = 5; // светодиод 3
// Время шага светодиодной анимации (мс)
const unsigned longledStepInterval = 200;
беззнаковый длинный LastLedStepTime = 0;
ИНТ светодиодный шаг = 0;
недействительная настройка() {
pinMode (холлПин, ВХОД);
pinMode(pumpPin, ВЫХОД);
digitalWrite(pumpPin, ВЫСОКИЙ);
pinMode (led1Pin, ВЫХОД);
pinMode (led2Pin, ВЫХОД);
pinMode (led3Pin, ВЫХОД);
всеЛедсВыкл();
}
недействительный цикл() {
int HallState = digitalRead(hallPin);
// НИЗКИЙ = магнит обнаружен
bool MagneticDetected = (hallState == LOW);
если (магнитобнаружен) {
digitalWrite(pumpPin, LOW);
обновлениеЛедАнимация();
} еще {
digitalWrite(pumpPin, ВЫСОКИЙ);
всеЛедсВыкл();
светодиодный шаг = 0;
}
}
недействительный allLedsOff() {
digitalWrite(led1Pin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
}
// Плавная светодиодная анимация
недействительный updateLedAnimation () {
unsigned long now = millis();
if (теперь — LastLedStepTime LastLedStepTime = сейчас;
всеЛедсВыкл();
переключатель (ledStep) {
случай 0: digitalWrite(led1Pin, HIGH); перерыв;
случай 1: digitalWrite(led2Pin, HIGH); перерыв;
случай 2: digitalWrite(led3Pin, HIGH); перерыв;
случай 3: digitalWrite(led2Pin, HIGH); перерыв;
по умолчанию:
digitalWrite(led1Pin, ВЫСОКИЙ);
светодиодный шаг = -1;
перерыв;
}
светодиодСтеп++;
}
Если возникнут вопросы по сборке или проводке, могу предоставить подробную пошаговую инструкцию.





























