Наливатор - автоматизированная машина, которая будет разливать алкоголь по стопкам.

Desten
Offline
Зарегистрирован: 04.02.2022

Добрый день. Можно плату скинуть на nef1975@mail.ru. Пожалуйста. 

raven78
Offline
Зарегистрирован: 03.11.2019

Vladimir_N пишет:

На самом деле добавить калибровку аккумулятора можно, но нужно добавить строки в несколько файлов.

Я надеюсь автор прошивки благосклонно отнесется к моим исправлениям и может даже  добавит подобный код в свои новые версии.

Добавил))). Сделал как мне кажется маленько информативней, калибровка вызывается тройным кликом энкодера в меню просмотра напряжения АКБ, это избавит от случайного изменения коэффициента и мы видим реальные напряжение и   коэффициент на экране.

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

Vladimir_N пишет:

чтобы работало нормально, при работе от акку, измеряемое напряжение на А7 пине не должно быть больше 1.1V

ГИТ56    https://disk.yandex.ru/d/_YwP9zybnqOSJA     (копируем текст ссылки на ЯД, т.к. при клике не работает или капчу просит)

Acket пишет:

Вот в плеер зашёл не могу выбор галочки напротив рандома поставить - мимо проскакивает... Может там не двойным кликом, а иначе меняется?

Галочка проскакивает только если играет трек в плеере. Нужно выставлять до запуска проигрывания треков.

 

Acket
Offline
Зарегистрирован: 23.07.2019

Респект!!! Очень круто!

Ilgam62
Offline
Зарегистрирован: 18.03.2020

СКИНУ НА ПОЧТУ

Ilgam62
Offline
Зарегистрирован: 18.03.2020

СКИНУ НА ПОЧТУ

Gridzilla
Offline
Зарегистрирован: 25.10.2019

raven78 пишет:

Добавил))). Сделал как мне кажется маленько информативней, калибровка вызывается тройным кликом энкодера в меню просмотра напряжения АКБ, это избавит от случайного изменения коэффициента и мы видим реальные напряжение и   коэффициент на экране.

Еще бы микроинструкцию поправить *смущающийся смайлик*. Спасибо.

Acket
Offline
Зарегистрирован: 23.07.2019

Gridzilla пишет:

Еще бы микроинструкцию поправить *смущающийся смайлик*. Спасибо.

А кто мешает это сделать самостоятельно и выложить. Одно дело программа, другое - текст набить... Чего наглеть-то!?

Wadzim
Offline
Зарегистрирован: 29.10.2019

Всем здравствуйте. Подскажите такой вопрос - кто какой динамик использует (мощность, сопротивление и с усилителем дополнительным или без?) За ранее очень признателен

Acket
Offline
Зарегистрирован: 23.07.2019

У меня 3Вт 4Ом без усилителя. И так орёт громко

Носмас
Offline
Зарегистрирован: 13.06.2020

Игрался в скетче с настройками с плеером.

Плеер MH2024K-24SS как писал Павел из доверенных, но Павел писал что этот плеер с синим светодиодом, у меня же с красным.

И тосты вроде играет и приветствие, но вот звук установки рюмки отстаёт секунды на 2. Побороть не смог.

Как быть? Где рабочие плееры продают? Кто что скажет?

Gridzilla
Offline
Зарегистрирован: 25.10.2019

Acket пишет:

Gridzilla пишет:

Еще бы микроинструкцию поправить *смущающийся смайлик*. Спасибо.

А кто мешает это сделать самостоятельно и выложить. Одно дело программа, другое - текст набить... Чего наглеть-то!?

В наше время цифровых технологий при общении в интернете, люди зачастую не разберутся в вопросе (это относится как к новичкам, так и к старожилам форумов) и начинают обвинять оппонента, что может перерасти в флейм :)) Я не могу написать инструкцию по одной веской причине: я не пользуюсь этим скетчем с нового года, так как мне хватает своего и не знаю что там еще добавлено или изменено, помимо замера напряжения АКБ. А предложил это сделать уважаемому Роману для тех, кто будет его использовать в будущем. Я глубоко уважаю его труд и Ваш, в качестве тестера и за те предложения, что были внесены. 

Жму руку.

k@mr@d125
Offline
Зарегистрирован: 15.10.2021

Перелопатил пол алишки купил в этом магазине модуль на 100% рабочий, без всяких танцев с бубном
https://a.aliexpress.com/_A252F7

Vladimir_N
Offline
Зарегистрирован: 12.01.2022

