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

stpavel
Offline
Зарегистрирован: 09.10.2018

b707 пишет:

ну что, гайвер спер идею и сделал Наливатор, что будете делать? сворачивать проект?

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

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


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

b707
Offline
Зарегистрирован: 26.05.2017

смысл ардуино творчества - идея и код. А коробочка - дело десятое, можно и в картонку из-под конфет запихнуть, лишь бы работало

 

Forthomo
Forthomo аватар
Offline
Зарегистрирован: 10.04.2019

По оформлению девайса гайвера:" Из г@вна и палок хорошо получаются только две вещи, первая - г@вно утыканное палками и второе - палки измазанные г@вном." А идея чемоданчика хорошая. Но мои моноблоки лучше на столе смотрятся.

kvirin1
Offline
Зарегистрирован: 14.09.2019

b707 пишет:

смысл ардуино творчества - идея и код. А коробочка - дело десятое, можно и в картонку из-под конфет запихнуть, лишь бы работало

 


уважаемый это абсолютно два разные проекты. Этот для души у гайвера для того чтоб было, причём он сам этого не скрывает. Если вам не нравится, то вы можете не собирать проект который в этом сайте а взять гайверовский и не писать всякую ерундуи не боломутить воду

Forthomo
Forthomo аватар
Offline
Зарегистрирован: 10.04.2019

Красота!

stpavel
Offline
Зарегистрирован: 09.10.2018

b707 пишет:

смысл ардуино творчества - идея и код. А коробочка - дело десятое, можно и в картонку из-под конфет запихнуть, лишь бы работало

 


Смысл любого творчества это конечный результат. И не важно , на чем это собрано схемотехнически , на ардуино или на голой атмеги или еще на чемто другом. Если вы запихнете крутую начинку с супер мега кодом в коробку из под конфет , это будет коробка из под конфет , с крутой начинкой и супер мега кодом , и не больше.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

b707 пишет:

ну что, гайвер спер идею и сделал Наливатор, что будете делать? сворачивать проект?

зачем вентилятор включаешь, тут мужики пьющие, морально устойчивые. 

b707 пишет:

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

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

b707 пишет:

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

не, теория и подача нормально, но вот исполнение...

Forthomo
Forthomo аватар
Offline
Зарегистрирован: 10.04.2019

И еще один на подходе

b707
Offline
Зарегистрирован: 26.05.2017

сорри, последний вброс, потом правда уйду...

Мужики. вы правда считаете. что эти вот фанерные ящики с непременным выжженным пунктиром по краям - лучше коробки Гайвера???

Ухожу

 

stpavel
Offline
Зарегистрирован: 09.10.2018

b707 пишет:

сорри, последний вброс, потом правда уйду...

Мужики. вы правда считаете. что эти вот фанерные ящики с непременным выжженным пунктиром по краям - лучше коробки Гайвера???

Ухожу

 


Стоять. Я еще не показал свой вариант с банкой из под иваси. Только употребить ее сперва надо. Под водочку.

b707
Offline
Зарегистрирован: 26.05.2017

stpavel][quote=b707 пишет:

Стоять. Я еще не показал свой вариант с банкой из под иваси. Только употребить ее сперва надо. Под водочку.

о, это стоит того, чтоб остаться. Я, честно - тоже умею ценить прекрасное... :)

kalapanga
Offline
Зарегистрирован: 23.10.2016

Если это тут уже было, то сорри! Если нет - посмотрите, красиво:

Робобар

Наливай-ка!

Да и вобще у товарища там много чего интересного Валерий Афанасьев

stpavel
Offline
Зарегистрирован: 09.10.2018

kalapanga пишет:

Если это тут уже было, то сорри! Если нет - посмотрите, красиво:

Робобар

Наливай-ка!

Да и вобще у товарища там много чего интересного Валерий Афанасьев

У гувера круче , чо , зеленый почти чемодан , да еще с красной кнопкой . Практически как тактический чемодан нашего презердента.

b707
Offline
Зарегистрирован: 26.05.2017

kalapanga пишет:

Если это тут уже было, то сорри! Если нет - посмотрите, красиво:

Робобар

Наливай-ка!

Да и вобще у товарища там много чего интересного Валерий Афанасьев

да, вот это - ТВОРЧЕСТВО :)))

stpavel
Offline
Зарегистрирован: 09.10.2018

b707 пишет:

да, вот это - ТВОРЧЕСТВО :)))

Патамушта  не на ардуино ?

