Наливатор с ОЛЕД дисплеем , MP3-плееером, LED подсветкой , шаговиком или сервой.

Наливатор с ОЛЕД дисплеем , MP3-плееером, LED подсветкой , шаговиком или сервой.
ОБЩЕЕ ОПИСАНИЕ.
Наливатор на с дисплеем OLED , MP3 плеером, 3-мя режимами налива , светодиодной подсветкой , рассчитаный на максимум 6 рюмок.

Подробное описание подключения.

Контроллер
Вся конструкция тестировалась на ардуино нано.

nano.jpg

Распределение пинов:

0

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

1

Аппаратный сериал.

2

A энкодера

3

B энкодера

4

Кнопка энкодера

5

Канал управления адресной светодиодной лентой.

9

Канал управление сервоприводом

10

к RX плеера (через резистор 1к)

11

к TX плеера (через резистор 1к)

12

к BUSY плеера

13

Канал управление помпой

A0-A3

A4,А5
SDA, SCL

А6-А7
свободными остаются пины: 6, 7, 8. При смене сервопривода на шаговый двигатель они будут задействованы, а так же будет задействован пин 0 на концевик нулевого положения. 1-ый пин будет давать возможность выводить в монитор порта отладочные сообщения. Данный вид подключения пока реализован частично, рассчитан на микросхему ULN2003APC, которая часто идет в комплекте с шаговым двигателем 28BYJ-48.









Дисплей
Монохромный дисплей с разрешение 128х64
Подключение I2C, (А4 и А5 )
Скетч гарантированно поддержи
вает 2 дисплея: SH1106 1.3 дюйма и SSD1306 . По идее должен поддерживать графический ЖК дисплей 12864. Библиотека поддерживает и другие дисплеи.
1106.jpg1306.png12864.png
Библиотека U8glib.
В проект добавлены руссифицированные шрифты.
Настройка дисплея осуществляется выбором соотв. строки в файле silver_naliv_20.ino, строки 12-16
C++:
// выбор нужного драйвера дисплея
//U8GLIB_SH1106_128X64 Display(U8G_I2C_OPT_NONE);  // I2C / TWI
U8GLIB_SH1106_128X64 Display(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);  // Dev 0, Fast I2C / TWI
//U8GLIB_SSD1306_128X64 Display(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0); // I2C / TWI
//U8GLIB_SSD1306_128X64 Display(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK | U8G_I2C_OPT_FAST); // Fast I2C / TWI
Распиновка дисплеев в моем случае не совпадает! Будьте внимательны при подключении.

Энкодер.
Для работы используется мини-библиотека encMinim.h, работает без аппаратного прерывания, но вполне надежно. Для управления используется клик кнопкой, повороты вправо и влево, повороты с нажатой кнопкой, а так же удержание кнопки, как отмена.
Опробовано 2 типа энкодеров:
enc2.pngenc1.png
Отличие подключения 1-го от 2-го заключается в подключении +5 в для второго, и некотором отличии в коде.
Изменение в необходимо сделать в файле encMinim.h
Для первого типа:
C++:
 /* pinMode2 (_clk, INPUT);
  pinMode2 (_dt, INPUT);
  pinMode2 (_sw, INPUT);
*/
  pinMode2 (_clk, INPUT_PULLUP);
  pinMode2 (_dt, INPUT_PULLUP);
  pinMode2 (_sw, INPUT_PULLUP);
Для второго типа:
C++:
  pinMode2 (_clk, INPUT);
  pinMode2 (_dt, INPUT);
  pinMode2 (_sw, INPUT);
  /*
  pinMode2 (_clk, INPUT_PULLUP);
  pinMode2 (_dt, INPUT_PULLUP);
  pinMode2 (_sw, INPUT_PULLUP);
  */