Wadzim пишет:
Всем здравствуйте. Подскажите такой вопрос - кто какой динамик использует (мощность, сопротивление и с усилителем дополнительным или без?) За ранее очень признателен

Если делать корпус по файлам для печати от raven78 то идеально подходят динамики от самых дешевых колонок из DNS совпадают все крепления в корпусе, бонусом еще получаем стерео усилитель в придачу.

Носмас
Offline
Зарегистрирован: 13.06.2020

k@mr@d125 пишет:
Перелопатил пол алишки купил в этом магазине модуль на 100% рабочий, без всяких танцев с бубном https://a.aliexpress.com/_A252F7

Что то не могу найти это на русском языке

Носмас
Offline
Зарегистрирован: 13.06.2020

Никому не попадались плееры DFROBOT/LISP3?

k@mr@d125
Offline
Зарегистрирован: 15.10.2021

Попробуйте эту ссылку US $1.57 31%СКИДКА | Мини модуль MP3-плеера, модуль с TF картой, U-диском, плата аудио-голосового модуля для Arduino DF Play, оптовая продажа
https://a.aliexpress.com/_Aoj0Md

serg215
Offline
Зарегистрирован: 14.11.2019

smandr@mail.ru забросьте  звуки пожалуйста)))))) спасибо )))))

Носмас
Offline
Зарегистрирован: 13.06.2020

serg215 пишет:

smandr@mail.ru забросьте  звуки пожалуйста)))))) спасибо )))))


Дак возьмите. Ссылка выше

laser62
Offline
Зарегистрирован: 07.01.2020

Добрый день!!! Подскажите ПЖ, совсем запутался с аккумуляторами.

 

raven78]</p> <p>[quote=Vladimir_N пишет:

На самом деле добавить калибровку аккумулятора можно, но нужно добавить строки в несколько файлов.

Я надеюсь автор прошивки благосклонно отнесется к моим исправлениям и может даже  добавит подобный код в свои новые версии.

Добавил))). Сделал как мне кажется маленько информативней, калибровка вызывается тройным кликом энкодера в меню просмотра напряжения АКБ, это избавит от случайного изменения коэффициента и мы видим реальные напряжение и   коэффициент на экране.

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

Vladimir_N пишет:

чтобы работало нормально, при работе от акку, измеряемое напряжение на А7 пине не должно быть больше 1.1V

Я так понимаю что V56 наливатора дополнена автором калибровкой АКБ. Не понимаю только как это правильно настроить. Захожу в меню <НАПРЯЖЕНИЕ АКБ>, дальше <Напряжение nan V> и тройной клик энкодера показывает в верхней строке nan и в нижней nan. Никаких цифр нет. Справа в верху была батарейка нарисована (в версиях до 55), а теперь 4 вертикальных полоски. Напряжение на А7примерно 0,98V если верить мультиметру. Раньше просто не обращал внимания на настройку АКБ, и видно какую то информацию упустил.

Всем спасибо, автору особенная благодарность. Двое моих друзей на 60-ти летие уже получили по наливатору, подходит очередь третьего.

CergeyB2006
Offline
Зарегистрирован: 24.12.2021

  laser62 Доброго дня. В каком корпусе делаете?

Vladimir_N
Offline
Зарегистрирован: 12.01.2022

laser62 пишет:

Я так понимаю что V56 наливатора дополнена автором калибровкой АКБ. Не понимаю только как это правильно настроить. Захожу в меню <НАПРЯЖЕНИЕ АКБ>, дальше <Напряжение nan V> и тройной клик энкодера показывает в верхней строке nan и в нижней nan. Никаких цифр нет. Справа в верху была батарейка нарисована (в версиях до 55), а теперь 4 вертикальных полоски. Напряжение на А7примерно 0,98V если верить мультиметру. Раньше просто не обращал внимания на настройку АКБ, и видно какую то информацию упустил.

Это автор упустил.  Он не внимательно перенес условие поверки переменной в EEPROM типа float на предмет пустой, т.е. заполненной все 0xFF. Для float это недопустимо, поэтому и вылазит NаN, то есть не число. Поэтому прямое условие и не срабатывает т.к. там не число и сравнивать не с чем. Условие просто игнорируется. Нужно применять обратное условие.

В файле a_setup.ino cтроку

if (coeff_bat > ADC_U_COEFF_HIGH || coeff_bat < ADC_U_COEFF_LOW )coeff_bat = ADC_U_COEFF; //норма

Нужно заменить на две строки