spaer
Offline
Зарегистрирован: 30.10.2019

и мне если можно spaer2010@gmail.com 

stpavel
Offline
Зарегистрирован: 09.10.2018

spaer пишет:

и мне если можно spaer2010@gmail.com 

Банку из под иваси ? Я ее еще не доел (

spaer
Offline
Зарегистрирован: 30.10.2019

aleks_raichel пишет:

Пишите почту,скину нарезку мр3

И мне пожалуйста, aleks_raichel@mail.ru

spaer2010@gmail.com мне тоже

Rigikov
Offline
Зарегистрирован: 29.10.2018

Скиньте нарезку rigikov08@gmail.com

stpavel
Offline
Зарегистрирован: 09.10.2018

Выложил видос, новый режим разлива рюмок 

В принципе можно только его и оставить, при таком режиме авторежим, который наливает одинаковое кол-во во все рюмки не нужен. 

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

Супер. Но может не хватает такого режима - установил рюмку и не нажимая на кнопку энкодера идёт сразу наполнение

stpavel
Offline
Зарегистрирован: 09.10.2018

Wadzim пишет:
Супер. Но может не хватает такого режима - установил рюмку и не нажимая на кнопку энкодера идёт сразу наполнение

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

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

Ну если так рассматривать, то конечно

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

stpavel пишет:

Wadzim пишет:
Супер. Но может не хватает такого режима - установил рюмку и не нажимая на кнопку энкодера идёт сразу наполнение

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

ВОООТТ!

а если на рюмочках магниты...

stpavel
Offline
Зарегистрирован: 09.10.2018

xDriver пишет:

stpavel пишет:

Wadzim пишет:
Супер. Но может не хватает такого режима - установил рюмку и не нажимая на кнопку энкодера идёт сразу наполнение

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

ВОООТТ!

а если на рюмочках магниты...


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

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

ну хорошо, мысль была хорошая (по поводу поставили - налил)

можно указать кол-во участников и как только рюмки оказались на местах, любых, и кол-во совпало, наливаем.

тут еще один плюс, один "отвалился" и остальным хорош :)

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

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

хочу товарищу на Н.Г. презентовать (да и себе еще один), но понимаю, что сам не сделаю. не умею, не охота, да и некогда.

пишите на xDriverForums@yandex.ru, обсудим ЛЮБЫЕ предложения (Москва), оплата достойная.

gfx125
Offline
Зарегистрирован: 27.05.2017

b707 пишет:
что будете делать? сворачивать проект?


не, запустят новый - автоматический нарезатор закуски

Forthomo
Forthomo аватар
Offline
Зарегистрирован: 10.04.2019

Концевики! Не вся тара имеет выпуклость на дне.

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

Так подключать концевик?

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

Так подключать концевик?

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

Так подключать концевик?

Forthomo
Forthomo аватар
Offline
Зарегистрирован: 10.04.2019

Так, белый - +5В,зеленый - выход, черный - земля/общий. можешь смело резистор к НЗ контакту микрика подключить  чтоб не болтался,хуже не будет.

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

А в прошивке надо что-то под них менять. т.к. я видел параметры под них

Forthomo
Forthomo аватар
Offline
Зарегистрирован: 10.04.2019

Wadzim пишет:
А в прошивке надо что-то под них менять. т.к. я видел параметры под них

http://arduino.ru/forum/proekty/nalivator-avtomatizirovannaya-mashina-kotoraya-budet-razlivat-alkogol-po-stopkam?page=14#comment-485165

Rolo1
Offline
Зарегистрирован: 13.09.2019

Идея с концевиками идеальна, буду на них делать. Блин а я уже инфрокрасные датчики купил, хотел пять штук купить а прислали 25шт. Не заметил когда оформлял, что в упаковке 5шт. Вот куда их теперь девать, проектов с таким количеством датчиков то и нет. А корпус удобнее в 3Dmaxe наваять и на 3d принтере напечатать, если принтера нет то заказать печать у кого есть принтер.

AlexVita
AlexVita аватар
Offline
Зарегистрирован: 09.06.2017

stpavel пишет:

Выложил видос, новый режим разлива рюмок 

В принципе можно только его и оставить, при таком режиме авторежим, который наливает одинаковое кол-во во все рюмки не нужен. 

Привет, скетчем поделись.

alania_07
Offline
Зарегистрирован: 04.10.2019
#include 
#include 
#include "Adafruit_NeoPixel.h"