MP3 - плеер
В качестве плеера используется DFPlayer , он же MP3-TF-16P
DFPlayer.png
У плеера есть встроенный усилитель, но звук от него довольно тихий. Так же есть возможность вывести часть управления на внешние кнопки миную контроллер, но я не увидел в этом необходимости.
Подключение питания к 5 вольтам.
Подключение к ардуино по 3-м (!) проводам. RX , TX и BUSY. Два первых провода передают и получают данные к/от ардуино по программному serual- порту, такие как : запуск и остановка треков, изменение громкости, получение кол-ва треков на мини-сд-карте. Эти провода надо подключать через резистор номиналом 1-2 килоОма. Третий провод предназначен для получения информации о состоянии плеера: идет воспроизведение или нет. В принципе такую информацию можно получить через команду по Serial, но это может подвешивать работу всего устройства, в то время как чтение порта практически ни на что не влияет.
Структура карты:
На карте должно быть 2 подкаталога "01" и "02". Каталог "01" содержит музыкальные треки для фоновой мелодии, а "02" содержит тосты для воспроизведения налива. В принципе названия могут быть любыми, главное что бы каталог с музыкальными фрагментами для фоновой мелодии были в начале по алфавиту. При изменении кол-ва музыкальных треков на карте при включении наливатора будет запущена конфигурационная процедура настройки, в которой следует указать кол-во мелодий для фона, все остальные скетч будет считать тостами.

ВАЖНО! Папка с музыкой должна копироваться или создаваться на карте 1-ой! Именно треки в 1-ой созданной папке будут считаться музыкой.
В отдельном посте опубликую ссылки на свои мелодии и тосты, с текстовыми описаниями. Попробуем сделать обмен тостами.
Библиотека для плеера

Подсветка мест для налива
Для подсветки мест используется адресная светодиодная лента и библиотека FastLED
LED.png
Можно использовать как 1 отдельный светодиод на место, так и вот такие кольца, а так же огрызки ленты по несколько светодиодов.
Ограничение одно - на всех местах для налива должно быть одинаковое число светодиодов.
Файл silver_naliv_20.ino
Общее число светодиодов рассчитывается как число светодиодов на 1 место помноженное на число мест.
В данном примере используется по 1-му светодиоду на место.
C++:
#define NUM_LEDS  LEDs_per_Drink*max_DrinkCount // Кол-во диодов (количество светодиодов на рюмку умножить на число рюмок, математика, 3-ий класс
Строки 42-45
C++:
#define max_DrinkCount 5               // Максимальное кол-во рюмок, при подключении на аналоговые пины максимум 6 рюмок при нано
#define LEDs_per_Drink 1               // Число светидиодов на рюмку, считается что под рюмкой такое число лампочек
Номер 1-го светодиода для каждого мест настраивается отдельно в файле drink_place.ino
C++:
// номер 1-го светодиода для каждой рюмки.  Могут быть не по порядку
  drinks_array[0].N_LED = 32768; // это место парковки и оно не подсвечивается !
  drinks_array[1].N_LED = 0;
  drinks_array[2].N_LED = 1;
  drinks_array[3].N_LED = 2;
  drinks_array[4].N_LED = 3;
  drinks_array[5].N_LED = 4;
В данном примере используется по 12 светодиодов на место.
C++:
#define max_DrinkCount 5               // Максимальное кол-во рюмок, при подключении на аналоговые пины максимум 6 рюмок при нано
#define LEDs_per_Drink 12               // Число светидиодов на рюмку, считается что под рюмкой такое число лампочек
C++:
// номер 1-го светодиода для каждой рюмки.  Могут быть не по порядку
  drinks_array[0].N_LED = 32768;
  drinks_array[1].N_LED = 0;
  drinks_array[2].N_LED = 12;
  drinks_array[3].N_LED = 24;
  drinks_array[4].N_LED = 36;
  drinks_array[5].N_LED = 48;

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

Дополнительные библиотеки
DIO2 - для более быстрого доступа к цифровым пинам.
EEPROMex - расширенное управление чтением и записью в EEPROM