if (coeff_bat < ADC_U_COEFF_HIGH || coeff_bat > ADC_U_COEFF_LOW );  //норма
else coeff_bat = ADC_U_COEFF; //NaN

 

raven78
Offline
Зарегистрирован: 03.11.2019

Vladimir_N пишет:

Это автор упустил.  

Да уж, не читал умных книжек))). Странно компилятор про это мне ничего не сказал, хотя включен полный вывод, и как назло в моём 160 и последующих адресах было чего то записано и я не выявил данный косяк.

Перезалил, ссылки выше.

Спасибо Vladimir_N!

Acket
Offline
Зарегистрирован: 23.07.2019

Интересно... А у меня всё нормально отображается и настраивается в 5.6...

Vladimir_N
Offline
Зарегистрирован: 12.01.2022

Acket пишет:
Интересно... А у меня всё нормально отображается и настраивается в 5.6...

После того как попробовал мои исправления, в ячейках eeprom записалось нужное значение, поэтому в старой 5.6 нормально отображается.   

laser62
Offline
Зарегистрирован: 07.01.2020

CergeyB2006 пишет:

  laser62 Доброго дня. В каком корпусе делаете?

В корпусе "Башня", из фанеры вырезана лазером. Фотки кто то ранее выкладывал - чертежи от reALM, немного подрехтовал под свои нужды.

Desten
Offline
Зарегистрирован: 04.02.2022

Павел 33333 пишет:

https://yadi.sk/d/4A_LKdZ61wq9fQ

может куму пригодится

Добрый день. Павел 33333 можно файлик платы скинуть. nef1975@mail.ru. Пожалуйста

volkodav34rus
Offline
Зарегистрирован: 17.09.2018

Есть у кого рабочая печатная плата, поделитесь пожалуйста. vbwz@yandex.ru

CergeyB2006
Offline
Зарегистрирован: 24.12.2021

Доброго дня. Роман (raven78), вот такую штуку можно прикрутить в качестве датчиков?

  https://aliexpress.ru/item/32672496161.html?algo_expid=afa90b33-3435-4e2f-adeb-7cc12b1f4f99-0&algo_pvid=afa90b33-3435-4e2f-adeb-7cc12b1f4f99&sku_id=12000018919590856&spm=a2g0o.search.0.0.658c47875uB9OF

Utyos
Offline
Зарегистрирован: 09.06.2019

Есть у кого рабочая печатная плата, поделитесь пожалуйста. vbwz@yandex.ru

volkodav34ru, попробуй из поста №4615. Ссылку вставлять в поисковую строку браузера.

raven78
Offline
Зарегистрирован: 03.11.2019

CergeyB2006 пишет:

Доброго дня. Роман (raven78), вот такую штуку можно прикрутить в качестве датчиков?

Доброго. В данном варианте по моему без переделки  модуля  не получится. По ссылке модуль имеет 16 входов и не одного выхода(выходы только по шине I2C) и перемычки переделывающей модуль в 8 входов и 8 физических выходов, судя по картинке, нет. Вот https://radiolaba.ru/microcotrollers/modul-sensornoy-klaviaturyi-ttp229.html  описание и схема. Люди делали вроде и у них всё работало.

Павел 33333
Offline
Зарегистрирован: 08.11.2020

https://disk.yandex.ua/d/qQFvvz46mSPVPw файла на эту плату у меня уже нет я давно делаю на чипе атмега 328 в смд и дип корпусе на трёх акб и с понижайками плеер ставлю так чтобы сд карту можно было легко вытаскивать если надо вот сылка на архив надеюсь разберётесь. Пины в некоторых скейчах соответтвуют печаткам и скейч поправлен под три акб . Последнии скейчы смотри.на печатках мышкой направляеш на компонент и высвитится номинал детали. 

medersa
Offline
Зарегистрирован: 10.02.2022

Такой у вас заказать можно?

medersa
Offline
Зарегистрирован: 10.02.2022

Такой у вас заказать можно?

medersa
Offline
Зарегистрирован: 10.02.2022

Такой у вас заказать можно?

CergeyB2006
Offline
Зарегистрирован: 24.12.2021

raven78 пишет:

CergeyB2006 пишет:

Доброго дня. Роман (raven78), вот такую штуку можно прикрутить в качестве датчиков?

Доброго. В данном варианте по моему без переделки  модуля  не получится. По ссылке модуль имеет 16 входов и не одного выхода(выходы только по шине I2C) и перемычки переделывающей модуль в 8 входов и 8 физических выходов, судя по картинке, нет. Вот https://radiolaba.ru/microcotrollers/modul-sensornoy-klaviaturyi-ttp229.html  описание и схема. Люди делали вроде и у них всё работало.


