Скетч и схема не работает (PIR, датч. освещенности, полевик) постоянно светит светодиодная лента

Pashtet
Offline
Зарегистрирован: 30.06.2016
Добрый день.

Сделал подсветку, соединил как на схеме, при подключении постоянно светит лента, т.е. как только мы подаем 12 вольт лента включается и светит 
постоянно ни на что не реагируя.
Светодиодную ленту пробовал 0,2 метра и 0,7 метра.
Сопротивления оба по 0,5 ватта.
Полевик не проверял (не знаю как это сделать). Датчик движения и освещенности проверял отдельно.

В чём может быть дело?

Заранее огромное спасибо.



#include <Arduino.h>
#include <stdint.h>

#define PIN_MOTIONONE 7 // Ноги для ИК датчиков
// #define PIN_MOTION02 6

#define PIN_NIGHT A0 // Нога для сенсора освещенности
#define PIN_PWM 4 // Сюда вешаем MOSFET
#define TIME_DELAY_LIGHT 1100 // Задержка включения подсветки
#define SENSOR_NIGHT 800 // Если выше - то ночь;
#define LIGHT_NIGHT 70 // Яркость свечения ленты
#define DELAY_TO_NEXT_LIGHT 30 // Плавность изменения света

bool nightNow = false; // Флаг ночь
bool gotMotion = false; // Флаг движение
bool lightIsSwitchedOn = false; // Флаг включения подсветки

uint8_t sensorA=0, sensorB = 0, sensorStep = 0; // Разные счетчики
int sensorNow;

unsigned long timeToNextDecision = 0; // Когда принять решение о выключении

void setup()
{

}

void loop()
{

//////////////////////// Check day or night //////////////////////////////////

if (!lightIsSwitchedOn) { // Проверяем день/ночь только если подсветка выключена
sensorNow = analogRead(PIN_NIGHT);
if (sensorNow > SENSOR_NIGHT) {
sensorA++;
}
if (sensorNow > (SENSOR_NIGHT + 5)) {
sensorB++;
}
sensorStep++;

if (sensorStep == 20) {
if (sensorA >18) {
nightNow = 1;
digitalWrite(13,1);
}
if (sensorB == 0) {
nightNow = 0;
digitalWrite(13,0);
}
sensorStep = 0; sensorA = 0; sensorB = 0;
}
}
///////////////////////// Night now ////////////////////////////////////

if (nightNow) {

if ( (digitalRead(PIN_MOTIONONE)) ) gotMotion = true;

if((!lightIsSwitchedOn) && (gotMotion)) {
for(int i = 0; i <LIGHT_NIGHT; i++) {
analogWrite(PIN_PWM, i);
delay(DELAY_TO_NEXT_LIGHT);
}
lightIsSwitchedOn = 1;
gotMotion = 0;
timeToNextDecision = millis() + TIME_DELAY_LIGHT;
}

if((!gotMotion) && (lightIsSwitchedOn) && (millis() > timeToNextDecision)){
for(int i = LIGHT_NIGHT; i >0; i--) {
analogWrite(PIN_PWM, i);
delay(DELAY_TO_NEXT_LIGHT);
}
analogWrite(PIN_PWM, 0);
lightIsSwitchedOn = 0;
timeToNextDecision = 0;
}
if((gotMotion) && (lightIsSwitchedOn) && (millis() > timeToNextDecision)) {
timeToNextDecision = millis() + TIME_DELAY_LIGHT;
gotMotion = 0;
}

}
}

 

Pashtet
Offline
Зарегистрирован: 30.06.2016

Не могу удалить или переименовать тему, текст сообщения попал в код.

Добрый день.
 
Сделал подсветку, соединил как на схеме, при подключении постоянно светит лента, т.е. как только мы подаем 12 вольт лента включается и светит
постоянно ни на что не реагируя.
Светодиодную ленту пробовал 0,2 метра и 0,7 метра.
Сопротивления оба по 0,5 ватта.
Полевик не проверял (не знаю как это сделать). Датчик движения и освещенности проверял отдельно.
В чём может быть дело?
Заранее огромное спасибо.
 

 

Bee
Offline
Зарегистрирован: 08.01.2016

Для проверки полевика... 

Вместо полевика просто подключи светодиод через резистор 1кОм.

На схеме у Вас ошибочка или датчик освещености такой?

GND и DO - перепутаны местами... Может от этого у Вас постоянно НОЧЬ!

Хотя Судя по скетчу сигнал должен подаватся аналоговый с датчика, а не цифровой после компаратора.