Подключение шагового двигателя.
Для подключения шагового двигателя я предлагаю такой вариант:
входы 6 7 8 9 подключаются к in1 in2 in3 in4 платы с микросхемой ULN2003A.
на моторе.png
stepper.jpg
Собирается все просто. К микро кнопке (такая же как стоит на ресете ардуино нано) подпаиваются 2 провода, кнопка вставляется в 1-ую деталь, вторая подпирает ее и изолирует от мотора. Носик надевается на вал двигателя. Его надо надежно закрепить так, что бы кнопка зажималась при вращении и он не мешал движению. Сверху носика еще будет достаточно места, что бы на валу закрепить что то.
на мотор.png крышка.png носик.png
Ссылка на STL
Рыская на просторах Али нашел такое описание данного двигателя. шаг получается 5,625/64, т.е. 4096 шагов на оборот. В скетче изначально использовалось почему то 4076 шагов на оборот (не мое, брал из скетча). Число надо изменить на верное! Думаю сделать это каждый может самостоятельно.
step.png

Варианты корпусов:

Описание сборки мной на макетке, спустя некоторое время
 
Изменено:

Комментарии

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Подключение датчиков емкостей.

Т.к. датчиков может быть много, то под их описание решил отвести отдельный пост.
Я пробовал 2 типа : обычный концевик и датчик типа HW-201. И если с первым все прошло достаточно удачно, то со вторым добиться корректного определения ёмкости на месте я не смог: датчки хорошо реагировал на палец, светлые поверхности, но отказывался определять темные и прозрачные препятствия, поэтому однозначно рекомендовать я его не могу.

Настройка начинается с установки количества мест для налива. Устанавливается определение в файле silver_naliv_20.ino в строке № 42
C++:
#define max_DrinkCount 5               // Максимальное кол-во рюмок, при подключении на аналоговые пины максимум 6 рюмок при нано
Так же за настройку мест отвечают еще 3 строки в этом файле (строки 48-50)
C++:
#define PLACE_PULLUP                   // если определено, то места с подтяжкой
#define OPTOPOROG 300                  // пороговое значение ниже или выше которго место считается занятым
//#define PLACE_INVERT                   // влияет на проверку, если есть. то место занято , когда значение датчика выше optoporogg иначе когда ниже
PLACE_PULLUP это определение говорит о том, что необходимо использовать внутренний подтягивающий резистор. Тесты показали, что на пинах А6 и А7 такого резистора просто нет, поэтому если подтяжка необходимо, то ее надо сделать по схеме:
A6A7.png
Определение OPTOPOROG показывает общее для всех мест значение , ниже которого место будет считаться занятым. В более тонкой настройке это значение можно выставить индивидуально для каждого места.
закомментированное определение PLACE_INVERT , если его разкомментировать, будет говорить о том, что занятое место должно иметь значение БОЛЬШЕ оптопорога, а не меньше.

Как выбрать значение оптопорога.
Для определения оптопорога предлагаю использовать небольшой скетч
Скетч:
C++:
void setup() {
  Serial.begin(115200);
}

void loop() {
  static bool f = false;
  static int n = 0;
  if (n == 50) {
    n = 0;
    f = !f;
  }

  if (n == 0)
  {
    if (f)
    {
      pinMode(A0, INPUT);
      pinMode(A1, INPUT);
      pinMode(A2, INPUT);
      pinMode(A3, INPUT);
      pinMode(A6, INPUT);
      pinMode(A7, INPUT);
      Serial.println("INPUT");
    }
    else
    {
      pinMode(A0, INPUT_PULLUP);
      pinMode(A1, INPUT_PULLUP);
      pinMode(A2, INPUT_PULLUP);
      pinMode(A3, INPUT_PULLUP);
      pinMode(A6, INPUT_PULLUP);
      pinMode(A7, INPUT_PULLUP);
      Serial.println("INPUT PULLUP");
    }
    Serial.println("A0\tA1\t\A2\tA3\tA6\tA7");
  }

  Serial.println(" "+String(analogRead(A0))+"\t"+String(analogRead(A1))+"\t"+String(analogRead(A2))+"\t"+String(analogRead(A3))+"\t"+String(analogRead(A6))+"\t"+String(analogRead(A7)));
  delay(500);
  n++;
}
Пример вывода результатов:
C++:
INPUT
A0    A1    A2    A3    A6    A7
 715    913    857    775    593    646
 712    689    634    597    577    633
 712    518    493    509    567    624
 708    422    426    476    560    619
 709    381    402    468    561    623
 709    363    394    464    560    620
 715    355    390    464    560    621
 714    354    392    466    562    624