Так и  про это.
Если по шине датчики пустить, то входы освободятся, нано ведь может две шины читать?

raven78
Offline
Зарегистрирован: 03.11.2019

Так то да))).

provizor
Offline
Зарегистрирован: 21.08.2020

Всем привет! Собрал схему по этому видео: https://www.youtube.com/watch?v=5GNo1GSCab4

Включаю. Ставлю 2 рюмки, например, на 2 и 3 место - нужные светодиоды подсвечиваются красным (стоит пустая рюмка), выбираю объем наливаемой жидкости  и жму на энкодер. Серва дергается на ближайшую рюмку (вторую), затем на секунду-две загорается светодиод под рюмкой синим цветом (идет процесс налива) и затем светодиод загорается опять на красный (пустая рюмка). Насос при этом не включается.  При замыкании насоса напрямую кнопкой продува - насос работает. Все контакты на КЗ проверил, все подсоединения правильные, поменял плату ардуино, преобразователь напряжения, транзистор, дополнительно к этому отпаял серву и насос (мне подсказал один человек, что они могут наводки давать) - в итоге - ничего не изменилось. Конденсатор который нарисован на схеме я припаял на 1000 мкФ на 16 вольт. на Ардуино всегда горит красная лампочка.  Больше не знаю что проверить. Подкиньте идеи.  Скетч выложил ниже.

/*
Arduino Nano 328

oled дисплей 1.3 дюйма. SCK-A5 SDA-A4
энкодер с кнопкой. SW-D4 DT-D3 CLK-D2
5 ик датчиков D5 D6 D7 D8 D9
серво D10
помпа мосфет  D11
5 светодиодовв WS2812 - D12
 
 */
#include <Pin.h>
Pin myPin1 = Pin(4);
Pin myPin2 = Pin(5);
Pin myPin3 = Pin(6);
Pin myPin4 = Pin(7);
Pin myPin5 = Pin(8);
Pin myPin6 = Pin(9);

enum PinAssignments {
  encoderPinA = 2,   // right dt
  encoderPinB = 3,   // left clk
};

int lastReportedPos = 1;
static boolean rotating=false;
boolean A_set = false;              
boolean B_set = false;

volatile long ml = 50; //объём по умолчанию на дисплее
unsigned long v = 35; // задержка налива умножается на значение с экрана !(подгонять вручную)!


// углы сервы настраиваются вручную
const int r1 = 0;     // первая рюмка
const int r2 = 23;    // вторая рюмка
const int r3 = 48;    // третья рюмка
const int r4 = 73;    // четверая рюмка
const int r5 = 97;    // пятая рюмка


#include "U8glib.h"
#include "rus9x18B.h"


//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);  // I2C / TWI 
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI 
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK);  // Display which does not send AC
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI

bool key1Status;
bool key2Status;
bool key3Status;
bool key4Status;
bool key5Status;
bool key6Status;

bool naliv1Status;
bool naliv2Status;
bool naliv3Status;
bool naliv4Status;
bool naliv5Status;

void draw(void) {

  u8g.setFont(rus9x18B);
  u8g.drawStr( 0, 10, "Сколько Вам ");
  u8g.drawStr( 50, 22, "налить?");
  u8g.setFont(u8g_font_gdb30r);
  u8g.setPrintPos(0, 55);
  u8g.print(ml);

  u8g.setFont(rus9x18B);
  u8g.drawStr( 75, 45, "МЛ.");  
}

#include <Servo.h>

Servo myservo;  // create servo object to control a servo

const int pompPin = 11;
const int servo = 10;

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
 #include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif

#define LED_PIN    12
#define LED_COUNT 5

Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);


