• Как из аналогового сигнала получить вольты?

    На ардуино есть отличная функция map и на англ., для преобразования диапазонов.
    spoiler

    _______________________
    Математически функция map() может быть записана так:
    
    long map(long x, long in_min, long in_max, long out_min, long out_max)
    {
      return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
    }
    //а если заменить long на float или double, то она будет работать с плавающей точкой
    //и соответственно изменить имя функции, что бы оно не пересекалось с родной библиотекой ардуины

    _______________________

    Если считать в милливольтах, т.е.
    y = map(x, 0, 1023, 0, 5000), т.е. 1023 - соответствует 5000 мВ, т.е. 5 В.

    Если надо можно сделать на ее основе свою, но переваривающую плавающие точки. Только помните, что плавающие точки считать немного дольше, чем целые числа.
    Ответ написан
    Комментировать
  • Как запитать периферию для ардуинки?

    @VT100
    Embedded hardware & software.
    Мне нужен вот такой повышающий преобразователь?

    Если на входе питания Iskra уже 5 В, то этот преобразователь - лишний.
    Да и описание его (диапазон входных напряжений и токов нагрузки) - не блещет полнотой.
    Почему существует вот такой преобразователь уровней 5V-3.3V UART? ..... На искре все пины кроме как раз питания толерантны к 5В исходя из описания.

    В данном случае, возможная проблема - в другом месте. "5 V tolerant" вход Rx Iskra будет нормально работать с 5 В выходом Tx Nextion. А вот работу входа Rx Nextion от 3 В выхода Tx Iskra - надо проверять. Желательно - формально, выполнением условия Voh Iskra (выходное напряжение высокого уровня) > Vih Nextion (входное напряжение высокого уровня). Если условие не выполняется (или на практике есть сбои при обмене данными) - поставить преобразователь уровней.
    Ответ написан
    3 комментария
  • После закрытия скомпилированной программы появляется ошибка Debug Assertion Failed?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как исправить?

    Прочитать сообщение об ошибке для начала. Понять, что оно говорит о том, что поломана куча. Силой мысли найти место в программе которое её ломает. Если силой мысли не получается, то скомпилировать программу с какими-нибудь полезными отладочными опциями, запустить и проанализировать вывод. Для gcc это была бы опция -fsanitize=address, что у M$ для этого есть я не знаю.
    Ответ написан
    1 комментарий
  • Переменная rèturn и прочие зарезервированные слова, норм?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Думаю, что в любой нормальной команде за это могут избить.
    Ответ написан
    3 комментария
  • Идеи для передачи серверного ключа для шифрования на клиент?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Самый надежный метод - не передавать ключ на клиент, и он реален:

    Следует использовать надежную и проверенную схему установления доверенного канала - схему Диффи-Хеллмана или аналог.
    Ответ написан
    1 комментарий
  • Как установить переменную $? в си программе?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $? - это статус завершения последней программы.
    В C соответствует значению, возвращаемому функцией main. Нормальное завершение программы должно возвращать 0, каждая ошибка обычно соответствует своему коду.
    Ответ написан
    Комментировать
  • Какое портативное устройство на 220в лучше всех (не хуже балона со сжатым воздухом) чистит пыль из ПК?

    Kalombyr
    @Kalombyr
    Обычный автомобильный компрессор (но тут с 220 Вольтами проблема, но есть повербанки) и рессивер на 5-10 литров на 10 Бар (есть обычные компрессоры с такими рессиверами, но по размеру они шибко уж больше). И стоит иметь ввиду время накачки, т.к. "размером не больше фена" не получится накачать быстро большое давление.
    Можете обычный баллон со сжатым воздухом сделать перезаправляемым - достаточно просто.
    Ответ написан
    4 комментария
  • Возможно ли меня рассекретить?

    @Korben5E
    Как все сложно.... :-)
    Тебя вычислят по уровню недовольства и объему знаний ситуации. ;-)
    Ответ написан
    Комментировать
  • Возможно ли меня рассекретить?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Ага, вот ты и попался!
    Ответ написан
    Комментировать
  • Как в одночасье перестать любить и заниматься электроникой?

    @lonelymyp
    Хочу вылезти из минуса по карме.
    В 67 уже пора перестать быть тряпкой. Будь мужиком и поступай как хочешь.
    Ответ написан
    Комментировать
  • Где можно найти информацию об архитектуре аппаратных строений?

    Например
    Цифровая схемотехника и архитектура компьютера
    второе издание
    Дэвид М. Харрис и Сара Л. Харрис
    Там все это есть.
    Ответ написан
    Комментировать
  • Через какое устройство интернет сильнее и стабильней?

    @antonwx
    Роутер плюс модем это довольно стандартная и широко используемая комбинация. Берите её. Совет: роутер берите нормальный - микротик или кинетик; на модеме тоже не экономьте и берите с выводом под внешнюю антенну - её тоже сразу покупайте и на крышу монтируйте.
    Ответ написан
    Комментировать
  • Как выбрать тему для статьи на Хабр, которую будут читать?

    pragmatik
    @pragmatik Куратор тега Хабр
    Неправильно ты, Дядя Фёдор, бутерброд ешь...
    Нужно писать про то в чем хорошо разбираешься. Потому что, если ты будешь писать про то, в чем ты не разбираешься, на сайтах вроде Хабра, где есть система дизлайков, то ничего хорошего тебе это не принесет.
    Ответ написан
    2 комментария
  • Как быстро проверить, является ли некоторое огромное число (от 100 знаков) квадратом целого числа?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Можно попробовать вычислить корень быстрым алгоритмом. Но там сложно. Гуглите Karatsuba square root. Есть открытые реализации. Есть еще какой-то адский метод через быстрое преобразование Фурье, попробуйте погуглить и его.

    Более простой в реализации, но менее быстрый метод вычисления корня - бинарный поиск. Храните l, r, l^2, r^2 и lr. По этим числам можно вычислить m=(l+r)/2, m^2, m*l, m*r без длинных умножений, а только складывая длинные числа и деля на 2. Вам надо поддерживать, чтобы l^2 <= n <= r^2. Изначально можно сделать l=1, r=10^51 (или больше - половина длины входного числа + немного, чтобы точно квадрат был больше n), потом делить отрезок пополам и отбрасывать ненужную половину.

    Еще есть вероятностный метод через символ Лежандра/Якоби. Это будет самым быстрым методом.

    Это как смотреть на последнюю цифру. Квадраты могут давать там 0, 1, 4, 9, 6, 5. Но нет ни одного квадрата, который оканчивался бы на 2. Т.е. если число заканчивается на 2, то можно сразу говорить, что это не квадрат. Это мы взяли остаток от деления на 10 (последняя цифра) и посмотрели, какие из них хорошие. Вот символ Лежандра - это такая проверка для модуля по любому простому числу (а не 10).

    Если брать некоторое простое число p, то n может быть квадратом, только если символ Лежандра (n/p) - равен 1 или 0 (По научному: n - должно быть квадратичным вычетом).

    Если брать небольшие (<64-битные) простые числа, то можно за линию считать n%p и потом вычислять символ Лежандра (n%p/p) по алгоритму через символ Якоби за O(log(p)^2). Когда подсчитали символ Лежандра и если он -1, то n - точно не корень.

    Тут проблема в том, что это необходимый, но недостаточный критерий - если для какого-то p вы получили -1 - то это точно не квадрат. Но возможно можно подобрать такое число, что все ваши тесты дадут 1, а оно не квадрат. Поэтому надо брать много простых чисел. Скажем, 20. Желательно еще числа брать достаточно большими. Но их не надо искать каждый раз, можно захардкодить. Грубая прикидка говорит, что вероятность ошибки такого алгоритма 2^(-количество простых чисел).

    Т.е. берете много простых чисел. Считаете для каждого n%p выполняя деление большого числа на короткое (один проход по массиву цифр). Потом считаете символ Лежандра. Если получили где-то -1 - то точно не квадрат. Иначе - скорее всего квадрат.

    Можно совместить вероятностный тест и вычисление корня. Сначала проверьте парочку простых чисел на символ Лежандра для отсечения точно не квадратов. Еще проверку последней цифры можно сделать, это очень дешево. Если не отсеклись, то считайте корень. Так будет всегда работать правильно но будет быстрее работать в некоторых случаях.
    Ответ написан
    Комментировать
  • В какой хаб мне писать статью с отрицательной кармой и рейтингом?

    pragmatik
    @pragmatik Куратор тега Хабр
    У вас 3 публикации с оценками: минус 20, минус 23 и минус 18. Возможно, пришло время проанализировать эту ситуацию и сделать выводы. Если выводы окажутся в пользу продолжения публикационной активности, то:
    Во-первых, есть режим «Recovery Mode», дающий возможность пользователям с отрицательной кармой (до −30 включительно) раз в неделю опубликовать статью в любой профильный хаб. Но вам это не подходит, поскольку ваш текущий показатель кармы – минус 34.
    Во-вторых, каждому пользователю, не находящемуся под санкциями за нарушение правил сообщества, предоставляется возможность один раз за всё время пребывания на сайте «обнулить» карму, воспользовавшись кнопкой «Reset» в интерфейсе его профиля. В вашем случае - по адресу https://habr.com/ru/users/gremlin92/reset/
    Ответ написан
    Комментировать
  • Как связать одну ардуино uno с множеством ардуино nano?

    Подключить можно. Если без проводов, значит нужны радиомодули. Можно самые дешевые на 433МГц, можно популярные nrf24l01, можно дальнобойные lora. В любом случае выбирается модуль по характеристикам, таким как скорость передачи, частота, дистанция, количество занимаемых ног контроллера и т.д. Далее смотри как работать с выбранным модулем.
    Ответ написан
    3 комментария
  • Стоит ли начинать изучение программирования в 13 - 14 лет?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Те, кому действительно стоит изучать программирование, этим вопросом не задаются, они просто начинают изучать, как только им становится интересно.
    Ответ написан
    3 комментария
  • Почему 2 раза используется команда "push ax"?

    Vindicar
    @Vindicar
    RTFM!
    Обрати внимание, что двум вызовам push ax соответствуют два вызова pop ax.
    Push сохраняет регистр на стеке, смещая вершину стека. Pop выталкивает значение с вершины стека в регистр и смещает вершину назад. Поэтому паттерн push-use-pop встречается довольно часто, если нам нужен регистр, но мы не хотим терять его предыдущее значение.
    В твоем случае этот паттерн встретился дважды, один внутри другого. Внешний сохраняет регистр при входе в подпрограмму, и восстанавливает при выходе (чтобы поменьше мешать вызывающей подпрограмме). Внутренний - сохраняет регистр AX перед пересылкой, так как мы не можем напрямую писать в ES, только через другой регистр.
    Ответ написан
    Комментировать