OLED  myOLED(SDA, SCL, 8); //Подключение экрана А4, А5
extern uint8_t MegaNumbers[];
extern uint8_t RusFont[];
extern uint8_t SmallFont[];
unsigned long currentTime;
unsigned long loopTime;
unsigned long ledTime;
// Переменные для энкодера -----------
const int pin_A = 2;       // Подключение вывода A (CLK) энкодера
const int pin_B = 3;       // Подключение вывода B (DT) энкодера
const int pin_SW = 4;       // Подключение вывода кнопки (SW) энкодера
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev = 0;
unsigned char encoder_sw_prew = 1;
//Массив , обозначаем подключенные оптопары по выводам . Оптопары подключены, A0,A1,A2,A3,A6
const byte  Optics[] = {0, 1, 2, 3, 6};
// Значения порога срабатывания датчика для каждой рюмки
const unsigned int Optics_porog[] = {1000,1000,1000,1000,1000};
//Серво
const int PIN_SERVO = 9;
Servo servo;
//Позиция каждой рюмки 
const byte Rumka_pos[] = {0,40,75,105,140};
//-------------------------
byte  Menu = 0;
byte MenuFlag = 0; // Здесь храниться уровень меню. 0 находимся в  Главном меню. 1 Вошли в меню Авто, 2 вошли в  Ручное управление
byte  Drink = 25; // По умолчанию в рюмку наливаем  20 мл.
//----- Минимальные и максимальные значения наполняемой жидкости и задержки для наполнения. 
const byte  min_Drink = 2; // Минимум в рюмку - 2 мл.
const byte  max_Drink = 50; // Максимум в рюмку - 50 мл.
// Калибровка работы насосика. Значения для налива min_Drink и max_Drink соотвественно 
const unsigned int min_Drink_delay = 300; 
const unsigned int max_Drink_delay = 4000;
//--------
byte  DrinkCount = 1; //По умолчанию, для ручного режима - 1 рюмка
const byte  max_DrinkCount = 5; //Максимальное кол-во рюмок - 5
// Насосик
const byte PIN_PUMP = 12;
// Светодиоды
const int PIN_LED = 5;// Сюда подключаются светодиоды
const int LED_COUNT = max_DrinkCount;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, PIN_LED, NEO_GRB + NEO_KHZ800);
//-------



void pump_enable() {
  digitalWrite(PIN_PUMP, 1);
}

void pump_disable() {
  digitalWrite(PIN_PUMP, 0);
}

void pump_timer(byte Drink) {
  digitalWrite(PIN_PUMP, 1);
  delay(map(Drink, min_Drink,  max_Drink, min_Drink_delay, max_Drink_delay));
  digitalWrite(PIN_PUMP, 0);
}

void oled_menu(int Menu) {
  myOLED.clrScr();
  myOLED.setFont(RusFont);
  myOLED.print(F("Y F K B D F N J H"), CENTER, 0);
  myOLED.print(F("F D N J"), CENTER, 15);
  myOLED.print(F("H E X Y J Q "), CENTER, 30);
  myOLED.print(F("G H J V S D R F"), CENTER, 45);
  myOLED.setFont(SmallFont);
  myOLED.print(F(">"), LEFT, (Menu * 15) + 15);
  myOLED.print(F("<"), RIGHT, (Menu * 15) + 15);
  myOLED.update();

}
//  выводит строчку по чуть чуть, в самый раз и тд. Передается номер строки, на которой выводить сообщение
void DrinkInfo(byte pos) {
  if (Drink < 15) {
    myOLED.print(F("YB J XTV"), CENTER, pos);
  } else if (Drink < 28) {
    myOLED.print(F("GJ XENM - XENM"), CENTER, pos);
  } else if (Drink < 38) {
    myOLED.print(F("D CFVSQ HFP"), CENTER, pos);
  } else if (Drink < 48) {
    myOLED.print(F("GJ GJKYJQ"), CENTER, pos);
  } else {
    myOLED.print(F("LJ RHFTD"), CENTER, pos);
  }

}

