Перейти к публикации
iT4iT.CLUB

Василий Залукаев

Пользователи
  • Публикации

    9
  • Зарегистрирован

  • Посещение

Репутация

2 Neutral

Посетители профиля

Блок посетителей профиля отключен и не будет отображаться другим пользователям

  1. ИМХО... результат прям вообще так себе. Видно что вы только ступаете на путь программирования, но уже учите... if (s == "PIN_0") { res = 0; }; if (s == "PIN_1") { res = 1; }; if (s == "PIN_2") { res = 2; }; А знаете ли вы что даже если будет PIN_0, то он все равно будет продолжать перебирать по остальным? В таком контексте было бы правильнее сделать так: if (s == "PIN_0") { res = 0; } else { if (s == "PIN_1") { res = 1; } else { if (s == "PIN_2") { res = 2; }}} Потом где вы вообще видели за закрывающей скобкой точку с запятой? Вы в курсе что это в программировании грубо говоря пустая строка? if (bla) ; В данном случае будет выполнена проверка и по итогу ни чего не сделано. Но и в данном случае такая себе идея гонять строки. Откройте для себя switch ... case Вычленяем все до "_" + проверяем после него на "W" и "A" и после уже в числовую переменную номер пина. pin_val_get(0, true); pin_val_get(1, true); pin_val_get(2, true); pin_val_get(3, true); pin_val_get(4, true); pin_val_get(5, true); pin_val_get(6, true); pin_val_get(7, true); pin_val_get(8, true); pin_val_get(9, true); pin_val_get(10, true); pin_val_get(11, true); Тоже тема знатная... for еще не проходили? if (va < 0) {va = 0; } if (va > 1) {va = 1; } Зачем этот изврат? Вы в курсе что в половине случаев вы просто сделаете лишние тики? if (va <= 0) va = 0 else va = 1; Опять же зачем плодить лишние {}? Да и подобные простые вещи тоже так громоздко не пишут давно va = (va <= 0) ? 0 : 1; Так же можно было и сократить и ваши ифы выше: res = (s == "PIN_0") ? 0 : (s == "PIN_1") ? 1 : (s == "PIN_2") ? 2; Вот по теме ссылка первая в гугле - https://wm-school.ru/js/js_if_else.php Далее по отдаче данных. Кто же отдает кашу? Как там что разбирать? Или отдавайте json, ну или на худой конец xml. И для того и для другого во всех языках есть драйвер по работе. У вас же каждый раз при изменении символа в строке придется городить проверки и прочее. Там еще есть вопрос по переменным... Там тебе и "bool res=" и "int res;" Чего только стоит "String sAct = ""; // действие: GET: или SET:" Вы же заранее знаете что там кроме этого ни чего не будет. "char sAcr[4];" - и уже памяти экономим вагон! Но и это изврат: "bool GetSet;" Да и работать с ним куда проще (в плане тиков на операцию). А это... "const int soundPin = 3;" Серьезно? Вы под номер пина выделяете 16 бит? byte - 8 бит. от 0 до 255 вам будет с головой. Но и это тот еще изврат если это постоянная. "#define soundPin 3" - ВСЕ!!! При компиляции машинного кода эта тройка подставится везде. Вы же define вообще обходите стороной... Блин чувак, ты позиционируешь этот код как обучающий ("пример", "настоятельно рекомендую"). Да тебе еще самому обучаться и обучаться.
  2. Если вдруг кто решит заняться некрофилией как я, то BMP085 - https://github.com/adafruit/Adafruit-BMP085-Library/releases/tag/1.0.0 ESP8266 v.2.4.0 - https://github.com/esp8266/Arduino/releases/tag/2.4.0 А то пришлось повозится ) Почему не выкладывать целиком проект со всеми зависимостями? И не могу побороть SPIFFS Error: mkspiffs not found! Arduino IDE 1.8.5 win10. КОмпилируеется, но ни прошивка не заливается, типа esptool not found, ни SPIFFS не загружается... Есть у кого прям готовая arduino ide под это все дело?
  3. Вопросом на вопрос? Не очевидны? Я тебе типы данных привел, а дальше намекнул. Головой подумать не судьба? И даже на про мини это бы не могло работать, ибо компилятор не дурак чтобы тебе беззнаковую переменную скомпилировать как знаковую. Ну и исполняемый код тоже бы ни как не смог поместить число отрицательное в беззнаковую переменную. По минимуму просто было бы смещение.
  4. А при чем тут разрядность? uint8_t output; https://ru.wikipedia.org/wiki/Stdint.h Типы с точной шириной. Не все системы могут поддерживать все эти типы. Тип Описание int8_t 8-битовый со знаком int16_t 16-битовый со знаком int32_t 32-битовый со знаком int64_t 64-битовый со знаком uint8_t 8-битовый без знака uint16_t 16-битовый без знака uint32_t 32-битовый без знака uint64_t 64-битовый без знака Как ты получишь знаковое число в без знаковую переменную?
  5. Рассматривался. Но тут возникла проблема на которую не реагирует даже производитель. Есть ИБП eaton P5 в количестве несколько штук. Так вот еще при USB подключении я словил неприятность - часть ИБП отваливали интерфейсы. Была возможность взять плату расширения (2ethernet) и с ней абсолютна такая же история. Т.е. сам ИБП прекрасно работает, проблем нет, но вот его интерфейс... при чем не все, а часть. По сему сейчас все просто - выключили свет - ждем 5 минут - выключаем все. ИБП умеют при появлении питания дергать POWER на выходах, все железо настроено на Power on, и все включается. В старом здании было очень актуально. В новом всего 2 раза за год выключили питание. За остальное спасибо. Поиском правда пробежался, но... видимо плохо искал )
  6. Спасибо большое автору. Подскажите пожалуйста как сделать график не по 10 минут, а по часу и скажем не на сутки, а на неделю. И еще - небольшая интеграция в мою систему. Начало истории тут http://arduino.ru/forum/proekty/vatchdog-220v-klient-server-win Это детектор 220В. С клиентской частью для отключения ПК после отсутствия электричества определенное время (для тех у кого есть проблема с получением данных из ИБП). Сейчас по случаю решил переделать все это на ESP. Добавлен класс watchdog220 В нем описана функция "инициализации", запроса состояния линии и функция отправки в Broadcast. Из изменений в авторском коде: В ESP8266_WS_V2.0_iT4IT.CLUB-220watchdog.ino объявляем заголовочный файл: #include "watchdog220.h" // 220WatchDog В функции setup() инициализируем наш пин (пин определяется в заголовочном файле. не стал выносить лишнее в авторский код) и тут же добавляем в Cron задание на отправку сообщений раз в секунду: /* Инициализация Wathcdog'а*/ watchdog220.startwatchdog(); /* Добавление в планировщик заданий по проверке 220В на линии и отправке данных на внешнии ресурсы */ cron.add(cron::time_1s, [&](){ watchdog220.send2broarcast(); }); // Отправка данных в Broarcast По идее в кроне была и проверка линии, но... как-то не срасталось. Вынес функцию просто в loop(): watchdog220.acCheck(); Из настроек: #define WATCHDOGPIN D5 - пин на котором висит датчик #define WAITTIME 10000 - время через которое система меняет статус на "отсутствие 220В" (дело в том что частота у нас 50Гц и когда попадешь на полупериод, когда не попадешь...) IPAddress broadcastIp(192, 168, 0, 255); - IP широковещательный (последний адрес в подсети (для привычных 255.255.255.0 - это 255)) int udpPort = 4545; - порт как ни странно ) Лично я схему почерпнул от сюда: http://arduino.ru/forum/apparatnye-voprosy/nuzhno-otslezhivat-nalichie-220-volt-na-linii#comment-237805 Из дополнений к ней (в комменте указано) - цифровой пин на котором будем ловить сигнал надо подтянуть к +3В через резистор (4,7кОм) Тут программа с исходниками: https://www.dropbox.com/s/4741p3jdc3isqfd/win.7z?dl=0 Для данной реализации нужна только клиентская часть. Еще раз автору данной метеостанции большое спасибо! ESP8266_WS_V2.0_iT4IT.CLUB-220watchdog.7z
×
×
  • Создать...