INPUT PULLUP
A0    A1    A2    A3    A6    A7
 41    1016    1016    1016    110    74
 41    1017    1018    1016    110    73
 41    1016    1016    1016    109    72
 42    1016    1017    1015    111    74
 41    1016    1015    1015    109    73
 42    1015    1016    1014    110    73
 40    1016    1015    1015    111    73
 42    1016    1016    1017    111    74
 41    1017    1017    1016    111    73
 43    1019    1018    1018    109    73
Скетч в цикле показывает в мониторе порта значения датчиков А0-А3, А6 и А7 как с внутренней подтяжкой , так и без.
Для концевика с подтяжкой значения пустого места были около 1010, а занятого около 15. Без подтяжки занятое место было строго 0, а пустое колебалось от 0 до 700, что не могло однозначно дать гарантированный результат.
Для датчика HW-201 значение пустого места зависили от питания, которое подавалось на сам датчик. 5 вольт это 1020, 3 около 700. Занятое место было менее 60.

"Тонкая" настройка мест
Детально настроить места можно в файле drink_place.ino
Функция Init_places() вызывается в setup один раз при запуске. Выставляет начальные значения для всех датчиков.
Углы положения носика налива для всех мест:
C++:
drinks_array[0].Position = 0;  // паркинг
  drinks_array[1].Position = 53;
  drinks_array[2].Position = 69;
  drinks_array[3].Position = 84;
  drinks_array[4].Position = 101;
  drinks_array[5].Position = 117;
В данном примере используется 5 мест налива. Место под индексом 0 - это место для паркинга носика, то место ,куда он будет возвращаться в нерабочее время. Далее начальные углы для каждого из мест. Эти углы можно ввести приблизительно, на глаз, т.к. в дальнейшем будет произведена калибровка и уточнение мест при первом запуске в обязательно порядке, однако калибровку можно всегда повторить , включив наливатор с нажатой кнопкой энкодера.
Откалиброванные значения положений хранятся в EEPROM.
Соответствие места налива аналоговому пину:
C++:
drinks_array[0].Input = 255;  // нет такого
  drinks_array[1].Input = A0;
  drinks_array[2].Input = A1;
  drinks_array[3].Input = A2;
  drinks_array[4].Input = A3;
  drinks_array[5].Input = A5;
Каждому место соотв. свой пин, если порядок по какой то причине не устраивает, то всегда можно его изменить . Т.к. нулевой индекс это парковка, то просто даем любое значение.

Далее идет инициация светодиодов, о чем было сказано выше.

Назначение оптопорога.
Оптопорог назначается всем одинаковый, в цикле
C++:
for (int i = 1; i <= max_DrinkCount; i++) drinks_array[i].Optoporog = OPTOPOROG;
Если какой-то датчик местоположения отличается по оптопорогу, то ниже этой строки (номер 40) можно вручную вписать необходимое значение.

И последней строкой открываем пины на воход по нужной схем.
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Сама прошивка:
Теперь прошивка единая для всех вариантов. Сделаны мелкие доработки
Архив zip

КОММЕРЧЕСКОЕ ИСПОЛЬЗОВАНИЕ В ЛЮБОМ ВИДЕ ЗАПРЕЩЕНО!

Главный файл - silver_naliv_20.ino
Доп. файлы:
  1. auto_naliv.ino
  2. bufer_proc.ino
  3. drink_place.ino
  4. eeprom_proc.ino
  5. effects.ino
  6. encMinim.h
  7. enc_proc.ino
  8. game_naliv.ino
  9. manual_naliv.ino
  10. menu_proc.ino
  11. my5x7rus.h
  12. pump.ino
  13. servonaliv.ino

Доработанная версия для шагового мотора с ULN2003A, именно для наливатора
В данной версии реализован метод write как в серве, углы задаются по математическому принципу, т.е. против часовой стрелки.
Реализовано многооборотное подключение шаговика
Определение
#define MAX_ROT 7
до использования модуля библиотеки задаст нужное число оборотов, по умолчанию 5 оборотов.
5 оборотов означает, что угол можно задавать не от 0 до 359, а от 0 до 1799.
Измененная библиотека для шаговика