void setup()
{
  // flip screen, if required
  // u8g.setRot180();
  
  // set SPI backup if required
  //u8g.setHardwareBackup(u8g_backup_avr_spi);

  // assign default color value
  if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    u8g.setColorIndex(255);     // white
  }
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    u8g.setColorIndex(3);         // max intensity
  }
  else if ( u8g.getMode() == U8G_MODE_BW ) {
    u8g.setColorIndex(1);         // pixel on
  }
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    u8g.setHiColorByRGB(255,255,255);
  }

  myPin1.setInput();
  myPin2.setInput();
  myPin3.setInput();
  myPin4.setInput();
  myPin5.setInput();
  myPin6.setInput();
  
  digitalWrite(4, HIGH);
  
 
  myservo.write(0);
        delay(1000);
  myservo.attach(servo);

  pinMode(pompPin, OUTPUT);
  digitalWrite(pompPin, LOW);

  // These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
  // Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif
  // END of Trinket-specific code.

  strip.begin();           // INITIALIZE NeoPixel strip object (REQUIRED)
  strip.show();            // Turn OFF all pixels ASAP
  strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)

  pinMode(encoderPinA, INPUT_PULLUP); 
  pinMode(encoderPinB, INPUT_PULLUP); 

  attachInterrupt(0, doEncoderA, CHANGE);
  attachInterrupt(1, doEncoderB, CHANGE);
}

