• Как преобразовать 4 битный код Грея в двоичный в Arduino?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    A = S0;
    B = A^S1;
    C = B^S2;
    D = C^S3;
    Ответ написан
    6 комментариев
  • Как не откладывать обработку прерывания в долгий ящик?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Если я в коде по прерыванию отключаю обработку этого самого прерывания, например на пару секунд, то прерывание действительно не будет обрабатываться эти две секунды, но если оно было, то будет обработано сразу же после следующего подключения прерывания.

    Это описание верно только для прерывания срабатывающего по фронту сигнала. Прерывание срабатывающее по уровню сигнала нигде не запоминается. Вне зависимости от того, было ли оно запрошено в то время, пока оно было запрещено, если оно не запрошено в момент разрешения прерывания -- прерывания не случится.

    Верно ли я понимаю, что микроконтроллер запоминает факт прерывания

    Верно для прерываний срабатывающих по фронту. Неверно для прерываний срабатывающих по уровню.

    не может этот флаг скинуть, пока как раз таки я снова не подключу прерывание и он тут же радостно мне его передает?

    Неверно в общем случае. Флаги запроса прерывания могут быть доступны через регистры, иногда эти регистры можно программно очищать.

    Возможно ли как-то переопределить данное поведение?

    У некоторых прерываний можно настроить, срабатывают они по уровню или по фронту. Например, у Atmel можно настроить как детектируются внешние прерывания INT0 и INT1 -- регистром EICRA.

    Или скинуть каким-то другим способом этот флаг?

    Опять же, на Atmel флаги внешних прерываний лежат в R/W регистре EIFR, в нужные биты которого можно записать 0, чтобы очистить запомненный запрос прерывания.
    Ответ написан
    2 комментария
  • Стоит ли идти в институт, если хочешь стать программистом микроконтроллеров или лучше только самообразование?

    @kemanoriel
    Если именно программистом микроконтроллеров, то высшее образование необходимо из-за некоторого количества нюансов, которые нужно знать при разработке и которые трудно изучить самостоятельно (электротехника, электроника, длинные линии, экранирование, теория надежности и т.д.).
    А выбор факультета зависит от Вас. Выбрать стоит самый лучший, куда сможете поступить и который связан с этой тематикой. И на протяжении всей учёбы делать свои проекты и как можно раньше попытаться устроиться на стажировку в крупную компанию.
    Ответ написан
    2 комментария
  • Какой транзистор взять для ключа?

    @evgeniy_lm
    1. всё-таки кто лучше для этих целей, полевик или биполярный

    Без разницы, они работают в ключевом режиме

    2. как выбрать подходящий полевик

    Как обычно. Напряжение коллектор-эмиттер (сток-исток) и ток коллектора (стока) в 1,5-2 раза выше напряжения тока нагрузки.

    3. какая у него должна быть обвязка (в частности, нужно ли ставить резистор на затвор между ним и ардуинкой)

    Для полевика не нужно ни какой обвязки, ток затвора микроскопический, но на случай пробоя транзистора стоит поставить токоограничивающий резистор из расчета максимального тока <35мА (>500Ом)
    Ответ написан
    Комментировать
  • Какой транзистор взять для ключа?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    И, пока что, остаётся открытым первый вопрос
    Ответ на него элементарен - полевик лучше, поскольку его применение проще. В его обвязке нужен всего один резистор (да и тот не обязателен), и для управления требуется минимум энергии. Если биполярнику нужен существенный ток базы, из-за чего зачастую приходится городить составные транзисторы, то полевику этот ток вообще никакой - ему требуется только открывающее напряжение на полвольта-вольт выше порогового. И всё. Единственная сложность - не допустить случайного пробоя затвора статикой при монтаже.
    напряжение в районе 15-18В, ток не более 30мА
    Второе преимущество полевика - универсальность. Не надо ломать голову над его типом - годится любой, только правильно выберите тип канала, P или N. И не отвлекайтесь на большие цифры, 40 вольт и 100 ампер - он прекрасно скоммутирует ваши 30 мА при 18 вольтах.
    Третье преимущество полевика - лучшие ключевые свойства. Попробуйте получить от открытого ключа на биполярнике проходное сопротивление несколько миллиом - не получится. А на полевике - легко.
    Ответ написан
    Комментировать
  • Как модуль находит wifi?

    @Fixid
    Если очень упрощенно с кучей допущений.
    Модуль знает протокол связи
    1 вариант:
    Говоришь модулю найти все сети, он начинает слушать эфир и отдает список доступных сетей
    2 вариант:
    Говоришь модулю подключиться к определенной сети, вот ее имя и пароль. Модуль начинает орать в пространство и звать сеть по имени пока она не откликнется, если откликнулась то говорит пароль и т.д.

    У каждого модуля есть свой протокол общения, например он может быть связан с arduino через com порт. Arduino через порт загружает команду, в ответ получает данные.
    Например:
    connect <имя сети> <пароль> - запрос соединения
    ok - ответ модуля что соединение создано
    Ответ написан
    3 комментария
  • Как убрать плавающую точку в значении температуры с датчика в Ардуино?

    @kalapanga
    Бред и про sprintf() и про String.
    А нужно скорее всего просто
    Serial.println(1.23456, 0) выводит "1"
    0 - число выводимых знаков после запятой.
    Ответ написан
    2 комментария
  • Нужно подключить к Arduino датчики на определенном расстоянии, какой кабель использовать и какова максимальная длина?

    Stalker_RED
    @Stalker_RED
    i2c разрабатывался как шина для использования внутри устройства.
    Ограничения по длине в спецификации не прописаны, но есть ограничение по паразитной емкости. При 170pF падает скорость, при 400pF - все.
    На практике, некоторые модули могут работать и с большей емкостью, но это лотерея и эксперименты.

    Учитывайте также, что неэкранированная лапша, а тем более не витая, может очень круто ловить помехи, рождая "необъяснимые" глюки.

    1-Wire поддерживает гораздо больше длину, 500 метров - не предел.
    https://www.maximintegrated.com/en/app-notes/index...

    Или старый добрый RS485
    Ответ написан
    4 комментария
  • Создание smart cast из arduino и доп модулей?

    @Fixid
    Мощей не хватит. Купите Miracast и не парьтесь. Тут нужен как минимум нормальный ARM, по типу raspberry/orange pi.
    Я понимаю ваше желание все сделать умным, но для начала изучите аналогичный опыт и 90% вопросов отпадет
    Ответ написан
    6 комментариев
  • Как сделать плавное изменение яркости ШИМ?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    хочется чтобы лента плавно изменяла яркость

    для этого нужно менять скважность ШИМ не один раз скачком от текущего значения к целевому, а постепенно, за несколько шагов. С постоянной скоростью -- примерно так:
    void set_pwm_smooth(int new_pwm)
    {
        static const int pwm_step = ...; // шаг изменения ШИМ
        static const int pwm_step_time = ...; // время одного шага изменения ШИМ
        static int old_pwm;
        int pwm = old_pwm;
    
        while (pwm != new_pwm) {
            int next_pwm = pwm + (pwm < new_pwm ? pwm_step : -pwm_step);
            if ((pwm < new_pwm && next_pwm > new_pwm) ||
                (pwm > new_pwm && next_pwm < new_pwm))
                pwm = new_pwm;
            else
                pwm = next_pwm;
            analogWrite(LEDPIN, pwm);
            delay(pwm_step_time);
        }
        old_pwm = new_pwm;
    }
    Ответ написан
  • Как подключить аккумулятор к мини пк, чтобы отображался индикатор заряда в трее?

    NeiroNx
    @NeiroNx
    Программист
    https://habr.com/post/233391/ вот чувак пришол к решению что проще взять то что есть в продаже,
    но гугли USB HID power device class и делай свой велосипед.
    Ответ написан
    Комментировать
  • Что будет если замкнуть два цифровых порта Arduino на друг-друге?

    Ocelot
    @Ocelot
    Если упрощенно, цифровой порт - это два ключа: один ("верхний") замыкает пин на 5V, второй ("нижний") - на землю. Если открыт верхний ключ, на порт выводится 1, если нижний, то 0. Закрыты оба ключа - порт работает как вход, т.н. Z-состояние.

    Что будет если замкнуть два цифровых порта на друг-друге?
    Если на один порт вывести 1, а на второй 0, будет короткое замыкание через верхний ключ первого порта и нижний ключ второго.

    Возможны ли исключения?
    Да, если вы гарантируете, что состояния портов всегда будут одинаковыми (00 или 11), ничего не сгорит.

    А если только один на выход с высоким сигналом, а второй на вход?
    Всё ок, вход прочитает единицу, ничего не сгорит.

    А если оба на выход высокого сигнала?
    Как уже было сказано, кз не будет. Но переключать оба порта нужно строго одновременно, за один такт.

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

    Можно ли соединять пин 5V и читающий цифровой пин?
    Можно ли соединять землю и читающий цифровой пин?
    В обоих случаях можно. Но если случайно переключить пин на выход, будет кз. Поэтому замыкать входы на питание и на землю лучше не напрямую, а через резистор.

    Можно ли соединять пин земли и 5V?
    Будет короткое замыкание источника 5V. Ну хотя бы контроллер от этого не сгорит =)
    Ответ написан
    Комментировать
  • Можно ли ESP8266 научить скачивать прошивку из интернета?

    Сталкивался )
    Вот тут описан процесс не плохо, но нужно разбираться

    https://www.bakke.online/index.php/2017/06/02/self...

    Если что - спрашивай )
    Ответ написан
    Комментировать
  • Какой максимальный ток способна выдавать Arduino UNO R3 на цифровых и аналоговых пинах?

    Fox_Alex
    @Fox_Alex
    Инженер электронщик
    По напряжению пины могут выдать только 0 или напряжение питания, в данном случае 5В. По току это 20мА на каждый пин, но с ограничением 200мА на весь чип. Максимально допустимый ток на один пин вроде бы 40мА, но его превышение может повредить контроллер. Точные значения ищи в даташите, с AVR я уже давно не работал и могу ошибаться.

    В реальной жизни АВРы довольно живучие и пожечь порты им трудно, так что в экспериментах можно значения немного превышать, но в готовом изделии за всем этим надо хорошо следить, долговременная работа с перегрузкой в конечном итоге может испортить контроллер.
    Ответ написан
    2 комментария
  • Что обозначают надписи у пинов? Как они расшифровываются?

    Ezhyg
    @Ezhyg
    5bcdb8567def2973350355.png5bcdb85e42251706251178.png5bcdb866d6771315270604.png
    Ответ написан
    Комментировать
  • В каком софте можно потренироваться в работе с stm32?

    @Sterling_Archer
    Это все рукоблудие, а вот - отличная отладочная плата за смешные деньги, с stlink2 в комплекте (отдельный, а не отрезной как на родном нуклео), плюс cp2102 на борту, можно с UART работать, и с двумя кварцами (8 мгц и часовой).
    Ответ написан
    Комментировать
  • Не работает Arduino IDE на UBUNTU?

    @hx510b
    "Я знаю, что ничего не знаю"
    У меня нормально работает под Linux mint (по сути тоже Ubuntu).
    SELinux выключен?
    Надо убедиться, что в меню tools выбраны правильный тип платы и правильный порт.
    Иначе точно работать не будет.
    Можно попробовать добавить текущего пользователя в группы dialout и plugdev,
    sudo usermod -a -G dialout <username>
    (измененное членство в группе применяется при следующей авторизации в системе или новой сессии пользователя - т.е. надо перелогиниться)
    либо руками проставить права доступа к устройству для всех.
    Ответ написан
    Комментировать
  • Как постоянно иметь доступ к ttyUSB0?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    Добавьте своего юзера в группу dialout
    usermod -a -G dialout YOU_USER
    Или в UDEV задать правило на создание устройств с нужными правами, к примеру -
    sudo vim /etc/udev/rules.d/50-ttyusb.rules
    KERNEL=="ttyUSB[0-9]*",MODE="0666"
    KERNEL=="ttyACM[0-9]*",MODE="0666"
    Ответ написан
    1 комментарий