Все найденные ошибки прошу отправлять в ЛС.

Содержимое карты для MP3 плеера.
Архив zip
  1. Popcorn, заставка из передачи спортлото
  2. Губит людей не пиво. "Дюна"
  3. Песня про самогонный аппарат из к/ф "Самогонщики"
  4. Милицейский протокол. В.С. Высоцкий
  5. Группа "Экспресс" По маленькой, по рюмочке
  6. Белая река.
  7. Напитки покрепче
  8. В Питере - пить
  9. Я пью до дна

Архив zip
Многоточие после тоста означает, что тост длиннее чем название.
  1. Ну за встречу
  2. Ну за красоту
  3. Ну за дружбу
  4. Ну за братство
  5. Ну за справедливость
  6. Ну за рыбалку
  7. Ну за искусство
  8. Ну за разум
  9. Ну за Родину
  10. Ну за солидное мужское молчание
  11. Ну за единение
  12. Это просто праздник какой то
  13. Ну за истинных женщин...
  14. Ну за женщин
  15. Ну за победу
  16. Ну чтоб голова не трещала
  17. Ну чтоб в сторону не вильнуло
  18. Друзья , к счастью, несчастье..
  19. Ну.. вы блин даете
  20. А не хлопнуть ли нам по рюмашке ?
  21. Кушать подано, садитесь жрать, пожалуйста
  22. За любовь, за секс...
  23. Так випьем же за то, что бы никто из нас , как бы высоко..
  24. Так выпьем за то, что бы наши желания всегда...
  25. После первой не закусывают!
  26. В прежнее время я мог спокойно четверть выкушать...
  27. Водка это уникальнейшее изобретение...
  28. Водку надо пить каждый день...
  29. Не желаете ли трахнуть по маленькой ?
  30. Романтизьму нету, выпить спокойно не дают.
  31. У меня родился очень важный тост...
  32. Желаю что бы все
  33. Жить как говориться хорошо...
  34. Два по 100 в одну посуду..
  35. Ну прощай здоровье
  36. Итить твою мать , профессор!..
  37. Так выпьем же за кибернетеике!
  38. Тост на охоте должен быть кратким..
  39. Не выпьите ли со мной рюмки?...
  40. Красота! Ну, царь, вздрогнули! Вздрогнули!
Если кто то захочет прислать файлы для тостов, тематические мелодии буду рад добавить их. Электронную почту сообщу по запросу в ЛС
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Автор наливатора - Drink

Краткая инструкция.
Первое включение.
Калибровка положений.
При первом включении скорее всего потребуется настроить положение привода носика. Эта же процедура запускается повторно при включении с зажатой кнопкой энкодера.
На экране высветиться надпись "клибровка" и большая цифра по порядку от 0 до N, где N - число мест для налива. Под цифрой 0 скрывается место парковки. Вращая ручку энкодера выбираем сесто. при этом носик будет двигаться. Для справки мелким шрифтом рядом с большой цифрой будет отображаться текущий угол. Для оптимизации работы угол не отображается моментально, а только после полусекундного бездействия. После настройки парковочного места аналогично настраиваются места для налива. при этом они будут подсвечиваться соотв. светодиодами. Начальные углы для будут выбраны из скетча. После успешной калибровки данные углов будут записаны в EEPROM и при следующих вызовах калибровки начальными значениями будут именно они.
Настройка фоновой музыки и тостов.
Так же при 1-ом включении может потребоваться настроить музыкальное сопровождение. При успешном подключении МР3 плеера запрашивается кол-во музыкальных треков на карте. Если кол-во треков на карте не соответствует кол-ву треков в памяти, то и вызывается эта функция. Но , к примеру, удаление одного трека музыки и добавление одного тоста не вызовет данную функцию. В этой функции из всего числа треков на карте надо указать кол-во фоновой музыки, так же вращая энкодер. Выбор необходимо подтвердить коротким нажатием.

