Добрый день. В ходе выполнения пятого эксперимента, у меня возникли некоторые вопросы, буду весьма благодарен за помощь. 1. Если мы установим фоторезистор между аналоговым входом и землей, наше устройство будет работать наоборот: светодиод будет включаться при увеличении количества света. Почему? Не совсем понял вопрос, имелось ли в виду нечто, изображенное на картинке ниже. Слева как в эксперименте, справа как в вопросе: Ошибочность такой схемы была понятна сразу. Экспериментально пришел к тому, что в такой схеме не диод вообще не горит. Хотя я ожидал, что гореть он будет постоянно, так как на А0 поступают все 5В, то есть tooDark никогда не станет true. В общем, я не понимаю, что имеется в виду в вопросе. Разжуйте пожалуйста. 2. Измените схему и программу так, чтобы светодиоды включались по прежнему принципу, но светились тем сильнее, чем меньше света падает на фоторезистор. Подскажите пожалуйста, как это сделать.
Резистор и фоторезистор всегда должны находиться по разные стороны от средней точки, подключенной к аналоговому входу, как на схеме слева. Таким образом они образуют плечи делителя напряжения, в котором общее падение напряжения в 5 вольт делится между плечами пропорционально их сопротивлению. В результате в средней точке на аналоговом входе имеем промежуточное напряжение между 0 и 5 В. Чтобы изменить график изменения уровня на аналоговом входе на обратный, нужно просто поменять резистор и фоторезистор местами. Т.е. фоторезистор будет между аналоговым входом и землей, а резистор между аналоговым входом и 5 В. Именно это и имелось в виду, как мне кажется, во фразе "Если мы установим фоторезистор между аналоговым входом и землей" В этом случае при уменьшении сопротивления фоторезистора напряжение в средней точке будет смещаться не к 5 В, а к земле. В схеме же справа оба резистора оказались в одном плече делителя, что в корне неверно. В теории при таком подключении, как справа, на аналоговом входе всегда должно быть 1024 или около того. Почему у вас, судя по вашему описанию, не так, не вполне понятно. У меня есть ряд гипотез разной степени потенциальной достоверности, но озвучивать их не буду, поскольку не уверен в их справедливости.
сейчас в эксперименте светодиод подключён к 13 пину. а яркость светодиода можно изменять только если он будет на пине , где имеется шим - 3, 5, 6, 9,10, 11. значит подключаем на любой пин с шимом. а теперь меняем яркость в зависимости от освещённости фоторезистора Код (Text): #define LED_PIN 10 #define LDR_PIN A0 int lightness = 0; int light = 0; // яркость светодиода void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { int lightness = analogRead(LDR_PIN); // данные с фоторезистора light = map(lightness, 0, 1023, 0, 254); // преобразуем данные // фоторезистора в яркость светодиода analogWrite(LED_PIN, light); }
Странно, у меня ничего не изменилось за счёт перемены местами резистора и фоторезистора. А вот за счёт перемены местами земли и 5V программа стало работать наоборот. Так что думаю вы заблуждаетесь в своей гипотезе.
Это как ? Схема здесь максимально упрощена. Не показано что к GND и +5V еще подключена Ардуина. Это само собой разумеется. А по вашему, это вы получается переполюсовали и Ардуину тоже ? И она работает ? )))))))))
Извините, но ничего не понял из вашего сообщения))) Я поменял местами GND и 5V. Т.е. на схеме мы питание даём на фоторезистор, а землю подключаем к резистору, а я поменял их (GND и 5V) местами и принцип работы алгоритма стал противоположный (светло - горит, темно - тухнет) , надеюсь на фото понятно будет. Что именно произошло при этом - не до конца понимаю))
То есть вместо того чтобы поменять местами две детали идущие к шинам питания, вы перетащили крест-накрест шины питания, идущие к этим двум деталям. Это абсолютно то же самое. Я попытался было дать ответ на ваш вопрос, но понял, что лучше поищите в Гугле по словам "резисторный делитель напряжения с фоторезистором." или http://www.joyta.ru/7328-delitel-napryazheniya-na-rezistorax-raschet-onlajn/
2. Измените схему и программу так, чтобы светодиоды включались по прежнему принципу, но светились тем сильнее, чем меньше света падает на фоторезистор. Подскажите пожалуйста, как это сделать: Код (C++): #define LED_PIN 5 #define LED2_PIN 6 #define LDR_PIN A0 #define POT_PIN A1 void setup() { pinMode(LED_PIN, OUTPUT); pinMode(LED2_PIN, OUTPUT); } void loop() { int lightness = analogRead(LDR_PIN); int threshold = analogRead(POT_PIN); int light; // яркость светодиода light = map(lightness, 0, 1023, 255, 0); // преобразуем данные фоторезистора в яркость светодиода if (lightness < threshold) { analogWrite(LED_PIN, light); } else { analogWrite(LED_PIN, 0); } if (lightness < threshold/2) { analogWrite(LED2_PIN, light); } else { analogWrite(LED2_PIN, 0); } }
а вот скетч по 2 заданию (выше - задание номер 3): как ни странно, работают одинаково, лично я не заметил на глаз разницы Код (C++): #define LED_PIN 5 #define LED2_PIN 6 #define LDR_PIN A0 #define POT_PIN A1 void setup() { pinMode(LED_PIN, OUTPUT); pinMode(LED2_PIN, OUTPUT); } void loop() { int lightness = analogRead(LDR_PIN); int threshold = analogRead(POT_PIN); if (lightness < threshold) { digitalWrite(LED_PIN, HIGH); } else { digitalWrite(LED_PIN, LOW); } if (lightness < threshold/2) { digitalWrite(LED2_PIN, HIGH); } else { digitalWrite(LED2_PIN, LOW); } }