Не горит светодиод
- Войдите на сайт для отправки комментариев
Вс, 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 смотреть? А я лошара старая.(((((