как выводить напряжение с 9-го пина в последовательный порт в этом примере?
- Войдите на сайт для отправки комментариев
Вс, 27/11/2016 - 10:48
как выводить напряжение с 9-го пина в последовательный порт (с Serial.println())?
void setup()
{
pinMode(9, OUTPUT);
}
void loop()
{
analogWrite(9,0);
delay(1000);
analogWrite(9,10);
delay(1000);
analogWrite(9,40);
delay(1000);
analogWrite(9, 100 );
delay(1000);
analogWrite(9,40);
delay(1000);
analogWrite(9,10);
delay(1000);
}
это можно сделать?
http://arduino.ru/Tutorial/PWM
пробовал с analogWrite, видимо не то, не получается
какую строчку кода надо написать?
если имеете желание посмотреть, какое действительное напряжение на выходе шим, импульсы надо продифференцировать, включив простейшую RC цепь и уже напряжение после этой цепи мерять, подав его на аналоговый вход к примеру A1, измерили - выводите в порт
аа, то есть надо всё равно что-то подать на один из анологовых входов (А0- А5) и потом с него только можно считывать? т.е. иначе никак?
т.е. напрямую считывать что-то с 9-го пина и показать это в seral.println не получится?
аа, то есть надо всё равно что-то подать на один из анологовых входов (А0- А5) и потом с него только можно считывать? т.е. иначе никак?
т.е. напрямую считывать что-то с 9-го пина и показать это в seral.println не получится?
Напрямую там может быть или ноль или единица (как карта ляжет), а вот после диф. цепи, то да, там накапливающееся на конденсаторе напряжение
Взял простейшую цепь 10k-10k и конденсатор 10000 заряжаем через 10к разряжаем аналогично, хотя через открытый выход, разряжаем через 5к получается )))

То-есть, диф цепь надо рассчитать на частоту ШИМ тогда возможно будет счастье
спасибо большое )
"какое действительное напряжение на выходе шим, импульсы надо продифференцировать, включив простейшую RC цепь и уже напряжение после этой цепи мерять, "
здесь вот совсем непонятно ) насчет "дифференципования"
ШИМ знаю что такое -- меняешь скважность получаешь сигнал нужного уроня,
а вот дальше мне непонятно что нужно сделать и как включить"простейшую RC цепь"
только сейчас увидел этот ответ
я хотел брату показать, что можно всё легко считывать при мигающей лампочке (LED)
блин, просто не получается. тогда не буду это делать. просто лампочка пусть мигает, по ней видно изменение сигнала
спасибо )
"какое действительное напряжение на выходе шим, импульсы надо продифференцировать, включив простейшую RC цепь и уже напряжение после этой цепи мерять, "
здесь вот совсем непонятно ) насчет "дифференципования"
И правильно, что непонятно.
В посте №4 ошибка. Читать нужно "проинтегрировать".
ШИМ знаю что такое -- меняешь скважность получаешь сигнал нужного уроня,
Выходит, не знаете.
Уровня там только два: 0 и напряжение питания (обычно 5В). Соответственно, и прочитать из порта можно только один из этих двух уровней с различной вероятностью.
а вот дальше мне непонятно что нужно сделать и как включить"простейшую RC цепь"
А самостоятельно найти никак? https://ru.wikipedia.org/wiki/RC-%D1%86%D0%B5%D0%BF%D1%8C
да просто всё )))

с 9 вывода на вывод A1 сопротивление 10 килоом, с вывода A1 на вывод GND конденсатор 3.3 мкф (взял какой лежал на столе)
и уже почти правильно получается, разброс небольшой
Здесь есть специалисты, надеюсь смогут подсказать, какие данные RC цепи должны быть...
а я их всегда путаю (в названиях) ))) когда свайный дизель-молот вгоняет сваи с усилием тысячи тонн и так целый день,что интегрировать, что дифференцировать всё равно )))
Но замечание верное
Кстати, а какова частота этого ШИМ и какова должна быть ПРАВИЛЬНАЯ ЦЕПЬ? В значениях
Здесь есть специалисты, надеюсь смогут подсказать, какие данные RC цепи должны быть...
Принцип простой: постоянная времени RC-цепи должна быть намного больше, чем период ШИМ.
Если "намного" принять за 100 раз, то RC ~= 200мс, что достигается, например, при 10к и 20мкФ.
Здесь есть специалисты, надеюсь смогут подсказать, какие данные RC цепи должны быть...
Принцип простой: постоянная времени RC-цепи должна быть намного больше, чем период ШИМ.
Если "намного" принять за 100 раз, то RC ~= 200мс, что достигается, например, при 10к и 20мкФ.
Я интуитивно почти не ошибся ))) взяв 3,3 мкф
МНОГО ))) при 33 мкф нет нуля, нее успевает разряжаться