Пункт меню "настройка"
В данном пункте можно запустить промывку систем, при этом носик наливатора сразу начнет двигаться в месту промывки. Место промывки указывается в основном файле в строке 161 (в данном случае 3 место)
C++:
#define CLEAR_POS 3                         // позиция, номер описанного места в которй будетдествовать промывка помпы
Нажав и удерживая кнопку энкодера в соотв. подпункте меню запускаем помпу.
"Подсветка" включает и выключает светодиоды подсветки мест, удерживая кнопку нажатой и вращая ее можно увеличить и уменьшить яркость.
Пункты меню "Музыка" и "Тосты" соотв. включает и выключает воспроизведение фоновой музыки в свободное время и произнесение тостов после налива. Вращение нажатым энкодером позволяет установить громкость для каждого типа звуков.
Музыка воспроизводиться случайным образом без остановки, с небольшой паузой между треками. При завершении налива звучание музыки прерывается и произноситься тост. После тоста будет начат новый трек.
Тосты произносятся в случайном порядке. но один и тот же тост не будет произнесен два раза подряд.
Для записи изменений надо нажать и удерживать кнопку энкодера ( в любом пункте меню, кроме промывки). Если выход из "настройки" будет по тайм-ауту, то сделанные изменения будут активны до перезагрузки прибора.
Так же будет записан текущий объем налива.

Разовая работа.
По клику заходим в пункт меню, вбираем объем налива и еще раз однократно нажимаем кнопку энкодера. Налив будет осуществлен во все установленные ёмкости. После разлива будет произнесен тост, если был включен. и осуществлен выход в основное меню. Если энкодер не был нажат, то через какое то время произойдет выход в меню по тайм-ауту.

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

Так же возможно прервать работу налива в любой момент нажатием и удержанием кнопки энкодера. Снятие стакана с места независимо от момента снятия исключает стакан из очереди. Если в момент снятия помпа работала. то налив эту емкость прекратиться и перейдет налив к следующему доступному стакану.

Выход из меню не очищает состояние стаканов в которые уже был начат налив. даже если он был не закончен. Для повторного использования места надо освободить его от стакана (И ВЫПИТЬ СОДЕРЖИМОЕ!)

Игровой режим. Шуточный.
Для соревнования нужно не менее 2-х участников. В данном режим обязательно включиться подсветка, т.к. без нее определить проигравших сложнее.
Все участники ставят свои стаканы на места. После этого нажимается кнопка энкодера.
Во все установленные стаканы будет налита определенная , случайная , доза напитка. Проигравшие стакан(ы ) будут подсвечены радужным сиянием. Их можно снять, можно не снимать. Если все стаканы засияли, то это конец игры, будет произнесен тост. Если же остались несияющие стаканы, то нажатием кнопки энкодера переходим к сл. этапу. В оставшиеся стаканы будет долито еще какое то кол-во жидкости. И так по кругу.
Да, в данном режиме возможна ничья.
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
@Anatolyj, Нет, прошивка бесплатная, хотя и делал я ее для продажи, но т.к. заказчик самоустранился, я выложу ее в открытый доступ после написания инструкции на условиях некоммерческого использования. Т.е. продажа наливаторв в массовом виде, под заказ, будет запрещена. Для себя, в подарок родственникам и друзьям (на по 255 штук за месяц) разрешена.
До написания инструкции выкладывать не хочу, что бы избежать лишних вопросов.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Добавил бетта версию для шагового двигателя , выложил STL файлы для распечатки на 3D принтере моего варианта определения нуля шагового двигателя. Так же выложена модифицированная библиотека, которая позволяет использовать шаговик как сервопривод, используя Write
 
  • Аррр! -2
Реакции: DarkP1xel

vog78

★✩✩✩✩✩✩
12 Фев 2020
48
16
выдает такую ошибку:
exit status 1
'place_state' was not declared in this scope
 

Roman-RV

