Arduino. Изучаем вместе

Всё о ЧПУ (CNC). Компоненты, станки, программы.
Аватара пользователя
е_Вячеслав

Arduino. Изучаем вместе

Сообщение #81 е_Вячеслав » 17 май 2018, 04:14

Akondr писал(а):Источник цитаты Выходит резисторы не нужны...

Сопротивление светодиода 2В/10мА = 200 ом, при включении без резисторов через него пойдет ток 5В/200 ом = 25 мА, если этот ток не превышает максимально допустимый, то только в этом случае резисторы не нужны. Точнее, можно их не ставить и светодиоды не сгорят, но срок службы их значительно уменьшится!!! Поэтому лучше ставить, чтоб они светились при рабочем токе.

Аватара пользователя
Cyx

Arduino. Изучаем вместе

Сообщение #82 Cyx » 17 май 2018, 06:37

Сообщение не по теме
Dr2-08ac-ny41
Кто то встречал этого зверька больше, чем на торговых досках?
Свернуть

Аватара пользователя
Автор темы
KimIV

Arduino. Изучаем вместе

Сообщение #83 KimIV » 17 май 2018, 10:06

Изучение функции map().

При просмотре видео на канале Заметки Ардуинщика я обратил внимание на то, что АлексГайвер для преобразования численных диапазонов использует функцию map(). Он там в видео баловался сервомашинкой и я подумал, что эта функция инклудится библиотекой Servo. Но оказалось, нет. Эта функция штатно присутствует в среде разработки как любая другая математическая функция. И мне захотелось подробнее "пощупать" эту функцию. Для этого я из кода предыдущего скетча выкинул всё лишнее, оставив только чтение значения аналогового вывода А0. А также раскомментировал строки вывода инфы в монитор порта для просмотра значений после их обработки функцией map(). Вот исходный код скетча

Код: Выделить всё

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  int val = analogRead(A0);
  val = map(val, 0, 1023, 0, 75);

  Serial.print("val=");
  Serial.println(val, DEC);

  delay(300);
}


О том, какие параметры может принимать функция map(), можно почитать здесь. Первоначально я обозначил численный диапазон, из которого преобразовывать, от 0 до 1023. Именно эти значения считываются с аналогового вывода А0 и этот диапазон будет оставаться неизменным в нашей серии экспериментов. А вот диапазон, в который преобразовывать, будем менять и первоначально я его установил от 0 до 75. Вы это можете видеть в коде скетча. А вот, что выдал монитор порта при вращении ручки потенциометра от минимального значения до максимального (от крайнего левого положения до крайнего правого). Тут должен заметить, что схема подключения потенциометра осталась прежней от предыдущей схемы.

Arduino. Изучаем вместе - 022_1.png


Всё получилось вполне предсказуемо. В мониторе значения изменилось от 0 до 75. Далее в функции map() меняем диапазон от -75 до 75.

Код: Выделить всё

val = map(val, 0, 1023, -75, 75);


В мониторе при том же вращении потенциометра слева направо я ожидал увидеть изменение значения от -75 до 75. Но сюрприз!

Arduino. Изучаем вместе - 022_2.png


Оказалось, что функция map() отрицательные области переворачивает, то есть для неё отрицательные числа БОЛЬШЕ положительных. И для того, чтобы функция map() выдавала значения от минуса до плюса, диапазон нужно указывать следующим образом.

Код: Выделить всё

val = map(val, 0, 1023, 75, -75);


Вот теперь при вращении ручки слева направо и при изменении входного значения от 0 до 1023 на выходе функция map() выдаёт значения от -75 до 75.

Arduino. Изучаем вместе - 022_3.png
Вложения
KimIV_map_Learning.zip
Исходный код скетча
(337 байт) 37 скачиваний
Ты должен делать добро из зла, потому что его больше не из чего делать. Уоренн Роберт Пенн.

Аватара пользователя
РЕКЛАМА

Arduino. Изучаем вместе

Сообщение #84 РЕКЛАМА » 09 июл 2018, 11:01

