Одарили меня вот примерно таким ультразвуковым излучателем на 60 Ватт, и сама Вселенная сказала собрат ультразвуковую ванную.
Схему генератора собирал по разным схемам но почему-то они долго не работали только несколько минут после чего у самодельных трансформаторов лопались сердечники.
Сама ванная изготовлена из формы для выпечки хлеба, к ней припаян винт от излучателя, приклеен на эпоксидную смолу и накручен излучатель.




Генератор все же купил на 50 Ватт вот такой:

Схема управления простой таймер обратного отсчета на ардуинке нано.(Схема в .dch)

Энкодер лучше взять модуль, а у меня без кнопки от микроволновки.

Индикатор 4 разряда 7 сегментов взял из старого авто модулятора.

Реле, Диод, Резисторы, Поливой транзистор.
Выключатель не помню из чего.

Запитал схему управления от зарядки телефона. Хотел запитать от 5В модуля.


Скетч это мой первый не судите строго.
#define CLK 3
#define DT 2
#define SW 4
#define pin13 13
#include <SegmentsIndicator.h> //Библиотека 4*7 индикатора
#include "GyverEncoder.h" //Библиотека энкодэра
SegmentsIndicator segmentsIndicator(12, A1, A2 , A3, A4, 5, 6, 7, 8, 9, 10, 11, 12); //Определяем контакты индикатора 12-количество контактов
Encoder enc1(CLK, DT, SW);
uint16_t sec = 60; //задаем начальное время в сек отчета таймера
unsigned long last_time; //переменная для таймера millis
void setup() {
// enc1.setTickMode(AUTO);
enc1.setType(TYPE2); // Режим работы энкодора
pinMode(pin13, OUTPUT);
}
void loop() {
enc1.tick(); // не нужна, в этом режиме (AUTO) она входит в каждую функцию!
//if (enc1.isTurn()) { // если был совершён поворот (индикатор поворота в любую сторону)
// ваш код
// }
if (enc1.isRight() && sec < 1024) segmentsIndicator.displayVal(++sec, 0); // если был поворот
if (enc1.isLeft() && sec > 0) segmentsIndicator.displayVal(--sec, 0);
segmentsIndicator.displayVal(sec, 0);
segmentsIndicator.displayRefresh();
//if (enc1.isRightH()) Serial.println("Right holded"); // если было удержание + поворот
//if (enc1.isLeftH()) Serial.println("Left holded");
if (enc1.isPress()) { //нажатие кнопки энкодора
digitalWrite(pin13, HIGH); //включение нагрузки
while (sec > 0 ) { // цикл отсчета секунд
if (millis() - last_time > 1000) {
last_time = millis();
--sec;
}
segmentsIndicator.displayVal(sec, 0);
segmentsIndicator.displayRefresh();
enc1.tick(); // для энкодора
if (enc1.isPress()) break; // выход из цикла при нажатие на кнопку энкодора
}
digitalWrite(pin13, LOW); //выключение нагрузки
}
}
Корпус склеил из органическое стекла силиконом.

