Ответы пользователя по тегу Arduino
  • Отключение устройства при попадании воды?

    Ocelot
    @Ocelot
    12В не считается опасным для человека, но защита лишней не будет. Можно по сигналу с датчика закрывать мосфет в цепи питания. Но под напряжением останется всё до этого мосфета, и есть вероятность, что он откроется снова через утечку на затвор через воду.

    Если хотите упороться по безопасности, поставьте управляемый предохранитель (triggerable fuse, self-control fuse, https://www.eaton.com.cn/cn/en-us/catalog/electron...). В идеале он должен находиться прямо в аккумуляторной сборке.
    Ответ написан
    Комментировать
  • Как выключить ардуино, а потом включить кнопкой?

    Ocelot
    @Ocelot
    Про сон уже написали. Если нужно именно полное отключение - поставить в разрыв питания транзистор, управление им завести на один из пинов ардуины, а параллельно этому пину - кнопку без фиксации.
    Нажимаем кнопку, транзистор открывается, контроллер первым делом подхватывает управление питанием, после отпускания кнопки транзистор остаётся открытым. Когда нужно программно выключиться, просто отключаем пин.

    Если нужно во включённом состоянии следить за нажатиями кнопки, нужно отвязать её от транзистора через диод и завести сигнал непосредственно с кнопки на другой пин.
    620cc840390a7254469197.png
    Ответ написан
    Комментировать
  • Как поменять SDA и SCL местами?

    Ocelot
    @Ocelot
    Ответ в первом приближении: нет, нельзя. Все стандартные библиотеки используют аппаратный i2c, он висит на определённых пинах, которые не переназначаются.

    Более глубокий ответ: если очень хочется, то можно. Ищите библиотеку software i2c. Коммуникация будет жрать больше CPU, зато пины сможете назначить любые.
    Ответ написан
    Комментировать
  • Как можно сделать так чтобы сделать оплату через qr код и отправить данные об облате на ардуино?

    Ocelot
    @Ocelot
    Подключить ардуину к интернету (гуглить Ethernet-shield и WiFi-shield), заставить её ходить на сервер. На сервере крутится биллинг, который принимает сканы qr-кодов от приложения на телефоне, проводит оплату и выдаёт команды на ардуино.
    Ответ написан
    5 комментариев
  • Как исправить ошибку обращения к DHT?

    Ocelot
    @Ocelot
    Внимательно разберитесь здесь:
    DHT11 DHT(DHT11);

    что у вас - имя класса, что - имя экземпляра, а что - константа, которая задефайнена в библиотеке.
    Ответ написан
    Комментировать
  • При попытке объединить два скетчи двух датчиков в один прерывается работа одного из датчиков?

    Ocelot
    @Ocelot
    Возможно, эти датчики используют какие-то общие ресурсы (интерфейсы, таймеры, прерывания). Не видя кода, наверняка сказать сложно.
    Ответ написан
  • Что будет если замкнуть два цифровых порта Arduino на друг-друге?

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

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

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

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

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

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

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

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

    Ocelot
    @Ocelot
    Вам нужно искать микросхемы 'Dot-matrix LCD driver'. Но что-то я сомневаюсь, что получится впихнуться в 15x15 мм без BGA. Один только корпус QFN100 столько занимает, а нужна еще обвязка и место для разводки проводников.
    Ответ написан
    Комментировать
  • Подключение max485 к ардуино?

    Ocelot
    @Ocelot
    Продолжаем ликбез =)
    Скорее всего, вы будете использовать аппаратный USART. Значит, ноги DI и RO нужно подключить к TX и RX соответственно. На картинке у вас они перепутаны - исправьте. Ноги DE/RE отвечают за выбор направления потока, 1=передача, 0=приём. Поскольку в атмеге у USART нет аппаратного контроля потока, то этой ногой придётся дёргать программно. Смело вешайте DE/RE на любой свободный выход, куда удобнее. В момент начала передачи нужно будет поднять этот выход в 1, а после окончания передачи (по прерыванию USART Tx Complete) - сбросить в 0
    Ответ написан
    5 комментариев
  • Подключение датчика к ардуино?

    Ocelot
    @Ocelot
    VCC - на +5В
    GND - соответственно, на землю
    OUTPUT - на любой вход Arduino, и через резистор 10к подтянуть к 5В
    Такой тип выхода называется "открытый коллектор". Когда датчик срабатывает, в нём открывается транзистор и замыкает выход на землю, на ноге контроллера будет лог.0. Всё остальное время через подтяжку поступает напряжение питания, и будет лог.1.
    Ответ написан
    1 комментарий
  • Как передать данные через монитор порта в этот скетч?

    Ocelot
    @Ocelot
    for (i = 0; i < 32; i = i + 1)
    {
    b[i] = Serial.read();
    }
    Direction_of_Motor[0]=b[8];
    Direction_of_Motor[1]=b[11];
    Direction_of_Motor[2]=b[14];
    Movement_of_Motor[0]=b[9]*256;
    Movement_of_Motor[1]=b[12]*256;
    Movement_of_Motor[2]=b[15]*256;
    Movement_of_Motor[0]=Movement_of_Motor[0]+b[10];
    Movement_of_Motor[1]=Movement_of_Motor[1]+b[13];
    Movement_of_Motor[2]=Movement_of_Motor[2]+b[16];
    period=b[30]*256;
    period=period+b[31];


    Принимает 32 байта, нумерация с 0 по 31.
    Байт 8 - направление оси X ('+' или '-'). Байты 9 (старшая часть) и 10 (младшая часть) - перемещение по оси X.
    Байты 11, 12, 13 - то же для оси Y.
    Байты 14, 15, 16 - то же для оси Z.
    Байты 30 (старшая часть) и 31 (младшая часть) - период между шагами. Единица периода == 20 мкс, вроде так.
    Ответ написан
  • Как реализовать разные действия на разные промежутки времени?

    Ocelot
    @Ocelot
    флаг = 0;
    время_старта = 0;
    
    по_таймеру()	// например, каждые 100 мс
    {
    	опросить_считыватель();
    	if (карточка_есть)
    	{
    		if (флаг == 0)	// карточку поднесли
    		{
    			флаг = 1;
    			время_старта = текущее_время();
    		}
    	}
    	else
    	{
    		if (флаг == 1)	// карточку убрали
    		{
    			флаг = 0;
    			if (текущее_время() - время_старта < 5сек)
    			{
    				 делать_одно();
    			}
    			else
    			{
    				 делать_другое();
    			}
    		}
    	}
    }
    Ответ написан
    Комментировать
  • Как распознавать звуки на разной частоте в Arduino?

    Ocelot
    @Ocelot
    Ответ написан
    Комментировать
  • Arduino Радиосеть?

    Ocelot
    @Ocelot
    4) Вы про какую библиотеку говорите? Для RF24 вот есть описание с примерами: nrf24l01.pp.ua/nrf24l01/2-4ghz-rf-biblioteka-rf24
    Но лучше ориентироваться на родные доки, ничего сложного там нет: tmrh20.github.io/RF24/classRF24.html

    3) К сожалению, nrf24l01 не умеет измерять уровень сигнала.

    1, 2) Если нужно уменьшить габариты, возьмите какой-нибудь SoC типа СС2530, где в одном корпусе и проц, и радиочасть. Проблему п.3 это тоже решает.
    Ответ написан
    2 комментария
  • Как посчитать потребляемую мощность сконструированного прибора?

    Ocelot
    @Ocelot
    4. 40 мА - это максимально допустимый ток, который может отдавать выход. В реальных интерфейсах такого тока, конечно, не будет.
    5. Наоборот, потребляемый ток зависит от частоты опроса. Как именно зависит - заранее сказать нельзя. Если в datasheet нет на этот случай графика или формулы для расчета, единственный способ узнать - собрать схему и измерить.
    Ответ написан
    Комментировать
  • Какие комплектующие подойдут для DIY погружного глубиномера?

    Ocelot
    @Ocelot
    >какие датчики посоветуете для измерения давления воды?
    Такие: www.bdsensors.ru/products/sensors.php
    Подберите на нужный вам диапазон давления, и с мембраной из нержавейки (морское исполнение).

    >Способ крепления к корпусу?
    Через втулку с уплотнительными кольцами. Понадобится немного токарных работ.

    >Из чего сделать водонепронецаемый корпус?
    Самое простое - отрезок прозрачной поликарбонатной трубы с заглушками на торцах. В одной заглушке датчик, в другой - контакты для зарядки и подключения к компу (под завинчивающейся крышкой).

    >Или может не ардуино вовсе?
    Для прототипа - можно и ардуино (микро или нано). Если хотите компактное устройство, то лучше развести плату, на которой будет сразу всё: МК, дисплей, усилитель для датчика, контроллер батареи.
    Ответ написан
    1 комментарий
  • Как связать библиотеки adafruit_neopixel и VirtualWire в arduino?

    Ocelot
    @Ocelot
    Переучить VirtualWire на использование Timer2? Учтите, что Timer2 8-разрядный, его может не хватить. В теории, нужно заменить все регистры, относящиеся к таймеру, в функции vw_setup(), заменить обработчик прерывания SIGNAL(TIMER1_COMPA_vect) и поправить функцию _timer_calc(), т.к. для разных таймеров значения предделителя разные.

    Ещё можно поискать другую библиотеку для WS2812. Вот эта, кажется, вообще не использует таймеры, только ассемблерную магию:
    https://github.com/cpldcpu/light_ws2812
    Ответ написан
  • Почему JSN-SR04T не работает дальше 60см?

    Ocelot
    @Ocelot
    Осциллограф в зубы - и смотреть, что происходит на выходе у датчика. Если все сигналы в норме, проблему нужно искать в программной части. Если сам датчик выдаёт что-то не то, значит он сломался.
    Ответ написан
    Комментировать
  • Arduino скетч, с разными адресами датчиков для каждой железки. Как вести разработку для нескольких устройств одновременно?

    Ocelot
    @Ocelot
    1. Избавиться от зашитых в коде адресов. Не всегда это возможно, но здесь скорее да, чем нет. DS18B20 умеет сообщать свой адрес (команды SearchRom / ReadRom). Пусть контроллер считывает после загрузки адреса всех датчиков. Код получится универсальный.

    2. Вынести константы в EEPROM, зашить один раз, при изменении кода EEPROM не перезаписывать. У AVR за это отвечает фьюз EESAVE.
    Ответ написан
    1 комментарий