Чем темнее, тем больше лампочек включается.
- Войдите на сайт для отправки комментариев
Пт, 12/04/2019 - 00:55
Всем здрасте.
Начал обучатся ардуино. Прохожу уроки, но все время хочется попробывать дополнительно к уроку что-то свое поэтому получается забегаю вперед и не хватает знаний.
Сейчас прошел урок где зажигается светодиод, если темнеет.(фоторезистор)
И вот мне захотелось зделать так как в названии темы, но не выходит.(пока только 2 светодиода)
То сразу оба загораются, то только один.
Вот последнее, что делал, горит только один:
if (sensorWert < 400)
{
digitalWrite(LED1,HIGH);
}
else if (sensorWert > 400)
{
digitalWrite(LED1,LOW);
}
else if (sensorWert < 300)
{
digitalWrite(LED2,HIGH);
}
else if (sensorWert > 300)
{
digitalWrite(LED2,LOW);
}
Вот так еще пробывал:
if (sensorWert < 400)
{
digitalWrite(LED1,HIGH);
}
if (sensorWert < 300)
{
digitalWrite(LED2,HIGH);
}
else
{
digitalWrite(LED2,LOW);
digitalWrite(LED1,LOW);
Еще по всякому менял и никак.
А если так:
if (sensorWert > 400) { digitalWrite(LED2, LOW); digitalWrite(LED1, LOW) } else { digitalWrite(LED1, HIGH); } if (sensorWert < 300) { digitalWrite(LED2, HIGH); }Только, сдается мне, что разница в освещении между 300 и 400 будет совсем небольшая, и не факт, что инграя со светом удасться попасть в диапазон между 300 и 400. В результате будет или 2 дода гореть или ноль.
А если так:
Спасибо. Интересное решение )) Вечером попробую.
Только, сдается мне, что разница в освещении между 300 и 400 будет совсем небольшая, и не факт, что инграя со светом удасться попасть в диапазон между 300 и 400. В результате будет или 2 дода гореть или ноль.
Там всего между 200 и 500 показания меняются. Это при свете лампочки и без солнца.
Но хорошо, попробую днем, что бы диапазон побольше был.
А если так:
Получилось, но при повышении освещения 2й светодиод не отключается, пока не станет светлее, что бы и 1й отключился.
Не знаю, что там в начале мудрил, но все заработало с очень простым кодом. Я похожее уже делал, только отключение выводов кажется вставлял в конце всех условий. Уж точно не припомню, раз сто все менял.
Вот так работает, хоть на 10 светодиодов:
if (sensor < 400) { digitalWrite(LED1,HIGH); } else { digitalWrite(LED1,LOW); } if (sensor< 300) { digitalWrite(LED2,HIGH); } else { digitalWrite(LED2,LOW);Уважаемый, да хрен там сколько у Вас будет светодиодов. Вы главное поймите - КАЖДЫЙ светодиод включается при определенной освещенности и отключается тоже по определенной.
Напишите нормальнный алгоритм ЕСЛИ-ТО-ИНАЧЕ для каждого светодиода и все заработает.
И не надо заниматься непотребством.
byte ledsPins[] = {A0, A3, 3, 8, 5, 4}; ... sensor = ... ledsOnNum = 0; if (sensor > 400) { ledsOnNum = 4; } ... if (sensor > 800) { ledsOnNum = 8; } ... for (byte i=0; i < sizeof(ledsPins); i++) { digitalWrite(ledsPins[i], (i < ledsOnNum)). }void loop() { digitalWrite(LED1, sensor <= 100 ? HIGH : LOW); digitalWrite(LED2, sensor <= 200 ? HIGH : LOW); digitalWrite(LED3, sensor <= 300 ? HIGH : LOW); digitalWrite(LED4, sensor <= 400 ? HIGH : LOW); digitalWrite(LED5, sensor <= 500 ? HIGH : LOW); digitalWrite(LED6, sensor <= 600 ? HIGH : LOW); digitalWrite(LED7, sensor <= 700 ? HIGH : LOW); digitalWrite(LED8, sensor <= 800 ? HIGH : LOW); delay(100); }