Задумал я логику на ардуино для своих складных ворот забацать.
Прислали китайцы комплект брелков с приемником, четырехканальный.
Управление хочу одной кнопкой 4 режима по кругу ( стоп-закрыть-стоп-открыть), это вроде заработало.
Но теперь надо подвесить концевик (один) что-бы по его сработке второй режим переключался на третий, а четвёртый переключался на первый.
И была возможность кнопкой переключить его на следующий режим.

т.е. ворота открываются-сработал концевик-мотор остановился-ждем нажатия на кнопку-кнопка нажата-ворота закрываются-концевик сработал-мотор остановился-ждем нажатия на кнопку....

Как проще и логичнее это сделать, сижу туплю ничего не получается.

недоскетч:

► Показать

Аватара пользователя
Автор темы
KimIV

Arduino. Изучаем вместе

Сообщение #85 KimIV » 09 июл 2018, 11:16

РЕКЛАМА, Андрей, да вроде ведь всё просто. Опрос кнопки и переключение режимов ты уже описал в скетче. Аналогично описывай опрос концевиков и переключение режима при их сработке.

ЗЫ. Код помещай лучше к тэг [code]. Там отступы соблюдаются и шрифт применяется равноширинный.
Ты должен делать добро из зла, потому что его больше не из чего делать. Уоренн Роберт Пенн.

Аватара пользователя
РЕКЛАМА

Arduino. Изучаем вместе

Сообщение #86 РЕКЛАМА » 09 июл 2018, 11:39

Видимо я что-то делаю не так, или не понимаю до конца принцип.
Я учился бейсику, там номера строк есть, и можно туда-сюда по программе мотаться, а тут только по кругу...

Аватара пользователя
Автор темы
KimIV

Arduino. Изучаем вместе

Сообщение #87 KimIV » 09 июл 2018, 11:46

РЕКЛАМА писал(а):Источник цитаты там номера строк есть, и можно туда-сюда по программе мотаться, а тут только по кругу...

Здесь тоже можно мотаться, но с помощью специальных переменных - их принято называть флагами. Если нужен переход в нужно место, то поднимаем нужный флаг - определённой переменной присваиваем определённое значение. Тут лучше всего применять логические переменные. Ложь - флаг опущен, истина - флаг поднят. А в том месте, куда нужно перейти, проверяем поднятость флага. А в тех местах, куда не надо переходить, проверяем опущенность флага.
Ты должен делать добро из зла, потому что его больше не из чего делать. Уоренн Роберт Пенн.

Аватара пользователя
L0ki

Arduino. Изучаем вместе

Сообщение #88 L0ki » 10 июл 2018, 02:22

Сообщение не по теме
может я чего-то не понимаю в этой жизни.... :wall: х/з, спорить не буду....
(это я про то, что нынче к кажному унитазу норовятЪ прикрутить :crazy: микроконтроллер,
а то и порой одноплатник с линухом(али ведроидом) на борту :shock: )
Но К561ТМ2 + чуть-чуть мелкой логики уже совсем никак не судьба ? :P

Отправлено спустя 9 минут 15 секунд:
е_Вячеслав писал(а):Источник цитаты Сопротивление светодиода

Эммм.... формулировка "сопротивление светодиода" :shock: звучит как бы это помягче сказать то..., даже и слова не подберу чтобы не обидеть....
Светодиод, если чо - хренвинка крайне нелинейная, так что дедушки Ом с Киргофом тут совсем не при делах...

Ну а при питании светодиодов от источника напряжения, резисторы категорически нужны!
без них "это" уже будет в лучших традициях китай-инженерии когда економятЪ (всеми правдами и неправдами) кажный юань. :crazy:
Свернуть
Ушел в себя.
Вернусь не скоро.

Аватара пользователя
е_Вячеслав

Arduino. Изучаем вместе

Сообщение #89 е_Вячеслав » 10 июл 2018, 04:15

Сообщение не по теме
L0ki писал(а):Источник цитаты Эммм.... формулировка "сопротивление светодиода" звучит как бы это помягче сказать то..., даже и слова не подберу чтобы не обидеть....
Светодиод, если чо - хренвинка крайне нелинейная, так что дедушки Ом с Киргофом тут совсем не при делах...
Прикольно!!!
Свернуть

Аватара пользователя
ROW

Arduino. Изучаем вместе

Сообщение #90 ROW » 10 июл 2018, 07:56

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


Вернуться в «Системы ЧПУ»