void loop()
{
  //pipi();

  static byte rr;
  static byte gg;
  static byte bb;
  static unsigned long rrggbbNextTime = 0;
  static byte mode = 0;
  
  if(rrggbbNextTime<=millis())
  {
    switch(mode)
    {
      case 0:
      rr = 0;
      gg = 0;
      bb = 255;
      mode++;
      break;
      case 1:
      rr = rr + 17;       // от синего до розового
      if(rr==255)
      {
        mode++;
      }
      break;
      case 2:
      bb = bb - 17;     // от розового до красного
      if(bb==0)
      {
        mode++;
      }
      break;
      case 3:
      gg = gg + 17;       // с красного до желтого
      if(gg==255)
      {
        mode++;
      }
      break;
      case 4:
      rr = rr - 17;     // с желтого до зелёного
      if(rr==0)
      {
        mode++;
      }
      break;
      case 5:
      bb = bb + 17;       // зелёного до 
      if(bb==255)
      {
        mode++;
      }
      break;
      case 6:
      gg = gg - 17; //   с до синего
      if(gg==0)
      {
        mode = 0;
      }
      break;
    }
    rrggbbNextTime = millis() + 0;
  }


  
  key1Status = myPin1.getValue();
  key2Status = myPin2.getValue();
  key3Status = myPin3.getValue();
  key4Status = myPin4.getValue();
  key5Status = myPin5.getValue();
  key6Status = myPin6.getValue();
  
  if(key2Status==0&&naliv1Status==1)strip.setPixelColor(0, strip.Color(rr, gg, bb)); //есть стакан полный РАДУГА
  if(key2Status==0&&naliv1Status==0)strip.setPixelColor(0, strip.Color(255, 0, 0)); //есть стакан пустой КРАСНЫЙ
  if(key2Status==1)strip.setPixelColor(0, strip.Color(0, 255, 0)),naliv1Status=0; //нету стакана пусто ЗЕЛЁНЫЙ

  if(key3Status==0&&naliv2Status==1)strip.setPixelColor(1, strip.Color(rr, gg, bb)); //есть стакан полный
  if(key3Status==0&&naliv2Status==0)strip.setPixelColor(1, strip.Color(255, 0, 0)); //есть стакан пустой
  if(key3Status==1)strip.setPixelColor(1, strip.Color(0, 255, 0)),naliv2Status=0; //нету стакана пусто

  if(key4Status==0&&naliv3Status==1)strip.setPixelColor(2, strip.Color(rr, gg, bb)); //есть стакан полный
  if(key4Status==0&&naliv3Status==0)strip.setPixelColor(2, strip.Color(255, 0, 0)); //есть стакан пустой
  if(key4Status==1)strip.setPixelColor(2, strip.Color(0, 255, 0)),naliv3Status=0; //нету стакана пусто

  if(key5Status==0&&naliv4Status==1)strip.setPixelColor(3, strip.Color(rr, gg, bb)); //есть стакан полный
  if(key5Status==0&&naliv4Status==0)strip.setPixelColor(3, strip.Color(255, 0, 0)); //есть стакан пустой
  if(key5Status==1)strip.setPixelColor(3, strip.Color(0, 255, 0)),naliv4Status=0; //нету стакана пусто

  if(key6Status==0&&naliv5Status==1)strip.setPixelColor(4, strip.Color(rr, gg, bb)); //есть стакан полный
  if(key6Status==0&&naliv5Status==0)strip.setPixelColor(4, strip.Color(255, 0, 0)); //есть стакан пустой
  if(key6Status==1)strip.setPixelColor(4, strip.Color(0, 255, 0)),naliv5Status=0; //нету стакана пусто

  strip.show();

  if(key1Status==LOW&&key2Status==HIGH&&key3Status==HIGH&&key4Status==HIGH&&key5Status==HIGH&&key6Status==HIGH)
  {
    strip.setPixelColor(0, strip.Color(0, 0, 0));
    strip.setPixelColor(1, strip.Color(0, 0, 0));
    strip.setPixelColor(2, strip.Color(0, 0, 0));
    strip.setPixelColor(3, strip.Color(0, 0, 0));
    strip.setPixelColor(4, strip.Color(0, 0, 0));
    strip.show();
    delay(125);
    strip.setPixelColor(0, strip.Color(255, 255, 255));
    strip.setPixelColor(1, strip.Color(255, 255, 255));
    strip.setPixelColor(2, strip.Color(255, 255, 255));
    strip.setPixelColor(3, strip.Color(255, 255, 255));
    strip.setPixelColor(4, strip.Color(255, 255, 255));
    strip.show();
    delay(125);
    strip.setPixelColor(0, strip.Color(0, 0, 0));
    strip.setPixelColor(1, strip.Color(0, 0, 0));
    strip.setPixelColor(2, strip.Color(0, 0, 0));
    strip.setPixelColor(3, strip.Color(0, 0, 0));
    strip.setPixelColor(4, strip.Color(0, 0, 0));
    strip.show();
    delay(125);
    strip.setPixelColor(0, strip.Color(255, 255, 255));
    strip.setPixelColor(1, strip.Color(255, 255, 255));
    strip.setPixelColor(2, strip.Color(255, 255, 255));
    strip.setPixelColor(3, strip.Color(255, 255, 255));
    strip.setPixelColor(4, strip.Color(255, 255, 255));
    strip.show();
    delay(125);
    strip.setPixelColor(0, strip.Color(0, 0, 0));
    strip.setPixelColor(1, strip.Color(0, 0, 0));
    strip.setPixelColor(2, strip.Color(0, 0, 0));
    strip.setPixelColor(3, strip.Color(0, 0, 0));
    strip.setPixelColor(4, strip.Color(0, 0, 0));
    strip.show();
    delay(125);
    strip.setPixelColor(0, strip.Color(255, 255, 255));
    strip.setPixelColor(1, strip.Color(255, 255, 255));
    strip.setPixelColor(2, strip.Color(255, 255, 255));
    strip.setPixelColor(3, strip.Color(255, 255, 255));
    strip.setPixelColor(4, strip.Color(255, 255, 255));
    strip.show();
    delay(125);
    strip.setPixelColor(0, strip.Color(0, 0, 0));
    strip.setPixelColor(1, strip.Color(0, 0, 0));
    strip.setPixelColor(2, strip.Color(0, 0, 0));
    strip.setPixelColor(3, strip.Color(0, 0, 0));
    strip.setPixelColor(4, strip.Color(0, 0, 0));
    strip.show();
    delay(125);
  }
  else
  {
    bool temp1=0;
    bool temp2=0;
    bool temp3=0;
    bool temp4=0;

    key2Status = myPin2.getValue();
    if(key2Status==1)strip.setPixelColor(0, strip.Color(0, 255, 0)),naliv1Status=0,strip.show(); //нету стакана пусто
    if(key1Status==LOW&&key2Status==LOW&&naliv1Status==LOW)
    {
      myservo.write(r1);         //1
     
      delay(500);
       myservo.detach();
      //strip.setPixelColor(0, strip.Color(255, 255, 0)),strip.show();
      digitalWrite(pompPin, HIGH),strip.setPixelColor(0, strip.Color(0, 0, 255)),strip.show(),delay(ml*v),digitalWrite(pompPin, LOW);
      delay(1000);
      myservo.attach(servo);
      naliv1Status=1,temp1=1;
    }
    key3Status = myPin3.getValue();
    if(key3Status==1)strip.setPixelColor(1, strip.Color(0, 255, 0)),naliv2Status=0,strip.show(); //нету стакана пусто
    if(key1Status==LOW&&key3Status==LOW&&naliv2Status==LOW)
    {
      myservo.write(r2);       //2

      delay(500 + (500*!temp1));
       myservo.detach();
      //strip.setPixelColor(1, strip.Color(255, 255, 0)),strip.show();
      digitalWrite(pompPin, HIGH),strip.setPixelColor(1, strip.Color(0, 0, 255)),strip.show(),delay(ml*v),digitalWrite(pompPin, LOW);
      delay(1000);
         myservo.attach(servo);
      naliv2Status=1,temp2=1;
    }
    key4Status = myPin4.getValue();
    if(key4Status==1)strip.setPixelColor(2, strip.Color(0, 255, 0)),naliv3Status=0,strip.show(); //нету стакана пусто
    if(key1Status==LOW&&key4Status==LOW&&naliv3Status==LOW)
    {
      myservo.write(r3);      //3
       delay(500 + (500*!temp1) + (500*!temp2));
       myservo.detach();
      //strip.setPixelColor(2, strip.Color(255, 255, 0)),strip.show();
      digitalWrite(pompPin, HIGH),strip.setPixelColor(2, strip.Color(0, 0, 255)),strip.show(),delay(ml*v),digitalWrite(pompPin, LOW);
      delay(1000);
      myservo.attach(servo);
      naliv3Status=1,temp3=1;
    }
    key5Status = myPin5.getValue();
    if(key5Status==1)strip.setPixelColor(3, strip.Color(0, 255, 0)),naliv4Status=0,strip.show(); //нету стакана пусто
    if(key1Status==LOW&&key5Status==LOW&&naliv4Status==LOW)
    {
      myservo.write(r4);      //4
      delay(500 + (500*!temp1) + (500*!temp2) + (500*!temp3));
       myservo.detach();
      //strip.setPixelColor(3, strip.Color(255, 255, 0)),strip.show();
      digitalWrite(pompPin, HIGH),strip.setPixelColor(3, strip.Color(0, 0, 255)),strip.show(),delay(ml*v),digitalWrite(pompPin, LOW);
      delay(1000);
       myservo.attach(servo);
      naliv4Status=1,temp4=1;
    }
    key6Status = myPin6.getValue();
    if(key6Status==1)strip.setPixelColor(4, strip.Color(0, 255, 0)),naliv5Status=0,strip.show(); //нету стакана пусто
    if(key1Status==LOW&&key6Status==LOW&&naliv5Status==LOW)
    {
      myservo.write(r5);    //5
      delay(500 + (500*!temp1) + (500*!temp2) + (500*!temp3) + (500*temp4));
       myservo.detach();
      //strip.setPixelColor(4, strip.Color(255, 255, 0)),strip.show();
      digitalWrite(pompPin, HIGH),strip.setPixelColor(4, strip.Color(0, 0, 255)),strip.show(),delay(ml*v),digitalWrite(pompPin, LOW);
      delay(1000);
      myservo.attach(servo);
      naliv5Status=1;
    }
    myservo.write(0);


    
    if(key1Status==LOW)
    {
      pipi();
    }
  }

  
  // picture loop
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
  
  // rebuild the picture after some delay
  //delay(50);
}

