Не горит светодиод
- Войдите на сайт для отправки комментариев
Вс, 04/02/2018 - 12:12
Сделал простенький датчик температуры для дома с 3 светодиодами и пищалкой. Работал недели 2, а потом синий светодиод перестал гореть (он горит кагда температура ниже 30 градусов). При прикосновении пальцем к резистору светодиод горит.
#include <OneWire.h> #include <DallasTemperature.h> OneWire oneWire(9); DallasTemperature ds(&oneWire); void setup() { Serial.begin(9600); ds.begin(); } void loop() { ds.requestTemperatures(); //Получение температуры delay(760); //Задержка для получения температуры int temp = ds.getTempCByIndex(0); //Присваиваем переменной temp температуру Serial.print("||" + temp); //Выводим в монитор порта температуру (и разделительные знаки) if(temp < 30 && temp > -126){ //Если температура ниже 30 И больше -126(У меня просто часто коротило на -127) tone(8, 200, 10000); //Включаем пищалку на 10 секунд } if(temp < 31) //Если температура ниже 31, то: { digitalWrite(4, HIGH); digitalWrite(3, LOW); //Включаем синий светодиод digitalWrite(2, LOW); //Отключаем остальные } if(temp > 30 && temp < 35) //Если температура выше 30 и ниже 35, то: { digitalWrite(4, LOW); digitalWrite(2,LOW); //Включаем зелёный светодиод digitalWrite(3, HIGH); //Отключаем остальные } if (temp > 35) //Если температура выше 35, то: { digitalWrite(2, HIGH); digitalWrite(3, LOW); //Включаем красный светодиод digitalWrite(4, LOW); //Отключаем остальные } }
Подскажите непросветлённому, что это за напасть такая?
11 строка - не нужна - она останавливает контроллер - и он ничего не будет делать - в том числе и не будет выполнять библиотеки...
и еще - может дело не в коде а в плохой пайке? или браке деталей (микро трещина на резисторе)
Копайте свою пайку, комментарий в 14 строке очень показательный. В Dallas Temperature задержка встроена в библиотеку дублирование делаями не нужно.
У меня всё на макетной плате(макетная плата в порядке), из пайки только припаян датчик температуры к проводам(а в серийном порте температура правильная).
А резисторы уже менял.
Скорее всего контакт в макетке поганый, сами подумайте, если пин настроен в OUTPUT и на низкоомную нагрузку, что вы там пальцем можете изменить?
Я их напрямую пытался подключить(без макетной платы), не помогло.
Также не обязательно к резистору, можно ко всему что до светодиода идёт дотронуться.
Без pinMode(4, OUTPUT); вот эта "фиговина" digitalWrite(4, HIGH); включает резистор привязки.
И светодиод светился как раз от него.
Ну и "палец" ловил по той же причине.
Потому-что это - ВХОД!!!
Помогло, Спасибо
А с остальными почему не было такого же "симптома"?
Ты,гений! Вот нахрена в Setup смотреть? А я лошара старая.(((((