Частота ШИМ согласно документации Arduino равна 490Гц. Хотя, если исходить из документации AVR и элементарной арифметики, должна быть 1000000/2/1024=488,28125Гц.
При 3.3 мкФ уровень пульсаций и, соответственно, разброс параметров будет в 6 раз больше. Ну а так интуиция, естественно, работает. Более того, как раз в определении параметров интегрирующей цепи, зачастую, номиналы выбираются, исходя именно из интуиции, а не расчета.
МНОГО ))) при 33 мкф нет нуля, нее успевает разряжаться
Так а чего Вы хотите добиться?
И, кстати, хотелось бы видеть схему, потому как мне крайне сомнительно, что после RC-цепи с постоянной времени 330 мс получается такой большой разброс, как на скриншоте.
МНОГО ))) при 33 мкф нет нуля, нее успевает разряжаться
Так а чего Вы хотите добиться?
И, кстати, хотелось бы видеть схему, потому как мне крайне сомнительно, что после RC-цепи с постоянной времени 330 мс получается такой большой разброс, как на скриншоте.
схема - резистор 10 килоом с 9 ноги на ногу А1, с ноги А1 конденсатор сейчас 5 шт по 3,3 мкф на ногу GND
(ноль есть)
Добится соответствия значения передаваемого на ногу 9 ШИМ, значению считываемому ногой А1
0 - 0
10 - 10
....
Это скриншот работы программы поста 6
Это уже ближе к телу, но всё же не столь точно, как хотелось бы