void pipi()
{
  int menu = 0;
  
  //randomSeed(analogRead(0));

  byte ran = millis();

  randomSeed(ran);
  
  // выводим случайное число в диапазоне от 0 до 9
  menu = random(0, 12);
  Serial.print("menu = ");
  Serial.println(menu);
  String tost = "";
  switch(menu)
  {
    case 0:
    tost = "За великую силу коллектива!";
    Serial.println("0");
    break;
    case 1:
    tost = "За изобретательность!";
    Serial.println("1");
    break;
    case 2:
    tost = "За Наших Дам!";
    Serial.println("2");
    break;
    case 3:
    tost = "Ну, за солнечную погоду!";
    Serial.println("3");
    break;
    case 4:
    tost = "Ну, чтоб не морщило";
    Serial.println("4");
    break;
    case 5:
    tost = "За встречу!";
    Serial.println("5");
    break;
    case 6:
    tost = "Ну, чтоб голова не трещала!";
    Serial.println("6");
    break;
    case 7:
    tost = "За здоровье!";
    Serial.println("7");
    break;
    case 8:
    tost = "За искусство!";
    Serial.println("8");
    break;
    case 9:
    tost = "За дружбу!";
    Serial.println("9");
    break;
    case 10:
    tost = "Ну, за справедливость!";
    Serial.println("10");
    break;
    case 11:
    tost = "За понимание!";
    Serial.println("11");
    break;
  }

  bool outWhile = 1;
  unsigned long timeOutWhile = millis() + 3000;
  while(outWhile)
  {
    u8g.firstPage();  
    do
    {


      
  byte tostLength;
  tostLength = tost.length();

  if(tostLength>25)
  {
    String tost1 = "";
    String tost2 = "";
    tost1 = tost.substring(0, 25);  //длина первой строки. 
    tost2 = tost.substring(25, tostLength); //длина 2 строки. 

    u8g.setFont(rus9x18B);
    u8g.setPrintPos(0, 10);
    u8g.print(tost1);

    u8g.setPrintPos(0, 30);
    u8g.print(tost2);
    
  }
  else
  {
    u8g.setFont(rus9x18B);
    u8g.setPrintPos(0, 10);
    u8g.print(tost);
  }


  
    } while( u8g.nextPage() );
  
    if(timeOutWhile<millis())
    {
      outWhile = 0;
    }
  }
}



