Задать вопрос
  • UPS автоматическое переключение на аккумуляторе через реле?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Зачем 24 вольта?
    Почему не использовать диоды?
    Их нужно два. Один в цепь БП на плюс анодом к БП, а другой на плюс аккума, анодом к аккуму, катоды диодов соединены с плюсом входа вашего конвертера.
    Конвертер у вас опускает напряжение и падение напряжения на диодах ему не помешают. Там будет полтора-два вольта на них падать. Если диоды шоттки взять, то итого меньше. И никаких реле. У реле есть дребезг при переключении, от этого может случиться сбой по питанию. Такую паузу можно компенсировать большим электролитическим конденсатором по выходу преобразователя. Чем больше ёмкость, тем лучше.
    Ответ написан
    7 комментариев
  • Странные запросы на сервер. Они представляют опасность?

    @Everything_is_bad
    Добро пожаловать в интернеты, это боты, а не люди. Долбят в поисках уязвимостей, достаточно погуглить тему, чтобы понять. Ну и сразу, код, логи и прочие текстовые данные, показывай именно текстом, а не картинкой.
    Ответ написан
    Комментировать
  • Программирование плат Arduino, какой язык лучше использовать?

    @dima20155
    you don't choose c++. It chooses you
    Ваша цель написать программу?
    Берите тот инструмент, что вам удобнее
    Ваша цель освоить какой-то конкретный язык?
    Учите его
    Язык Arduino используется только в тех платах, для которых ядро Arduino портировали. Язык С/С++ используется в embedded электронике повсеместно.

    Язык Arduino упрощённый и немного ограничивает вас, взамен оберегая от сложностей языка С++ и всех его подводных камней
    Ответ написан
    2 комментария
  • Программирование плат Arduino, какой язык лучше использовать?

    @mordo445
    Ардуино это лишь среда разработки и пакет библиотек для упрощения разработки. Но Ардуино не ограничен возможностями библиотеки или среды, она позволяет использовать все инструменты доступные в родительском фреймворке, для Uno/Nano на AMega328 всё что может AVR C++ доступно, и вы можете как писать в стиле Ардуино, используя его встроенные библиотеки, так и использовать чистые функции AVR C++, и даже использовать ассемблер для отдельных операций. Компилятор под капотом тот же самый.
    Научится программировать легче в песочнице Ардуино, главное не забыть потом развиваться за ее пределы. И если цель стать эмбеддером, а не хобби иметь, лучше сразу брать камушки посовременнее и учится с ними. Освоить арду потом будет как раз-два.
    Ответ написан
    Комментировать
  • Как лучше организовать беспроводное подключение между Arduino и блоком кнопок?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    Самое простое - ИК https://kit.alexgyver.ru/tutorials/ir-remote/ есть куда готовых модулей и примеров, также на приемник можно программно прописать сигнады с любого пульта, хоть от ТВ хоть от кофеварки на сколько угодно кнопок. Занимает 1 любой пин - обмен данными в двоичном виде. Потребление - соответственно как и в пульте - живут годами. Минус - нужна прямая видимость, ну или хотя бы отраженная для сильных пультов.
    Посложнее - 433 МГц RF на таком обычно работают всякие люстры и тому подобное, также в разделе diy iot имеется куда готовых модулей, но сдесь уже посложнее и поэнергоемкей, иногда нужно сочинять/дебажить протоколы обмена данными. Зато стрелять можно хоть через стену, а при достаточной мощности передатчика и через улицу.
    Ответ написан
    7 комментариев
  • Как работает метод filter в данном случае?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    RTFM: Array.filter() -> callbackFn

    callbackFn

    Функция-предикат, которая будет вызвана для проверки каждого элемента массива. Если функция возвращает true, то элемент остаётся в массиве, если false, то удаляется.

    0 при конвертации в булево значение приводится к false.
    Ответ написан
    1 комментарий
  • Найдем формулу или скрипт для слияния двух частей строки?

    @dodo512
    Найти: (?i)^(\w*?)(\w+?)(\w*);(\2)$
    Заменить: $1$4$3
    https://regex101.com/r/swTAQs/1
    Ответ написан
    Комментировать
  • Сколько вообще целых и дробных чисел с неповторяющимися цифрами существует?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Давайте прикинем.
    Для дробных чисел, имеющих хоть один значащий разряд перед запятой и один после мы должны выбрать первую цифру из девяти (ноль исключаем), последнюю из восьми (исключаем уже выбранную и ноль), третью из восьми оставшихся, четвёртую из семи и т.д. Кроме того, точка может стоять в одной из n-1 позиций, где n - количество цифр.
    Получаем:
    Чисел из 10 цифр: 9 * 8 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 * 9 = 26'127'360
    Чисел из 9 цифр: 9 * 8 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 8 = 23'224'320
    Чисел из 8 цифр: 9 * 8 * 8 * 7 * 6 * 5 * 4 * 3 * 7 = 10'160'640
    ...
    Чисел из 2 цифр: 9 * 8 * 1 = 72
    Просуммировав, получим 63'130'248
    Добавим сюда числа вида 0.xxx. Поскольку ноль фиксирован, первую цифру после него мы можем выбрать из девяти, вторую из восьми оставшихся и так далее.
    Чисел из 10 цифр: 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 362'880
    Чисел из 9 цифр: 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 = 362'880
    Чисел из 8 цифр: 9 * 8 * 7 * 6 * 5 * 4 * 3 = 181'440
    ...
    Чисел из 2 цифр: 9
    Сумма 986'409
    Теперь возьмём целые числа. В первой позиции не может быть нуля, поэтому первую цифру выбираем из девяти. Вторую из девяти оставшихся, третью из восьми и т.д.
    Чисел из 10 цифр: 9 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 3'265'920
    Чисел из 9 цифр: 9 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 = 3'265'920
    Чисел из 8 цифр: 9 * 9 * 8 * 7 * 6 * 5 * 4 * 3 = 1'632'960
    ...
    Чисел из 2 цифр: 9 * 9 = 81
    Чисел из 1 цифры: 9
    Сумма 8'877'690
    Сложим всё, добавив ноль, получим 72'994'348.
    Ответ написан
    5 комментариев
  • Почему не появляется QR-код при введении формулы?

    Geleoss
    @Geleoss
    Любитель таблиц
    QR-cервис гугла отключен.

    Используйте любой сторонний сервис. Например, quickchart.io.
    Документация по формированию запроса.

    =IMAGE("https://quickchart.io/qr?text="&A1&"&size=500x500")
    Ответ написан
    Комментировать
  • Как отсортировать столбец, но не всего значения ячейки, а его части?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Скорее всего вы ищите такую формулу

    =TOCOL(SORT(A3:A;MOD(A3:A;1000);1);1)

    6637421b2017b063381569.png

    Дополнительно

    Положим, что нужно сортировать и по лидирующим числам

    Есть порядок

    29350, 28350, 28350, 27350

    Требуется

    27350, 28350, 28350, 29350

    Тогда формула будет, где вторая пара аргументов SORT A3:A;1

    =TOCOL(SORT(A3:A;MOD(A3:A;1000);1;A3:A;1);1)

    66374936451f0997947249.png

    Примеры в Таблице тут https://docs.google.com/spreadsheets/d/193Dbro4_sH... и тут https://docs.google.com/spreadsheets/d/193Dbro4_sH...
    Ответ написан
    6 комментариев
  • Three.js объект сзади не виден при повороте к нему лицом?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Без полноценого примера в песочнице это будет гадание на кофейной гуще, но что видно сейчас - для такой простой сцены у вас используется очень много вещей, которые потенциально могут что-то сделать c видимостью объектов. Обычно мы их используем для очень опасных оптимизаций, когда нужно все сделать нестандартным образом, где-то что-то сломать, но за счет этого что-то другое выиграть. Тут такие оптимизации явно преждевременны. Стоит пройтись по ним и убрать все. Если сцена будет работать, то потом можно будет вернуть назад по очереди, наблюдая за происходящим.

    Параметры depthWrite у материала и sortObjects у рендерера - первые кандидаты на то, чтобы их убрать. И определенно стоит вместо BoxGeometry нулевой толщины взять PlaneGeometry. Нулевая толщина тоже может давать разные сложности, с определением видимости в том числе.
    Ответ написан
    3 комментария
  • Как передавать данные при добавлении новой записи?

    aekozhevnikov
    @aekozhevnikov
    hungryking
    Для автоматической отправки данных в Telegram при добавлении новых записей в Google Таблицу можно использовать триггер onFormSubmit, если данные добавляются через Google Формы, или триггер onChange для отслеживания любых изменений в таблице, включая добавление строк.
    Ответ написан
    Комментировать
  • Как добавить класс js?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Используйте всплытие событий. Вешайте обработчик на постоянно присутствующий родительский элемент.
    Ответ написан
    2 комментария
  • Как синхронизировать данные построчно?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Положим, что в Таблице 1 у вас есть колонка с уникальными значениями. Если нет, то придется сделать.
    Тогда в Таблице 2 вам нужно сделать колоку, куда вы будете вносить тоже самое значение из Таблицы 1. Это можно сделать как раз через IMPORTRANGE и выпадающие списки.
    Теперь в Таблице 2 напротив ключа вы можете вводить свои данные, а данные из Таблицы 1 подтягивать через VLOOKUP.
    Ответ написан
    Комментировать
  • В чем преимущество полевого транзистора перед биполярным, простыми словами?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    Ну, это совсем просто. Чтобы держать биполярный ключ открытым, надо ему в базу загонять ток, всё время. Т.е. непрерывно тратить энергию, поскольку там есть замкнутая цепь для электрического тока (открытый эмиттерно-базовый PN-переход).
    С полевым ключом принципиально не так. Управляющая цепь затвора - не замкнутая, поскольку между затвором и каналом есть изолирующая прослойка. Поэтому там ток не течёт, для открытия ключа достаточно подать напряжение, для закрытия - снять его. Электроэнергия на это практически не тратится (если не считать первый момент, когда заряжается затворная ёмкость). Вот и первое преимущество - экономичность в управлении.
    Второе преимущество полевика - малое проходное сопротивление (единицы миллиом, много меньше, чем у биполярного, и в некоторых случаях даже меньше, чем у замкнутых контактов). Причём чем больше управляющее напряжение на затворе, тем проходное сопротивление меньше, соответственно и меньше нагрев полевика проходящим током. Однако не надо впадать в фанатизм на этом пути - если Uупр превысит значение 15 вольт, то изоляция затвора может быть пробита, и полевой ключ (такой удобный и простой в применении) превратится в тыкву.
    Есть и другие отличия, которые проявляются только на высоких частотах.
    Ответ написан
    5 комментариев
  • Как на ESP32 сделать выходное напряжение с диапазоном 0-15V с как можно более минимальным шагом при управлении?

    @pfg21
    ex-турист
    если тебе не нужна большая мощность на выходе, то лучше используй обычный выход ЦАП и аналоговый усилитель на 15 вольт.
    какаянить стандартная микросхемка усилителя мощности звука вполне пару ампер на выходе даст.
    плюс элементарная и понятная схема, отлично работает, настройки практически не требует. минус КПД и грется будет конечно. но зависит от потребления.

    dc-dc это если тебе нужная большая мощность на выходе.
    если схема стандартна, то в ООС просто добавить компаратор.
    на плюсовой вход резистивный делитель от выхода чтобы преобразовывать 0-15 в рабочий диапазон ЦАП.
    на минус выход ЦАП.
    а выход компаратора подать вход ООС при превышении напряжения на выходе компаратор включится и остановит работу ШИМ.
    изменения в блоке питания будут минимальны.
    Ответ написан
    Комментировать
  • Можно ли ускорить копирование данных из одних столбцов в другие в Google таблицах?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Не задавайте вопросы без примера!


    Зачем вы делаете все те манипуляции - не понятно. Это последствия Excel?

    Занимает доли секунды

    /* exported userActionCopyValues */
    function userActionCopyValues() {
      copyValues_('rg');
    }
    
    function copyValues_(e) {
      const sheet = SpreadsheetApp.getActive().getSheetByName('Ускорить работу скрипта');
      const dataRange = sheet.getDataRange();
      const values = dataRange.getValues();
    
      const lastValKMNOV = values.findLast((row) => row[11] === e);
    
      if (!lastValKMNOV) {
        console.warn(`lastValKMNOV ${lastValKMNOV}`);
        return;
      }
    
      const lastIndexBF = values.findLastIndex((row) => row.slice(1, 1 + 5).join(''));
    
      if (lastIndexBF === -1) {
        console.warn(`lastIndexBF ${lastIndexBF}`);
        return;
      }
    
      sheet
        .getRange(lastIndexBF + 2, 2, 1, 5)
        .setValues([[lastValKMNOV[10], lastValKMNOV[11], lastValKMNOV[12], lastValKMNOV[13], lastValKMNOV[21]]]);
    }


    65fbc8ba1bbea534262777.png

    Пример в Таблице https://docs.google.com/spreadsheets/d/1KN2SuXbHN5...
    Ответ написан
    Комментировать
  • Есть ли задача на распределенные вычисления, которую легко проверить?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Берете любую NP-complete задачу: https://en.m.wikipedia.org/wiki/List_of_NP-complet...

    Все их сложно решить и легко проверить ответ.
    Ответ написан
    Комментировать
  • Как создать гиперссылку с изменяемыми данными в Google Sheets?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Используйте Name box [CTRL]+[J]

    65f14a0f6a13e500880455.gif

    С помощью скрипта

    Вот пример того, как это может быть

    65f14565d17e2157459805.gif

    На картинке
    1. Пользователь вводт в A1 имя любого листа
    2. Если такое имя есть в книге, то активируется этот лист


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

    Пример в Таблице https://docs.google.com/spreadsheets/d/1Kh0_NeLS1v...
    Ответ написан
    4 комментария