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 байт) 2 скачивания
Ты должен делать добро из зла, потому что его больше не из чего делать. Уоренн Роберт Пенн.


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