void doEncoderA(){
  if ( rotating ) delay (1);
  if( digitalRead(encoderPinA) != A_set ) {
    A_set = !A_set;
    if ( A_set && !B_set ) 
      ml += 5;
    rotating = false;
  }
    rotating = true;
  if (ml <= 9 ){
    ml = 5;
    lastReportedPos = 11;
  }
    if (ml >= 121 ){
    ml = 120;
    lastReportedPos = 119;
  }
  else
  {if (lastReportedPos != ml) {
    lastReportedPos = ml;
  }}
}

void doEncoderB(){
  if ( rotating ) delay (1);
  if( digitalRead(encoderPinB) != B_set ) {
    B_set = !B_set;
    if( B_set && !A_set ) 
      ml -= 5;
    rotating = false;
  }
  rotating = true;
  if (ml <= 9 ){
    ml = 5;
    lastReportedPos = 11;
  }
    if (ml >= 121 ){
    ml = 120;
    lastReportedPos = 119;
  }
  else
  {if (lastReportedPos != ml) {
    lastReportedPos = ml;
  }}
  
}

 

gvs6357
Offline
Зарегистрирован: 12.12.2013

Всем здрасте. Уважаемый Павел 33333 понравилась ваша идея с ёмкостью. Отсюда вопрос что за ёмкость вы используете? Покупали готовую или заказывали. Сколько стоит.

Павел 33333
Offline
Зарегистрирован: 08.11.2020

я делал два вида ёмкости один из труб нержавейка а второй вариант был из бутылок с под водки обрезал бутылку ниже горлышка вытачивал крышку и садил на пищевой силикон а в дне бутылки сверлил отверстие и точил дно со штуцером и опять же на силикон садил. 

Павел 33333
Offline
Зарегистрирован: 08.11.2020

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

gvs6357
Offline
Зарегистрирован: 12.12.2013

Из нержи сами варили или заказывали?

Павел 33333
Offline
Зарегистрирован: 08.11.2020

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

gvs6357
Offline
Зарегистрирован: 12.12.2013

Ясно. Спасибо. Буду думать на вопросом.

provizor
Offline
Зарегистрирован: 21.08.2020

А мне кто-нибудь подскажет? ↑↑↑↑↑

alexspy2
Offline
Зарегистрирован: 11.01.2021

Очень интересно, можно мне платку на почту alex_spy@e-izhevsk.ru

Носмас
Offline
Зарегистрирован: 13.06.2020

Павел 33333 пишет:

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

Что за дисплей такой?

Павел 33333
Offline
Зарегистрирован: 08.11.2020
Ilgam62
Offline
Зарегистрирован: 18.03.2020

Можно плату на почту?  s-ilgam@yandex.ru

koka7777745
Offline
Зарегистрирован: 29.05.2017

Проверь какой вывод на плате управляет помпой ,и совпадает ли он со скетчем. Может в скетче пин нужно изменить. 

Wadzim
Offline
Зарегистрирован: 29.10.2019

Filangara пишет:
alpio пишет:

Шаталов Дмитрий Николаевич пишет:
Willi пишет:

Neoxxx пишет:
Acket пишет:

Без релюшек вот, на мосфете... Заказать бы плату с распайкой деталей, конечно, а не как драйвер-борд для модулей...

Поди вышло бы и дешевле и компактнее... Но я не разобрался ещё как такой заказ правильно оформить...

Acket скинь пожалуйста файл на плату. fomin_w@mail.ru

Acket и мне пожалуйста файл на схему и на плату.

Закажу сразу штук 10-20 может ещё кому нужно.

loyburg@mail.ru

и мне пожалуйста dimoti1979@mail.ru

А можно и мне эту плату для печати пожалуйста... Как раз лист текстолита купил, хочу упорядочить) alpio2002@gmail.com. Если невнапряг. С фотки очень геморно конвертить)

А можно плату на 6263307@mail.ru скинуть пожалуйста.

Всем зравствуйте. Все ищут данную плату. Те кто нашел поделитесь пожалуйста или скажите где найти. Очень благодарен.