Всем привет ! Мучаялся с проектом. Кому интересно заморочится, готов оплатить. Если дадите наставления буду рад. Критика, высказывания приветствуются. Перечень оборудования: 1) Arduino nano 2) Цветной графический TFT-экран 160×128 или Цветной графический TFT-экран 320×240 / 2,2” (1шт.) 3) Датчик температуры DS18B20 ( 10 шт.) 4) Питание (Li-Ion, 2000 мА·ч) или крона 1(шт.) 5) Четырёхкнопочная клавиатура (Troyka-модуль) (1шт.) 6) Кнопка тактовая (3шт.) ТЗ для меню Вывод на экран меню: 1- Показать каждый датчик ( отдельно ) - при нажатии на данный пункт листать влево и вправо каждый датчик 2- Показать все датчики на одном экране - при нажатии на данный пункт вывести все датчики 3- Выгрузка данных - при нажатии на данный пункт сохраняет показания всех датчиков ( сохранение в массиве) 4- Очистить данные ( удаление данных из массива) ТЗ для кнопок 1) Четырёхкнопочная клавиатура (Troyka-модуль) - Вверх / Вниз/ Влево / Вправо 2) Кнопка тактовая №1 - Включение и выключение ( при выключении добавить подтверждение "Да(Влево/Нет/Вправо") 3) Кнопка тактовая №2 - Enter 4) Кнопка тактовая №3 - Назад ( данная кнопка делает возврат в меню) С ценами в ЛС
Вывод по датчикам и массиву понятно: Код (C++): #include <OneWire.h> #include <DallasTemperature.h> // сигнальный провод подключен к 2 пину на Arduino #define ONE_WIRE_BUS 4 // выберем разрешение от 9 до 12 #define TEMPERATURE_PRECISION 9 // настроем библиотеку 1-Wire для связи с датчиком OneWire oneWire(ONE_WIRE_BUS); // создадим объект для работы с библиотекой DallasTemperature DallasTemperature sensors(&oneWire); // создаем массивы для хранения адреса датчиков DeviceAddress insideThermometer, outsideThermometer; // функция вывода адреса датчика void printAddress(DeviceAddress deviceAddress){ for (uint8_t i = 0; i < 8; i++){ if (deviceAddress[i] < 16) Serial.print("0"); Serial.print(deviceAddress[i], HEX); } } void setup(void){ // инициализируем работу сериал порта Serial.begin(9600); Serial.println("Dallas Temperature IC Control Library"); // инициализируем работу с датчиком sensors.begin(); // выводим количество найденных датчиков Serial.print("Locating devices..."); Serial.print("Found "); Serial.print(sensors.getDeviceCount(), DEC); Serial.println(" devices."); // проверяем способ подключения питания Serial.print("Parasite power is: "); if (sensors.isParasitePowerMode()) Serial.println("ON"); else Serial.println("OFF"); // сделаем запрос на получение адреса датчика sensors.getAddress(insideThermometer, 0); sensors.getAddress(outsideThermometer, 1); // выведем полученный адрес Serial.print("Device 0 Address: "); printAddress(insideThermometer); Serial.println(); Serial.print("Device 1 Address: "); printAddress(outsideThermometer); Serial.println(); // установим выбранное разрешение датчика sensors.setResolution(insideThermometer, TEMPERATURE_PRECISION); sensors.setResolution(outsideThermometer, TEMPERATURE_PRECISION); // выведем значение установленного разрешения Serial.print("Device 0 Resolution: "); Serial.print(sensors.getResolution(insideThermometer), DEC); Serial.println(); Serial.print("Device 1 Resolution: "); Serial.print(sensors.getResolution(outsideThermometer), DEC); Serial.println(); } void loop(void){ // отправляем запрос на измерение температуры sensors.requestTemperatures(); // создаем переменную для хранения температуры в градусах Цельсия и выводим её значение float tempC0 = sensors.getTempC(insideThermometer); Serial.print("Temp C Device 0: "); Serial.print(tempC0); Serial.println(); float tempC1 = sensors.getTempC(outsideThermometer); Serial.print("Temp C Device 1: "); Serial.print(tempC1); Serial.println(); } Пересматривал кучу кода на меню так и не нашёл ( чтобы все датчики разом вывести в ячейки )
Добрый, толко не судите строго. Если за данный проект продолжить 5 тыс - это адекватная цена ? Просто хочется разобраться с выведением данных.
//Хотел создать массив данных для датчиков где “Device 0 Address” переменная addr “Порядковый номер» переменная num0 //Переменная NumberDS = addr*num0 Это нумерация датчиков. Или сделать 2 массива Address - индификационый номер производителя Массив порядковых номеров Массив полученных адресов + порядковый номер. Далее из этого массива выводить на экран. Номер датчика и его температуру.
В целом - зависит от деталей. Скажем - какой конкретно дисплей, маркировку контроллера укажите, плз. Озвученный бюджет - имеет право на жизнь, но все-все хотелки с ним не реализовать, естественно По поводу DS18B20 - очень плохая идея хранить адреса датчиков в скетче. В идеальном варианте должно быть сделано так, чтобы датчики сами подцеплялись. Ещё идеальнее - это горячая замена датчиков с сохранением их индексов, т.е.: подцепили 3 датчика при первом старте контроллера, он нашёл их, сохранил их адреса. Затем, если поменять, скажем, второй по порядку датчик на линии на другой - то свежеподцепленный датчик должен корректно заменять отсутствующий, а не становиться новым в системе. Посмотрите мою тему про ArduinoCore - настраиваемое ядро на Arduino: там как раз реализован автоподхват DS18B20.
Грамотный подход по вашей статье. Вы вычищаете ненужные библиотеки и добавляете свои по факту. Я правильно понял ? Относительно проекта. ILI9341C и ещё интересен ILI9163. Я думаю так же можно хранить в массивах, возможно я заблуждаюсь.
Не уверен, что у меня есть что-то из этих дисплеев сейчас - надо смотреть. Многоэкранное меню я вам нарисовать могу, для меня одно условие - лишь бы библиотека UTFT поддерживала драйвер дисплея (плотно работаю с этой библиотекой, есть русские шрифты для неё, нормально выводится UTF-8 на экран и т.п.). Ещё: у меня строго 50% предоплата, если что. Связано с тем, что много кидалова, поэтому любые телодвижения - только после утрясания первоначальных хотелок по скайпу, документирование их хотя бы в текстовом файле и предоплаты. После того, как прошивка написана - снимаю видео, выкладываю в закрытый раздел на ютюбе, даю ссылку вам. После этого - остальные 50%, высылаю ссылку на архив с прошивкой. Далее - если обнаружены ошибки по моей вине - исправляю в течение месяца бесплатно. Если что-то не сходится: новые хотелки там, не так объяснили/я не так понял - доработки обсуждаются отдельно. Вы пока ищите исполнителя, в общем - всё равно сегодня/завтра я точно ничего не смогу конкретно сказать: есть ли в наличии такой дисплей, как минимум.
По оплате как скажите. Не вопрос. По материалу для работы, могу скинуть вместе с предоплатой, так как на практике это лучше, чем пальцем в небо. А вот с ТЗ я тогда сяду вечером и напишу. Просьба в ЛС скинуть Skype
Да я и здесь могу porokhnya_dmitry. По поводу ТЗ: описывайте все хотелки, если получится/умеете - то мокапы экранов (просто прямоугольники с подписями, что на месте прямоугольника должно быть). Это определённо поможет любому исполнителю Не думаю, что в Краснодарский край это быстро дойдёт У меня есть некоторое кол-во TFT-дисплеев, но надо смотреть, что там за контроллеры. Сегодня/завтра точно этого сделать не смогу. В любом случае, считаю, что без первичной версии ТЗ - обсуждать конкретику пока рановато
Ещё лучше (примите как добрый совет): отказаться от выбранных TFT и поюзать Nextion - поверьте, это сильно лучше по многим факторам: во-первых, там можно реально красивый интерфейс сделать. Во-вторых, подцепляется к любой свистоперделке, у которой есть UART. В-третьих: можно менять дисплеи без перезакачки прошивки в дуню: достаточно переделать проект под Nextion. В-четвёртых - там из коробки есть многое: тач, автоматический уход в сон, кучу разных компонентов и т.п. Ну и, в-последних: у мну есть в наличии два небольших Nextion, модели могу глянуть, если заинтересует такое предложение. Проект под Nextion я вам нарисую, классы для работы с компонентами Nextion - тоже уже давно писаны и отлажены, останется только работу с датчиками приделать. Мне кажется, что этот вариант, несмотря на стоимость самого дисплея - наиболее предпочтителен для поддержания человеком, который в программировании - не очень силён, хотя бы потому, что мухи - отдельно от котлет Скажем: регулярно поддерживаю прошивку для человека, который занимается радиолюбительством. Так вот - там кучу всяких плюшек реализовано на Nextion, и т-щ сам правит интерфейс, когда надо. Не представляю, как бы он это делал, если бы интерфейс рисовался ручками на TFT - это, как понимаете, совершенно другой уровень вхождения З.Ы. Nextion у мну, емнип, есть вот такие: https://ru.aliexpress.com/item/Next...7f8ea58&transAbTest=ae803_1&priceBeautifyAB=0 https://ru.aliexpress.com/item/3-2-...7f8ea58&transAbTest=ae803_1&priceBeautifyAB=0
Я смотрел на них, и даже скачивал приложение для разработки интерфейса . Но хочу без тачскрина. И ценовой диапазон другой. Если есть тач, то нужна будет только кнопка включения.
Я давно покупал, NX-версии, как положено. Работают норм. Если надо - могу глянуть в истории, что за продавец.
Тачскрин можно не юзать Воот, и про то же. В общем, думайте. Разработка под Nextion, кстати, более бюджетна, т.е. разницы в общей сумме, потраченной вами на проект - не будет. Если у вас штучное изделие, то Nextion, пмсм - самое оно. Впрочем, настаивать не буду.
Ну тут кому что, что называется. По мне - так практичней тача мало что можно придумать: навигация кнопками - это немного как-то старовато
iPhone тоже всем нравятся, но зимой, их прячут в тёплые карманы подальше от холода, а всё виной корпус, который проводит холод. Инженерная недоработка. Тут с вами соглашусь «кому что, что называется»
Путешествуя по Европе взял на денёк теслу на прокат. Там управление магнитолой, навигацией, климатом тач скрин. Неудобно в поездке поднастраивать климат. У себя в гольф я могу не отвлекаясь от дороги руку опустить и не глядя ручку покрутить. А тут надо смотреть куда ты ткнешь на сенсором экране. Всё от задачи зависит. Хотя некстионы классные, жду доставки