Программка
ua6em, чтобы получить вменяемое значение, нужно дать интегратору время установиться. Т.е. после analogWrite нужно подождать време не меншее нескольких постоянных времени RC и только после этого читать значение.
Похоже, у Вас сейчас в строке 13 читается значение, установленное в строке 32, в строке 17 читается установленное в 12 и т.д. Т.е. происходит сдвижка с запаздыванием.
PS. И я так и не понял, для чего это все нужно. Не проще ли хранить число, выводимое в analogWrite в переменной (возможно, сделать обертку в виде класса).
МНОГО ))) при 33 мкф нет нуля, нее успевает разряжаться
Так а чего Вы хотите добиться?
И, кстати, хотелось бы видеть схему, потому как мне крайне сомнительно, что после RC-цепи с постоянной времени 330 мс получается такой большой разброс, как на скриншоте.
Да, кстати, раскинул тут мозгами насчёт интегрирующей - дифференцирующей цепи, для цепи разряда получается дифференцирующая!? конденсатор с резистором включен с точностью наоборот, разряд с + конденсатора через резистор, через открытый переход транзистора (при 1 то он закрыт) через GND, получаются совсем иные цепи, отсюда видимо и нессответстве переданных данных с полученным результатом??? а падение на переходе открытого транзистора?
Тема совершенно случайно коснулась будущего моего проекта, АПЧ генератора низких (300Кгц) частот, на XR2206
PS. И я так и не понял, для чего это все нужно. Не проще ли хранить число, выводимое в analogWrite в переменной (возможно, сделать обертку в виде класса).
я просто хотел брату показать, что меняющийся уровень сигнала можно видеть по освещенности лампочки (LED) и что все значения на лампочке можно легко читать с монитора в цифрах
легко не получается ) покажу ему в цифрах analogWrite на делителе напряджения тогда )
Перенёс задержки, получил стабильный, но неточный (1-2 единицы) результат...
Вот, задал молодой человек вопрос и вылился он в целое исследование )))
Да, кстати, раскинул тут мозгами насчёт интегрирующей - дифференцирующей цепи, для цепи разряда получается дифференцирующая!? конденсатор с резистором включен с точностью наоборот, разряд с + конденсатора через резистор, через открытый переход транзистора (при 1 то он закрыт) через GND, получаются совсем иные цепи, отсюда видимо и нессответстве переданных данных с полученным результатом??? а падение на переходе открытого транзистора?
Отнюдь.
Во-первых, в случае "0" открывается один транзистор, а в слцучсе "1" - другой. Так что в любом варианте один транзистор открыт, другой закрыт.
Во-вторых, вне зависимости от того, в какую сторону течет ток, направление распространения сигнала всегда остается одним и тем же - от входа в кыходу. В данном случае мы подаем сигнал на левый/верхний контакт сопротивления (в соответствии со стандартным изображением RC-цепи), а сниаем с места соединения резистора и конденсатора.
Так что никаких предпосылок, чтобы считать цепь как-то иначе, чем интегрирующую, нет.
Падение на переходе открытого транзистора можно рассматривать либо как уменьшение диапазона изменения сигнала, либо как выходное сопростивление источника сигнала. Суть от этого не меняется.
Несоответствие получаемым результатам, как я уже писал, происходит из-за того, что Вы не даете времени интегрирующей цепи войти в квазистационарный режим.
PS. И я так и не понял, для чего это все нужно. Не проще ли хранить число, выводимое в analogWrite в переменной (возможно, сделать обертку в виде класса).
я просто хотел брату показать, что меняющийся уровень сигнала можно видеть по освещенности лампочки (LED) и что все значения на лампочке можно легко читать с монитора в цифрах
легко не получается ) покажу ему в цифрах analogWrite на делителе напряджения тогда )
цифра хранимая в памяти не есть меняющийся уровень сигнала, в коде работающий скетч, точность на уровнях 50% в районе 1 %, а это очень хорошая точность, сейчас закину пару строк посмотрим 75 и 100% шкалы
я не использую резистор, а просто подаю 2v на пин 9 (сигнал=100)
правильно я понимаю схему, которая получается (см. рис.)?
Перенёс задержки, получил стабильный, но неточный (1-2 единицы) результат...
Вот, задал молодой человек вопрос и вылился он в целое исследование )))
А он в принципе не может быть точным.
Я вот выше писал, допустим, "намного" - это в 100 раз. Откуда сразу друг за другом следует два вывода:
1. Величина пульсаций на выходе интегрирующей цепи составить те самые 1/100 от размаха исходноо сигнала или 1%.
2. Т.к. мы измеряем напряжение в заранее неизвестную фазу пульсаций, то имеем неопределенность в тот самый 1%. Если полная шкала 255, то 1% - это 2-3 единицы сигнала.
Откуда вывод - если хотим увеличить точность, нужно увеличивать постоянную времени RC-цепи.
Следствие: нужно будет пропорционально увеличивать паузу перед началом измерения.
Либо альтернативный вариант - не увеличсивать RC, а проводить множество измерений, производя в дальнейшем их стстистическую обработку.
Примечакние: я умышленно использовал термин "статистическая обработка", а не "усреднение", т.к. простое усреднение здесь не подойдет.
я не использую резистор, а просто подаю 2v на пин 9 (сигнал=100)
правильно я понимаю схему, которая получается (см. рис.)?
R1 - это "сложное сопротивление" (котрое находится внутри платы) после точки A0 до "земли"
я не использую резистор, а просто подаю 2v на пин 9 (сигнал=100)
правильно я понимаю схему, которая получается (см. рис.)?
Какая схема получается у Вас, знаете только Вы.
Все опубликованные выше рассуждения и измерения (скриншоты) относились к схеме, состоящей только из резистора и конденсатора, т.е. в Вашей схеме необходимо выкинуть нижний резистор и диод.
Вот что получилось, в принципе как в учебнике, в начале шкалы больший разброс значений
Код тут
R1 - это "сложное сопротивление" (котрое находится внутри платы) после точки A0 до "земли"
R1 мы пренебрегаем, т.к. его сопротивление на несколько порядков выше, чем сопростивление, используемое в схеме.
Если уж говорить о более точной эквивалентной схеме, следовало бы в первую очередь учесть внутреннее сопротивление источика сигнала, которое будет подключено между "входом" существующего резистора 10к и "pin9".
Кстати, почему там написано 2V, тогда как должно быть 5V?
Ни диода ни резистора у меня нет, оставьте на схеме резистор 10к и конденсатор, а эквивалентную схему я не знаю, нужно обязательно включить участок схемы выходного пина и участок схемы входного
Я то с ардуиной знаком месяца три как ))) не требуйте от меня невозможного
Инет тормозит, сразу не увидел посты выше, всё верно вами сказанное о точности, но и эта точность для практических случаев достаточна
у меня к пин 9 подключена лампочка (LED).
я не использую резистор, а просто подаю макс сигнал из расчета -- 2v на пин 9 (аналоговый сигнал=100)
я пытаюсь разобраться
в частности как устроен аналоговый вход А0?
- дальше ведь (после точки контакта А0) идет т.н. "сложный резистор" R1 и это резистор соединение с землей? или не так?
т.е. R1 - это т.н. "сложное сопротивление" (котрое находится внутри платы) после точки A0 до "земли"
правильно ли я понимаю аналоговый вход и схему, которая получается? заранее спасибо
p.s. добавил внутреннее сопротивление источника Rs
Я то с ардуиной знаком месяца три как ))) не требуйте от меня невозможного
Думаю, Ардуино - не показатель. Я сам знаком с ней менее полутора лет, что явно недостаточно для того, чтобы считаться спеуциалистом. Но еще до Ардуино у меня было 20 лет опыта в схемотехнике (правда, это было давно - еще в советские годы).
лампочка или светодиод?
я по специальности техник-механик дорожного оборудования )))
Радио - хобби
светодиод (LED)
у меня к пин 9 подключена лампочка (LED).
я не использую резистор, а просто подаю макс сигнал из расчета -- 2v на пин 9 (сигнал=100)
я пытаюсь разобраться
в частности как устроен аналоговый вход А0?
- дальше ведь (после точки контакта А0) идет т.н. "сложный резистор" R1 и это резистор соединение с землей? или не так?
т.е. R1 - это т.н. "сложное сопротивление" (котрое находится внутри платы) после точки A0 до "земли"
правильно ли я понимаю аналоговый вход и схему, которая получается? заранее спасибо?
Нет, понрмаете Вы неправильно.
Начну с самого начала.
1. LED - это светодиод, а не лампочка. Эти устройства радикально различаются своей ВАХ (Вольт-Амперной характеристикой). Разница очень существенная, особенно при использовании ШИМ.
Лампочка представляет собой резистор, сопротивление которого увеличивается по мере разогрева спирали. И это увеличение составляет несколько (до 10) раз. Но в остальном лампочка ведет себя как резистор, т.е. имеет линейную ВАХ: ток прямо пропорционален приложенному напряжению.
Светодиод ведет себя так же, как и обычный диод, т.е. в одну сторону ток не проводи вообще. В другую сторону ток экспоненциально зависит от приложенного напряжения. Экспонента - очень сильная функция, на практике можно считать, что до некоторого напряжения (0.7В для обычного диода и 1.6-3.3В для светодиода в зависимости от цвета) диод ток не проводит вообще, а после превышения этого порогового напряжения ток возрастает неограниченно. Поэтому на практике последовательно со светодиодом всегда ставят токоограничительный резистор.
2. Поэтому резистор использовать обязательно! Для экспериментов лучше в диапазоне 200 Ом - 1 кОм.
3. Никаких 2В, подаваемых на схему нет и быть не может. Вывод Ардуино может давать только 2 уровня: 0 и 5В.
Но при определенной настройке порта он может попеременно устанавливаться то в состояние "0", то в состояние "1" с некоторой частотой и скважностью.
Нсли бы мы имели настоящую лампочку, т.е. элемент, с линейной ВАХ (т.е. удовлетворяющий закону Ома), то можно было бы говорить об эффективном напряжении 2В, но т.к. светодиод - элемент нелинейный, никакого эффективного напряжения в схеме нет, можно говорить только об эффективном токе. Последний определеятся падением напряжения на диоде, величиной резистора и скважностью.
Кстати, это можно наглядно проверить, подключая и отключая от схемы конденсатор при фиксированном значении скважности. При высокой скважности (скажем, 50 и менее) напряжение на конденсаторе не будет достигать напряжения открывания диода и он не будет светиться (ток будет равным 0). А если конденсатор отключить, то 10-20% времени ток будет протекать через диод и он будет светиться на 10-20% от максимума (средний ток 10-20%).
4. Аналоговый вход - это просто вольтметр. Он измеряет напряжение в единицах 1/1023 от опорного напряжения. Имеет высокое входное сопротивление.
5. Выходным сопротивлением пина 9 и входным А0 лучше для простоты пренебречь. Необходимо только учитывать, что выходы Ардуино защищены от перегрузки по току - их ток принудительно ограничивается величиной 40 мА. Именно поэтому Вы еще не спалили ни Ардуину, ни светодиод. Максимальный ток среднео светодиода равен 20 мА. Средний ток в Вашем случае 40мА*(100/255)=16мА.
Я крайне не советую использовать выходы Ардуино в предельных режимах.
1. "LED - это светодиод, а не лампочка. Эти устройства радикально различаются своей ВАХ (Вольт-Амперной характеристикой). Разница очень существенная, особенно при использовании ШИМ.
Лампочка представляет собой резистор, сопротивление которого увеличивается по мере разогрева спирали. И это увеличение составляет несколько (до 10) раз. Но в остальном лампочка ведет себя как резистор, т.е. имеет линейную ВАХ: ток прямо пропорционален приложенному напряжению.
Светодиод ведет себя так же, как и обычный диод, т.е. в одну сторону ток не проводи вообще. В другую сторону ток экспоненциально зависит от приложенного напряжения. Экспонента - очень сильная функция, на практике можно считать, что до некоторого напряжения (0.7В для обычного диода и 1.6-3.3В для светодиода в зависимости от цвета) диод ток не проводит вообще, а после превышения этого порогового напряжения ток возрастает неограниченно. Поэтому на практике последовательно со светодиодом всегда ставят токоограничительный резистор."
Ток у нас течет в одном направлении, и напряжение всегда либо 0 либо 5 вольт , поэтому я считал, что светдиод одинаково реагирует (будет "выдавать" одно значение сопроивления) на одно и тоже напряжение 5v. (или нет так?) поэтому светодиод (в данном случае, когда без конденсатора) ведёт себя как обычная лампочка. поэтому я и называл его просто "лампочка"
хотя не надо было это делать -- так как при использовании, например, конденсатора (как в нашем случае) - поведение светодиода уже изменится от лампочки
2. "Поэтому резистор использовать обязательно! Для экспериментов лучше в диапазоне 200 Ом - 1 кОм."
Если я устанавливаю analogWrite(9,100) , то зачем мне резистор?
3. "Никаких 2В, подаваемых на схему нет и быть не может. Вывод Ардуино может давать только 2 уровня: 0 и 5В.
Но при определенной настройке порта он может попеременно устанавливаться то в состояние "0", то в состояние "1" с некоторой частотой и скважностью.
Нсли бы мы имели настоящую лампочку, т.е. элемент, с линейной ВАХ (т.е. удовлетворяющий закону Ома), то можно было бы говорить об эффективном напряжении 2В, но т.к. светодиод - элемент нелинейный, никакого эффективного напряжения в схеме нет, можно говорить только об эффективном токе. Последний определеятся падением напряжения на диоде, величиной резистора и скважностью.
Кстати, это можно наглядно проверить, подключая и отключая от схемы конденсатор при фиксированном значении скважности. При высокой скважности (скажем, 50 и менее) напряжение на конденсаторе не будет достигать напряжения открывания диода и он не будет светиться (ток будет равным 0). А если конденсатор отключить, то 10-20% времени ток будет протекать через диод и он будет светиться на 10-20% от максимума (средний ток 10-20%)."
я имел в виду среднее напряжение (можно ли его назвать "эффективным"?) среднее напряжение = (напряжение 5v)*(скважность)
4. "Аналоговый вход - это просто вольтметр. Он измеряет напряжение в единицах 1/1023 от опорного напряжения. Имеет высокое входное сопротивление."
я в этом и пытаюсь разобраться, пожалуйста скажите прямо
этот волтметр, он на чём меряет падение напряжение? на т.н. "сложном резисторе" R1 ?
т.е. "высокое входное сопротивление аналогового входа" - это имеется в виду, что у R1 высокое сопротивление?
5. Выходным сопротивлением пина 9 и входным А0 лучше для простоты пренебречь. Необходимо только учитывать, что выходы Ардуино защищены от перегрузки по току - их ток принудительно ограничивается величиной 40 мА. Именно поэтому Вы еще не спалили ни Ардуину, ни светодиод. Максимальный ток среднео светодиода равен 20 мА. Средний ток в Вашем случае 40мА*(100/255)=16мА."
да. я понимаю, что у реального источника (который выше 5v) есть внутренее сопртивление и уже на выходе этого реального источника (пин9) мы получаем те 5v и ток 40мА (при коротком замыкании)
спасибо что отвечаете
извините ,если я совсем нуб
ток течёт когда цепь замкнута, нет нагрузки нет тока )))
"без нагрузки" -- я имел в виду -- короткое замыкание
т.е. соединение выхода 5в и GRN -- проводом (с низким (нулевым) сопротивлением)
p.s. значит я неправильно выразился (исправил в тексте)
Нет. Без нагрузки, это когда к 5V и GND ничего не подсоединено. Цепь не замкнута. Там есть напряжение - 5 вольт, но нет тока - 0 ампер.
хорошо )
значит я неправильно выразился
я имел в виду "короткое замыкание"
andrrpetr, пожплуйста, когда цитируете, постарайтесь сделать так, чтобы можно было без труда отличить цитаты от Ваших комментариев или вопросов. Иначе на длинные сообщения отвечать просто невозможно.
Ток у нас течет в одном направлении, и напряжение всегда либо 0 либо 5 вольт , поэтому я считал, что светдиод одинаково реагирует (будет "выдавать" одно значение сопроивления) на одно и тоже напряжение 5v. (или нет так?) поэтому светодиод (в данном случае, когда без конденсатора) ведёт себя как обычная лампочка. поэтому я и называл его просто "лампочка"
У светодиода нет сопротивления. Сопротивление - это котангенс угла наклона ВАХ. Если ВАХ - не прямая линия, ни о каком котангенсе речи идти не может. (точнее, у ВАХ может быть касательная - тогда получим дифференциальное сопротивление - но у него другие свойства, пока не будем об этом)
Поэтому светодиод не может и не ведет себя "как обычная лампочка".
Более того, в данном конкретном случае у нас не сгорают одновременно и светодиод и порт Ардуино исключительно потому, что порт имеет защиту по току. А это, помимо прочего, значит, что на самом деле напряжение на светодиоде не 5 В, а меньше - равно прямому напряжению на светодиоде, т.е. 1.6-3.3 В в зависимости от цвета. Посмотрите осциллографом - там максимум намного меньше 5 В.
Если я устанавливаю analogWrite(9,100) , то зачем мне резистор?
Извините, второй раз писать не буду.
я имел в виду среднее напряжение (можно ли его назвать "эффективным"?) среднее напряжение = (напряжение 5v)*(скважность)
Нету там никакого среднеого напряжения. Средний ток - есть, а среднего напряжения - нет.
Конечно, Вы можете сами ввести определение среднего напряжения и им пользоваться, но никакого физического смысла это определение иметь не будет. А потому использовать его бессмысленно.
И еще раз: в Вашем случае максимальное напряжение на светодиоде не 5В, а величина, зависящая в первую очередь от характеристик диода и во вторую - от характеристик защиты Ардуино по току.
я в этом и пытаюсь разобраться, пожалуйста скажите прямо
этот волтметр, он на чём меряет падение напряжение? на т.н. "сложном резисторе" R1 ?
т.е. "высокое входное сопротивление аналогового входа" - это имеется в виду, что у R1 высокое сопротивление?
Вольтметр измеряет не падение напряжения, а разность потенциалов. Т.е. для его работы никакие "сложные резисторы", равнео как и простые - не нужны.
Я уже не помню, что такое R1, но можно считать, что параллельно входу вольтметра подключен резистор номиналом в сотни Мегаом.
да. я понимаю, что у реального источника (который выше 5v) есть внутренее сопртивление и уже на выходе этого реального источника (пин9) мы получаем те 5v и ток 40мА (при коротком замыкании)
Нет. Из-за защиты по току напряжение существенно меньше 5 В. Только поэтому светодиод еще не сгорел. При попытке подать на него 5В о бы сгорел сразу.
спасибо что отвечаете
извините ,если я совсем нуб
К сожалению, закон Ома - это не фундаментальный закон, а империческое обобщение некоторых экспериментальных данных. Поэтому у него так много исключеий. Поэтому мы так часто говорим, вот здесь так считать можно, а вот здесь - уже нельзя. Но проблема в том, что другого способа расчета электрических цепей кроме закона Ома нет.
Сейчас Вы столкнулись с тем, что, оказывается, выход Ардуины может принимать не только значения 0 и 5В, а еще и другие, которые обусловлены встроенной защитой по току.
Поэтому можно сформулировать так: Ардуино может выдавать на выходах напряжение только либо 0 либо 5 В при условии отсутствия перегрузки по току. Перегрузка по току возникает при токе примерно 40 мА. Если перегрузка возникает, то напряжение на выходе такое, которое обеспечивает через нагрузку ток 40 мА.
Попробую возразить.
1. При добавлении светодиода снижаается ток в цепи.
2. Светлодиод также участвует в разделении общего вольтажа (в разделении ЭДС источника).
Значит светодиод имеет сопротивление.
Попытайтесь измерить это сопротивление, и, исходя из измеренного, что-нибудь посчитать.