★✩✩✩✩✩✩
21 Июн 2019
52
15
46
Папка с многовкладковым скетчем как называется? Пока я не обозвал папку как silver_naliv_20 , у меня тоже какие то подозрительные ошибки сыпались. Вообще по идее надо бы сразу выложить скетч в главной папке, а то нажимаешь на первый попавшийся фал скетча, arduino ide создаёт папку с названием запущенного файла и делает его главной вкладкой, вот и косяки
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Да, папка должна называться по имени главного файла.
Если есть такая ошибка, то это глюк ардины иде, надо ее закрыть, закрыть ВСЕ экземпляры! открыть, начиная с главного файла. Скомпилировать. Если не помогает обновиться, я делал все на версии 1.8.12
@Roman-RV, Да, надо было бы, но я как то считал, что уж с этим то проблем не будет. Обновил ссылку на 1-ый скетч
 
Изменено:
  • Аррр! -2
Реакции: DarkP1xel

vog78

★✩✩✩✩✩✩
12 Фев 2020
48
16
обновил иде все загрузилось!только при нажатии на 4 концевик загораються 4 и 5 диод!
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
ты инструкцию читал плохо! 5-ый диод подключен к 6-му аналоговому пину, его надо РЕЗИСТОРОМ подтянуть к 5в, я даже картинку нарисовал.. Нет у 6-го и 7-го пина подтяжки встроеной
 
  • Аррр! -2
Реакции: DarkP1xel

vog78

★✩✩✩✩✩✩
12 Фев 2020
48
16
к 6 пину подключен 5 концевик он отробатывает отлично!а вот 4 которай на а3 дурит
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
на а3 отрабатывает нормально. он дает какие то наводки на а6, поэтому исправлять надо а6. Сам посуди ты нажимаешь на концевик 4 и он загорается, но от чего то загорается и 5ый, который не нажат. Кто дурит ? 5-ый концевик, вернее тот, кто с него читает. Вот такая песня у них.
 

Anatolyj

★✩✩✩✩✩✩
30 Янв 2020
134
16
на ардуино леонардо при компиляции вылетает ошибка
Скетч использует 32250 байт (112%) памяти устройства. Всего доступно 28672 байт.
Глобальные переменные используют 1247 байт (48%) динамической памяти, оставляя 1313 байт для локальных переменных. Максимум: 2560 байт.
Скетч слишком большой; прочитайте http://www.arduino.cc/en/Guide/Troubleshooting#size
Ошибка компиляции для платы Arduino Leonardo.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Увы на леонардо не пробовал. Для нано занимает всё доступную память программы. Возможно какие то библиотеки для леонардо требуют больше места.
 
  • Аррр! -2
Реакции: DarkP1xel

Anatolyj

★✩✩✩✩✩✩
30 Янв 2020
134
16
Сравнил леонардо и нано. Есть одно отличие: у нано 32 кб под загрузчик 2 кб, а у леонардо 32 кб и под загрузчик 4 кб. А остальные параметры одинаковые. Наверно из - за этих 2 кб и не хватает. Жалко, придется нано заказывать.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Закажи лучше nano every
Скетч использует .... Всего доступно 49152 байт.
Глобальные переменные ... Максимум: 6144 байт.

Но с ней обнаружилась проблема с ФастЛЕД. буду посмотреть

Тесты этой платы показали, что она работает с НеоПиксель и МикроЛЕДом. А вот с фастЛЕДом дает ошибку.
Попробую сделать перевод на микроЛЕД. Может еще поможет память сэкономить.
 
Изменено:
  • Аррр! -2
Реакции: DarkP1xel

willi

✩✩✩✩✩✩✩
16 Мар 2020
22
2
Привет Старик,
меня зовут Виктор, мне 63, живу в Германии.
Немного необычная просьба, хотелось бы сделать такой наливатор, как твой с OLED дисплеем.
Но. С Ардуино я не дружу, вернее скетчи писать ещё не умею, никакие проэкты ещё не делал, хотя не сколько раз пытался.
Если можно напишите перечень нужных деталей, схему наливатора и т.д чтобы он был собираем.
Спасибо за всё что ты/вы здесь безплатно выставили, но если всё получится готов оказать мат.поддержку
 
  • Лойс +1
Реакции: hata1983 и Théo Jacobina