void Tost() {
  randomSeed(currentTime);
  myOLED.clrScr();
  myOLED.setFont(RusFont);
  myOLED.print(F("DSGMTV"), CENTER, 20); //Выпьем
  // Рандом - 1
  switch (random(11)) {
    case 0:
      myOLED.print(F("PF LHEPTQ!"), CENTER, 40); //За друзей
      break;
    case 1:
      myOLED.print(F("PF VBKS{ LFV!"), CENTER, 40); //За милых дам
      break;
    case 2:
      myOLED.print(F("PF PLJHJDMT!"), CENTER, 40); //За здоровье
      break;
    case 3:
      myOLED.print(F("PF ELFXE!"), CENTER, 40); //За удачу
      break;
    case 4:
      myOLED.print(F("PF VBH DJ DCTV VBHT!"), CENTER, 40); //За мир во всем мире
      break;
    case 5:
      myOLED.print(F("PF NT{ RNJ D VJHT!"), CENTER, 40); //За тех кто в море
      break;
    case 6:
      myOLED.print(F("PF K>V"), 24, 27);
  myOLED.print(F("VK "), RIGHT, 27);
  myOLED.setFont(MegaNumbers);
  myOLED.print(String(DrinkCount), LEFT, 13);
  myOLED.print(String(Drink), (Drink < 10) ? 80 : 57, 13);
  myOLED.update();
}


void oled_naliv(int MenuFlag) {
  myOLED.clrScr();
  myOLED.setFont(RusFont);
  myOLED.print((MenuFlag == 1) ? F("F D N J") : F("H E X Y J Q") , CENTER, 0);

  myOLED.print(F("Y F K B D F > "), CENTER, 27);
  DrinkInfo(47);
  myOLED.update();
}

void oled_nalito(int MenuFlag, int Nalito) {
  myOLED.clrScr();
  myOLED.setFont(RusFont);
  myOLED.print((MenuFlag == 1) ? F("F D N J") : F("H E X Y J Q") , CENTER, 0);
  myOLED.print(F("Y F K B N J"), CENTER, 20);
  if (Nalito == 1) {
    myOLED.print(F("H > V R F"), CENTER, 55);
  } else if (Nalito <= 4 ) {
    myOLED.print(F("H > V R B"), CENTER, 55);
  } else {
    myOLED.print(F("H > V J R"), CENTER, 55);
  }

  myOLED.setFont(SmallFont);
  myOLED.print(String(Nalito), CENTER, 36);
  myOLED.update();
}

void ServoNaliv(byte rumka) {
  servo.attach(PIN_SERVO);
  for (int pos = servo.read(); pos <= Rumka_pos[rumka]; pos += 1) { 
    // с шагом в 1 градус
    servo.write(pos); // даем серве команду повернуться в положение, которое задается в переменной 'pos'
    delay(10); // ждем 15 миллисекунд, пока ротор сервы выйдет в заданную позицию
  }
  servo.detach();


}

void ServoParking () {
  //Serial.println(servo.read());
  servo.attach(PIN_SERVO);
  for (int pos = servo.read();  pos >= 0; pos -= 1) {
    // с шагом в 1 градус
    servo.write(pos); // даем серве команду повернуться в положение, которое задается в переменной 'pos'
    delay(10); // ждем 15 миллисекунд, пока ротор сервы выйдет в заданную позицию
  }
  servo.detach();
}

void CvetoMuzik() {
  for (int i = 0; i <= 7; i++) {
    for (int y = 0; y < max_DrinkCount; y++) {
      strip.setPixelColor(y, strip.Color(255, 0, 0));
      strip.show();
      delay(30);
    }
    for (int y = 0; y < max_DrinkCount; y++) {
      strip.setPixelColor(y, strip.Color(0, 255, 0));
      strip.show();
      delay(30);
    }
    for (int y = 0; y < max_DrinkCount; y++) {
      strip.setPixelColor(y, strip.Color(0, 0, 255));
      strip.show();
      delay(30);
    }
  }
}

void setup()  {
  //Serial.begin(9600);
  //  servo.attach(PIN_SERVO);
  pinMode(pin_SW, INPUT); // устанавливаем pin pin_SW как вход
  digitalWrite(pin_SW, HIGH); // Поддяжка вывода к 1
  pinMode(pin_A, INPUT);
  pinMode(pin_B, INPUT);
  pinMode(PIN_PUMP, OUTPUT);
  digitalWrite(PIN_PUMP, 0);
  currentTime = millis();
  loopTime = currentTime;
  //   Volume=EEPROM.read(0);
  myOLED.begin();
  oled_menu(0);
  strip.begin();
  for (int i = 0; i < 5; i++) {
    pinMode(Optics[i], INPUT);
  }
  ServoParking();



}

void loop()  {
  currentTime = millis();
  if (currentTime >= (loopTime + 5)) { // проверяем каждые 5мс

    //     int  val = analogRead(0);     // считываем значение
    //  Serial.println(val);
    encoder_A = digitalRead(pin_A);     // считываем состояние выхода А энкодера
    encoder_B = digitalRead(pin_B);     // считываем состояние выхода B энкодера
    if ((!encoder_A) && (encoder_A_prev)) {  // если состояние изменилось с положительного к нулю

      //Вращение влево
      if (encoder_B) {
        if (MenuFlag == 0) {
          (Menu <= 0 ) ? Menu = 2 : Menu--; // Перемещение курсора по главному меню назад
          oled_menu(Menu);
        } else if (MenuFlag == 1) {
          (Drink <= min_Drink ) ? Drink = max_Drink : Drink--; // Уменьшаем кол-во милилитров в рюмку
          oled_auto(Drink);
        } else if (MenuFlag == 2) {
          (DrinkCount >= max_DrinkCount ) ? DrinkCount = 1 : DrinkCount++; // Влево увечичиваем рюмки для ручного режима
          oled_manual(DrinkCount, Drink);
        }
        //Вращение вправо
      } else {
        if (MenuFlag == 0) {
          (Menu >= 2 ) ? Menu = 0 : Menu++; // Перемещение курсора по главному меню вперед.
          oled_menu(Menu);
        } else if (MenuFlag == 1) {
          (Drink >= max_Drink ) ? Drink = min_Drink : Drink++;
          oled_auto(Drink);
        } else if (MenuFlag == 2) {
          (Drink >= max_Drink ) ? Drink = min_Drink : Drink++;
          oled_manual(DrinkCount, Drink);
        }
      }

    }

    encoder_A_prev = encoder_A;     // сохраняем значение А для следующего цикла

    int encoder_sw = digitalRead(pin_SW);
    if  (encoder_sw == 0 && encoder_sw != encoder_sw_prew)  { // Нажата кнопка

      int pause_sw = 0;
      boolean promivka = false;
      while (digitalRead(pin_SW) == 0) { // Держим кнопку. Считаем сколько времени прошло...
        delay(100);
        pause_sw++;
        if (pause_sw > 20 && Menu != 2 ) break;

        if (pause_sw > 20 && Menu == 2 && promivka == false) { // Если пункт меню промывка и держим кнопку больше 2 секунд.
          promivka = true;
          pump_enable(); // Включаем насос
          myOLED.clrScr();
          myOLED.setFont(RusFont);
          myOLED.print(F("G H J V S D R F"), CENTER, 15);
          myOLED.print(F(". . ."), CENTER, 45);
          myOLED.update();
        }
      }

      //После отпускания кнопки , обрабатываем
      if (promivka == true) { //Отпустили кнопку. Если включена промывка, выключаем насос и возвращаемся в главное меню
        promivka = false;
        pump_disable() ; //Выключаем насос
        oled_menu(2);

      } else {
        //Обработка всех нажатий кнопки
        if (Menu == 0 && MenuFlag == 0 &&  pause_sw < 10) { //Нажатие кнопки меню авто
          MenuFlag = 1;
          oled_auto(Drink);
        } else if (MenuFlag == 1 && pause_sw > 20) { //Выход из меню авто в главное
          MenuFlag = 0;
          oled_menu(0);
        } else if (MenuFlag == 1 ) { //Начинается автоматический разлив
          Serial.println("Начало автоматического разлива");
          oled_naliv(MenuFlag); // Выводим на экран наливаем ...
          byte drink_count = 0;
          for (int y = 0; y < max_DrinkCount; y++) {
            if (analogRead(Optics[y]) > Optics_porog[y] ) {
              strip.setPixelColor(y, strip.Color(255, 0, 0)); // Подствечиваем красным цветом
              strip.show();
              ServoNaliv(y); // Перемещяемся к рюмке
              pump_timer(Drink); // Налив.
              strip.setPixelColor(y, strip.Color(0, 255, 0)); // Подствечиваем зеленым , налито.
              strip.show();
              drink_count++;
            }
          }
          if (drink_count > 0) {
            oled_nalito(MenuFlag, drink_count );
            ServoParking();
            delay(1000);
            Tost();
            CvetoMuzik();
            oled_auto(Drink);
          } else {
            myOLED.clrScr();
            myOLED.setFont(RusFont);
            myOLED.print(F("YTN H>VJR !"), CENTER, 25);
            myOLED.update();
            delay(2000);
            oled_auto(Drink);

          }
        } else if (Menu == 1 && MenuFlag == 0 &&  pause_sw < 10) { // Нажатие меню ручное
          MenuFlag = 2;
          oled_manual(DrinkCount, Drink);
        } else if (MenuFlag == 2 && pause_sw > 20) { //Выход из меню ручное в главное
          MenuFlag = 0;
          oled_menu(1);
        } else if (MenuFlag == 2 ) { //Начинается ручной разлив
          //  Serial.println("Начало ручного разлива " + String(DrinkCount));
          oled_naliv(MenuFlag); // Выводим на экран наливаем ...
          for (int y = 0; y < DrinkCount; y++) {
            strip.setPixelColor(y, strip.Color(255, 0, 0)); // Подствечиваем красным цветом
            strip.show();
            ServoNaliv(y); // Перемещяемся к рюмке
            pump_timer(Drink); // Налив.
            strip.setPixelColor(y, strip.Color(0, 255, 0)); // Подствечиваем зеленым , налито.
            strip.show();
          }
          oled_nalito(MenuFlag, DrinkCount );
          ServoParking();
          Tost();
          CvetoMuzik();
          oled_manual(DrinkCount, Drink);
        }
      }
    }

    if (currentTime >= (ledTime + 300)) {
      //Опрашиваем оптопары ... Если рюмка поставлена , светодиод светится синим, нет ничего - не светится
      for (int i = 0; i < max_DrinkCount; i++) {
        
        int val = analogRead(Optics[i]);     // считываем значение
        Serial.println(val);
        if (val > Optics_porog[i]) {
          strip.setPixelColor(i, strip.Color(0, 0, 255));
        } else {
          strip.setPixelColor(i, strip.Color(0, 0, 0));
        }
    //    delay(20);

      }
      strip.show();
      ledTime = currentTime;
    }
    encoder_sw_prew = encoder_sw;
    loopTime = currentTime;

  }
}

 

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

А почему 300? От чего это зависит

alania_07
Offline
Зарегистрирован: 04.10.2019

Вот такие датчики. управляющий к d0 работает в инверсии. К a0 вообще не реагирует.

stpavel
Offline
Зарегистрирован: 09.10.2018

Wadzim пишет:
А почему 300? От чего это зависит

От сопротивления.

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

Выходит, если не подключать концевики то сервопривод не должен вообще вращаться. Типо нет рюмок.

Viblis
Offline
Зарегистрирован: 04.11.2016

Rolo1 пишет:

А корпус удобнее в 3Dmaxe наваять и на 3d принтере напечатать, если принтера нет то заказать печать у кого есть принтер.

Разве только элементы корпуса. У меня вот принтер не маленький и то область печати 200*150, а нормальная печать вообще там 170*120 максимум. Да и обрабатывать после принтера непросто - шкурить, ацетоновая ванна, грунтовка, покраска, а то слои будут видны, это не очень красиво. 

Я вот думаю в новой модели из оргстекла заказать, есть у нас в Питере  контора которая в размер режет и нужной формы гнет: http://www.anteyplex.ru/

Но не дешево....

stpavel
Offline
Зарегистрирован: 09.10.2018

alania_07 пишет:

Вот такие датчики. управляющий к d0 работает в инверсии. К a0 вообще не реагирует.

на d0 при срабатывании 0 небось, в обычном состоянии 1.

Попробуй поменять

        int val = analogRead(Optics[i]);     // считываем значение
        Serial.println(val);
        if (val > Optics_porog[i]) {
          strip.setPixelColor(i, strip.Color(0, 0, 255));
        } else {
          strip.setPixelColor(i, strip.Color(0, 0, 0));
        }

 на это

       int val = analogRead(Optics[i]);     // считываем значение
       Serial.println(val);
       if (val == 0 ) {
          strip.setPixelColor(i, strip.Color(0, 0, 255));
        } else {
          strip.setPixelColor(i, strip.Color(0, 0, 0));
        }

 

alania_07
Offline
Зарегистрирован: 04.10.2019

ни чего не изменилось

alania_07
Offline
Зарегистрирован: 04.10.2019

Поменял. Изменений нет

Forthomo
Forthomo аватар
Offline
Зарегистрирован: 10.04.2019

Проверь датчики скетчем serial_print_tab на Ядиске есть.

alania_07
Offline
Зарегистрирован: 04.10.2019

Подскажи пожалуйста датчики обязательно все должны быть подключены или можно один накинуть для проверки?

Forthomo
Forthomo аватар
Offline
Зарегистрирован: 10.04.2019

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

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

А если вообще не подключать их. Как должен реагировать скетч? У меня сервопривод все равно вращается