Подскажите в чем причина. Контроллер 5450, транзисторные сборки на IRF7314.
С выходов контроллера IRF7314 подключены через резисторы по 1К.
Плавный поджиг работает с одним из последних скетей, но плавное затухание не происходит!
Если же со входов IRF7314 дать резистор к питаню, вообще ничего не работает, пробовал другие скетчи, но тогда в таком исполенние не работает плавный поджиг, сразу диоды по одному врубаються...
Уже натыкался так что спалил один контроллер(
Не подскажите, где рыть, скетч из 452 поста от уважаемого Ahtung533, все работает и настраевается под себя любимого, кроме одного -в дневном режиме первый и последний светодиоды горят в пол накала, что должно иметь место в ночном режиме,как только фоторезистор закрываю- они наоборот гаснут, и все работате штатно. Что где изменить подскажите к понедельнику лесенку должны собрать уже.
Всем доброго времени суток. Подскажите пожалуйста , где взять источник этой чудо лестницы (схема, скетч , описание и т.д ), повторить все это точь в точь мне подсилу, а вот исправить, дополнить--- я в этом полный ноль. Большое СПАСИБО!!!
Для начала почитай всю ветку, начиная с первого поста. Здесь есть и схемы, и скетчи, так что любому начинающему не составит труда в повторении "этой чудо лестницы".
извините можно вопрос тоже по освещению лестницы. если мне не интересуют плавный запуск и затухание светодиодов можно ли релизовать через ардуино + блок на 16 реле допустим?
Всем доброго времени суток. Суть токова,код не мои надо чтобы посмотрели и поеснили про плавный запуск и затухание . Сеичас плавный запуск и затухание происходит рывками. пробовал с настроиками
#define Speed 2.0
if (StairsPWMValue[i] < 5 ) StairsPWMValue[i] = 0 ;
StairsPWMValue[i-1] = 5;
нечего не получилось, все ровно мерцает
А вот и сам код
#include "Tlc5940.h" // подключить библиотеку обслуживания LED-драйвера
#define Sonar1trig 8 // вход "Trig" "нижнего" сонара (имеет смысл только при использовании СОНАРОВ)
#define Sonar1echo 2 // выход "Echo" "нижнего" сонара (имеет смысл только при использовании СОНАРОВ)
#define Sonar1reset 4 // управление перезагрузкой "нижнего" сонара (имеет смысл только при использовании СОНАРОВ)
#define Sonar2trig 6 // вход "Trig" "верхнего" сонара (имеет смысл только при использовании СОНАРОВ)
#define Sonar2echo 7 // выход "Echo" "верхнего" сонара (имеет смысл только при использовании СОНАРОВ)
#define Sonar2reset 5 // управление перезагрузкой "верхнего" сонара (имеет смысл только при использовании СОНАРОВ)
#define PIR1out 8 // выход "нижнего" PIR (имеет смысл только при использовании PIR-сенсоров)
#define PIR2out 6 // выход "верхнего" PIR (имеет смысл только при использовании PIR-сенсоров)
#define Sonar1limit 30 // см, если обнаружена дистанция меньше, чем это число, то сонар считается сработавшим
#define Sonar2limit 30 // см, если обнаружена дистанция меньше, чем это число, то сонар считается сработавшим
// === ПОЛЬЗОВАТЕЛЬСКИЕ НАСТРОЙКИ =============================================================================
#define SensorPIR false // выберите тип сенсора: FALSE = сонары SRF05, TRUE = PIR сенсоры
#define UseResetSonar true // выберите, использовать ли механизм reset (имеет смысл только при использовании СОНАРОВ)
#define N 16 // 2...16 - установите количество подсвечиваемых ступеней
#define Speed 2.0 // >=1.2 - задайте скорость включения/выключения освещения ступеней
#define PWM_InitialValue 500 // 0...4095 - задайте уровень яркости первой и последней ступеней в режиме ожидания
#define LightOFF_Delay 7000 // мс, задайте время задержки отключения освещения после включения последней ступени
// ============================================================================================================
int StairsPWMValue[16]; // массив значений уровней яркости (0...4096) ступеней. Все операции только с ним, далее через PWM_Output передаются в LED-драйвер
byte Sensor1_IgnoreCount = 0; // счетчик игнорирования срабатывания сенсора 1 (счетчик спускающихся по лестнице)
byte Sensor2_IgnoreCount = 0; // счетчик игнорирования срабатывания сенсора 2 (счетчик поднимающихся по лестнице)
boolean Sensor1 = false; // сенсор 1 зафиксировал движение
boolean Memory1 = false; // память сенсора 1
boolean Sensor1_ON = false; // управляющий сигнал сенсора 1
boolean Sensor2 = false; // сенсор 2 зафиксировал движение
boolean Memory2 = false; // память сенсора 2
boolean Sensor2_ON = false; // управляющий сигнал сенсора 2
boolean AllLightOn = false; // освещение включено полностью, требуется ожидание в таком состоянии
boolean ON_BottomTop = false; // требуется включение ступеней снизу вверх
boolean OFF_BottomTop = false; // требуется выключение ступеней снизу вверх
boolean ON_TopBottom = false; // требуется включение ступеней сверху вниз
boolean OFF_TopBottom = false; // требуется выключение ступеней сверху вниз
boolean InitialState = true; // "дежурный" режим лестницы, т.н. исходное состояние
boolean direct = false; // направление : false = снизу вверх, true = сверху вниз
unsigned long PreTime; // отметка системного времени в предыдущем цикле
unsigned long ActTime; // отметка системного времени в текущем цикле
long Cycle; // мс, длительность цикла
long AllLight_OffDelay; // мс, оставшееся время до выключения освещения лестницы
// ===== ПОДГОТОВКА ===========================================================================================
void setup() {
// Serial.begin(9600);
Tlc.init(); // инициализация LED-драйвера
delay(500); // задержка для выполнения инициализации LED-драйвера
for (byte i = 1; i < 16; i++) StairsPWMValue[i] = 0; // обнулить массив значений яркости ступеней начиная со 2-й ступени
StairsPWMValue[0] = PWM_InitialValue; // выставление дефолтной яркости 1-ой ступени
StairsPWMValue[N - 1] = PWM_InitialValue; // выставление дефолтной яркости последней используемой ступени
PWM_Output(); // передать в LED-драйвер начальные уровни яркости
// - инициализация сенсора 1
if (SensorPIR) pinMode (PIR1out, INPUT); // PIR сенсор
else { // сонар SRF05
pinMode (Sonar1trig, OUTPUT);
pinMode (Sonar1echo, INPUT);
pinMode (Sonar1reset, OUTPUT);
digitalWrite (Sonar1trig, LOW);
}
Sensor1 = false;
Memory1 = false;
// - инициализация сенсора 2
if (SensorPIR) pinMode (PIR2out, INPUT); // PIR сенсор
else { // сонар SRF05
pinMode (Sonar2trig, OUTPUT);
pinMode (Sonar2echo, INPUT);
pinMode (Sonar2reset, OUTPUT);
digitalWrite (Sonar2trig, LOW);
}
Sensor2 = false;
Memory2 = false;
// - инициализация состояния
ON_BottomTop = false;
ON_TopBottom = false;
PreTime = millis(); // сохранить системное время
}
// ===== ОСНОВНОЙ ЦИКЛ ========================================================================================
void loop() {
InitialState = !((ON_TopBottom) || (OFF_TopBottom) || (ON_BottomTop) || (OFF_BottomTop) || (AllLightOn));
if (InitialState) { // если лестница находится в исходном (выключенном) состоянии, сбросить флаги-"потеряшки" на всякий случай
Sensor1_IgnoreCount = 0; // счетчик игнорирования сенсора 1
Sensor2_IgnoreCount = 0; // счетчик игнорирования сенсора 2
}
// - проверить состояние "НИЖНЕГО" сенсора
if (!SensorPIR) { // сканирование пространства перед сонаром 1
digitalWrite(Sonar1trig, HIGH);
delayMicroseconds(10);
digitalWrite(Sonar1trig, LOW);
byte distance = pulseIn(Sonar1echo, HIGH, 5000) / 58 ; // расчет дистанции до препятствия (5000 - таймаут, то есть не ждать сигнала более 5мс)
Sensor1 = (distance > 0) && (distance <= Sonar1limit); // SRF05 : сонар 1 зафиксировал присутствие
if (UseResetSonar && !(distance > 0)) digitalWrite(Sonar1reset, LOW); // перезапуск зависшего сонара - отключить питание до конца цикла
}
else Sensor1 = (digitalRead(PIR1out) == LOW); // PIR : сенсор 1 зафиксировал присутствие
Sensor1_ON = Sensor1 && !(Sensor1_IgnoreCount > 0); // счетчик игнорирования сенсора 1 не более 0 - сформировать управляющий сигнал
if (Sensor1 && !Memory1) { // фронт срабатывания сенсора 1
if (Sensor1_IgnoreCount > 0) Sensor1_IgnoreCount-- ; // если требуется игнорировть сонар 1, декремент счетчика игнорирования сенсора 1 (вероятно, кто-то закончил спуск по лестнице)
else Sensor2_IgnoreCount++ ; // иначе, инкремент счетчика игнорирования сенсора 2 (вероятно, кто-то начал подниматься по лестнице)
}
Memory1 = Sensor1 ; // запомнить состояние сенсора
// - проверить состояние "ВЕРХНЕГО" сенсора
if (!SensorPIR) { // сканирование пространства перед сонаром 2
digitalWrite(Sonar2trig, HIGH);
delayMicroseconds(10);
digitalWrite(Sonar2trig, LOW);
byte distance = pulseIn(Sonar2echo, HIGH, 5000) / 58 ; // расчет дистанции до препятствия (5000 - таймаут, то есть не ждать сигнала более 5мс)
Sensor2 = (distance > 0) && (distance <= Sonar2limit); // SRF05 : сонар 2 зафиксировал присутствие
if (UseResetSonar && !(distance > 0)) digitalWrite(Sonar2reset, LOW); // перезапуск зависшего сонара - отключить питание до конца цикла
}
else Sensor2 = (digitalRead(PIR2out) == LOW); // PIR : сенсор 2 зафиксировал присутствие
Sensor2_ON = Sensor2 && !(Sensor2_IgnoreCount > 0); // счетчик игнорирования сенсора 2 не более 0 - сформировать управляющий сигнал
if (Sensor2 && !Memory2) { // фронт срабатывания сенсора 2
if (Sensor2_IgnoreCount > 0) Sensor2_IgnoreCount-- ; // если требуется игнорировть сонар 2, декремент счетчика игнорирования сенсора 2 (вероятно, кто-то закончил подъем по лестнице)
else Sensor1_IgnoreCount++ ; // иначе, инкремент счетчика игнорирования сенсора 1 (вероятно, кто-то начал спускаться по лестнице)
}
Memory2 = Sensor2 ; // запомнить состояние сенсора
// - освещение лестницы включено
if (AllLightOn) { // если лестница находится во включенном состоянии, можно сбросить флаги-"потеряшки" на всякий случай
ON_BottomTop = false; // включение освещения снизу вверх
ON_TopBottom = false; // включение освещения сверху вниз
}
// - действия при срабатывания "НИЖНЕГО" сенсора
if (Sensor1_ON && InitialState) ON_BottomTop = true; // при срабатывании сенсора из исходного состояния лестницы начать включение освещения ступеней снизу вверх
else if (Sensor1_ON && AllLightOn) AllLight_OffDelay = LightOFF_Delay ; // если освещение уже полностью включено, обновить отсчет задержки выключения освещения
else if (Sensor1_ON && OFF_BottomTop) { // если происходит выключение освещения ступеней снизу вверх,
OFF_BottomTop = false; // прекратить выключение освещения
ON_BottomTop = true; // вновь начать включение освещения ступеней снизу вверх
}
/*
else if (Sensor1_ON && ON_TopBottom) { // если происходит включение освещения ступеней сверху вниз
ON_TopBottom = false; // прекратить включение освещения сверху вниз
ON_BottomTop = true; // начать включение освещения ступеней снизу вверх
}
*/
else if (Sensor1_ON && OFF_TopBottom) { // если происходит выключение освещения ступеней сверху вниз
OFF_TopBottom = false; // прекратить выключение освещения сверху вниз
ON_BottomTop = true; // начать включение освещения ступеней снизу вверх
}
// - действия при срабатывания "ВЕРХНЕГО" сенсора
if (Sensor2_ON && InitialState) ON_TopBottom = true; // при срабатывании сенсора из исходного состояния лестницы начать включение освещения ступеней сверху вниз
else if (Sensor2_ON && AllLightOn) AllLight_OffDelay = LightOFF_Delay ; // если освещение уже полностью включено, обновить отсчет задержки выключения освещения
else if (Sensor2_ON && OFF_TopBottom) { // если происходит выключение освещения ступеней сверху вниз
OFF_TopBottom = false; // прекратить выключение освещения
ON_TopBottom = true; // вновь начать включение освещения ступеней сверху вниз
}
/*
else if (Sensor2_ON && ON_BottomTop) { // если происходит включение освещения ступеней снизу вверх
ON_BottomTop = false; // прекратить включение освещения снизу вверх
ON_TopBottom = true; // начать включение освещения ступеней сверху вниз
}
*/
else if (Sensor2_ON && OFF_BottomTop) { // если происходит выключение освещения ступеней снизу вверх
OFF_BottomTop = false; // прекратить выключение освещения снизу вверх
ON_TopBottom = true; // начать включение освещения ступеней сверху вниз
}
// - определение необходимости и направления выключения освещения
if (AllLightOn && !(AllLight_OffDelay > 0)) { // пора гасить освещение
OFF_BottomTop = !direct; // снизу вверх
OFF_TopBottom = direct; // сверху вниз
}
// - управление включением/выключением освещения ступеней
if (ON_BottomTop) BottomTopLightON(); // вызов процедуры включения ступеней снизу вверх
if (OFF_BottomTop) BottomTopLightOFF(); // вызов процедуры выключения ступеней снизу вверх
if (ON_TopBottom) TopBottomLightON(); // вызов процедуры включения ступеней сверху вниз
if (OFF_TopBottom) TopBottomLightOFF(); // выключение ступеней сверху вниз
PWM_Output(); // передать в LED-драйвер актуальные уровни яркости
// - завершение цикла
delay(50); // задержка для обеспечения паузы перед следующим опросом сонаров
if (!SensorPIR) { // восстановление питания, если был перезапуск сонаров
digitalWrite (Sonar1reset, HIGH); // всегда должен быть HIGH, для перезапуска сонара 1 установить в LOW
digitalWrite (Sonar1reset, HIGH); // всегда должен быть HIGH, для перезапуска сонара 2 установить в LOW
}
ActTime = millis(); // отметка времени для расчета длительности цикла
Cycle = ActTime - PreTime; // прошло времени с предыдущего цикла программы
if (AllLight_OffDelay > 0) AllLight_OffDelay = AllLight_OffDelay - Cycle; // если время освещения лестницы не истекло, уменьшить на длительность цикла
else AllLight_OffDelay = 0; // иначе, время до начала отключения освещения = 0
PreTime = millis(); // отметка времени для расчета длительности цикла
}
// ===== ПРОЦЕДУРА ВКЛЮЧЕНИЯ СНИЗУ ВВЕРХ - ПОСЛЕДОВАТЕЛЬНОЕ УВЕЛИЧЕНИЕ УРОВНЕЙ ЯРКОСТИ СТУПЕНЕЙ ===============
void BottomTopLightON() {
direct = false; // запомнить направление = снизу вверх
for (byte i = 0; i < N; i++) { // перебор ступеней снизу вверх
if (StairsPWMValue[i] < 1) { // если очередная ступень выключена,
StairsPWMValue[i] = 5; // задать для неё начальный уровень яркости
return; // и выйти из процедуры
}
else if (StairsPWMValue[i] < 4095 ){ // иначе, если уровень яркости ступени меньше максимального,
StairsPWMValue[i] = StairsPWMValue[i] * Speed ; // увеличить уровень яркости
if (StairsPWMValue[i] > 4095 ) StairsPWMValue[i] = 4095 ; // ограничить максимальную яркость
return; // и выйти из процедуры
}
}
AllLightOn = true; // освещение лестницы полностью включено
AllLight_OffDelay = LightOFF_Delay;
ON_BottomTop = false; // закончить включение ступеней снизу вверх
}
// ===== ПРОЦЕДУРА ВЫКЛЮЧЕНИЯ СНИЗУ ВВЕРХ - ПОСЛЕДОВАТЕЛЬНОЕ СНИЖЕНИЕ УРОВНЕЙ ЯРКОСТИ СТУПЕНЕЙ ===============
void BottomTopLightOFF() {
AllLightOn = false; // сбросить признак того, что освещение лестницы полностью включено
for (byte i = 0; i < N ; i++) { // перебор ступеней снизу вверх
if (((i == 0) || (i == N-1)) && (StairsPWMValue[i] > PWM_InitialValue)) { // если это первая или последняя ступень и уровень яркости выше дежурного уровня,
StairsPWMValue[i] = StairsPWMValue[i] / Speed ; // уменьшить яркость
if (StairsPWMValue[i] < PWM_InitialValue ) StairsPWMValue[i] = PWM_InitialValue ; // ограничить минимальную яркость
return; // и выйти из процедуры
}
else if ((i != 0) && (i != N-1) && (StairsPWMValue[i] > 0)) { // для остальных ступеней, если уровень яркости выше "0",
StairsPWMValue[i] = StairsPWMValue[i] / Speed ; // уменьшить яркость
if (StairsPWMValue[i] < 5 ) StairsPWMValue[i] = 0 ; // ограничить минимальную яркость
return; // и выйти из процедуры
}
}
OFF_BottomTop = false; // закончить выключение ступеней снизу вверх
}
// ===== ПРОЦЕДУРА ВКЛЮЧЕНИЯ СВЕРХУ ВНИЗ - ПОСЛЕДОВАТЕЛЬНОЕ УВЕЛИЧЕНИЕ УРОВНЕЙ ЯРКОСТИ СТУПЕНЕЙ ===============
void TopBottomLightON() {
direct = true; // запомнить направление = сверху вниз
for (byte i = N; i > 0; i--) { // перебор ступеней сверху вниз
if (StairsPWMValue[i-1] < 1) { // если очередная ступень выключена,
StairsPWMValue[i-1] = 5; // задать для неё начальный уровень яркости
return; // и выйти из процедуры
}
else if (StairsPWMValue[i-1] < 4095 ){ // иначе, если уровень яркости ступени меньше максимального,
StairsPWMValue[i-1] = StairsPWMValue[i-1] * Speed ; // увеличить уровень яркости
if (StairsPWMValue[i-1] > 4095 ) StairsPWMValue[i-1] = 4095 ; // ограничить максимальную яркость
return; // и выйти из процедуры
}
}
AllLightOn = true; // освещение лестницы полностью включено
AllLight_OffDelay = LightOFF_Delay;
ON_TopBottom = false; // закончить включение ступеней сверху вниз
}
// ===== ПРОЦЕДУРА ВЫКЛЮЧЕНИЯ СВЕРХУ ВНИЗ - ПОСЛЕДОВАТЕЛЬНОЕ СНИЖЕНИЕ УРОВНЕЙ ЯРКОСТИ СТУПЕНЕЙ ================
void TopBottomLightOFF() {
AllLightOn = false; // сбросить признак того, что освещение лестницы полностью включено
for (byte i = N ; i >0; i--) { // перебор ступеней вниз, начиная с верхней
if (((i == 1) || (i == N)) && (StairsPWMValue[i-1] > PWM_InitialValue)) { // если это первая или последняя ступень и уровень яркости выше дежурного уровня,
StairsPWMValue[i-1] = StairsPWMValue[i-1] / Speed ; // уменьшить яркость
if (StairsPWMValue[i-1] < PWM_InitialValue ) StairsPWMValue[i-1] = PWM_InitialValue ; // ограничить минимальную яркость
return; // и выйти из процедуры
}
else if ((i != 1) && (i != N) && (StairsPWMValue[i-1] > 0)) { // для остальных ступеней, если уровень яркости выше "0",
StairsPWMValue[i-1] = StairsPWMValue[i-1] / Speed ; // уменьшить яркость
if (StairsPWMValue[i-1] < 5 ) StairsPWMValue[i-1] = 0 ; // ограничить минимальную яркость
return; // и выйти из процедуры
}
}
OFF_TopBottom = false; // закончить выключение ступеней сверху вниз
}
// ===== ПРОЦЕДУРА ПЕРЕДАЧИ УПРАВЛЯЮЩИХ СИГНАЛОВ В LED-ДРАЙВЕР TLC 5940 =======================================
void PWM_Output() {
for (int i = 0; i < 16; i++) Tlc.set(i, StairsPWMValue[i]); // яркость ступеней в диапазоне 0...4096
Tlc.update();
}
всем привет давно читаю этот форум подскажите вместо двух канального IRF7314 какой можно использовать одноканальный мосфет. RFP15P05 MOSFET ,IRF4905 MOSFET ,IRF9510 MOSFET ,IRF9520 MOSFET ,IRFI9630G MOSFET, KP507A MOSFET ,FQU11P06 MOSFET ,2SJ135 MOSFET
Всем добрый день. Максим подскажите я взял ваш скетч все работает все хорошо только есть один вопрос. Помогите почему ночью загорается лестница когда все спят. ультразвуковой датчик стоит на 90 см ширина лестници от стенки ло стенки 102 см. а она срабатывает
//Устанавливаем контакты для первого датчика
#define T1 12
#define E1 13
//Устанавливаем контакты для второго датчика
#define T2 11
#define E2 10
//Устанавливаем контакты для драйвера
#define DATA 6
#define CLOCK 7
//Устанавливаем контакт фоторезистора
#define FOTO A0
//Задаем количество светодиодов
#define NUM_LEDS 19
const uint32_t mask = 0b11111111111111111111;
void setup()
{
pinMode(T1, OUTPUT);
pinMode(T2, OUTPUT);
pinMode(E1, INPUT);
pinMode(DATA, OUTPUT);
pinMode(CLOCK, OUTPUT);
digitalWrite(CLOCK, HIGH);
digitalWrite(FOTO, HIGH);
}
void loop()
{
static bool state;
if(analogRead(FOTO) > 1000) state = 1; // порог освещенности включения
if(analogRead(FOTO) < 990) state = 0; // порог освещенности выключения
if(state)
{
int D1 = Ultrasonic(T1, E1); // измеряем расстояние первого датчика
if(D1 > 0 && D1 < 90) // если расстояние меньше 100см, то
{
for(char i = NUM_LEDS-3; i >= 0; i--) // зажигаем светодиоды в одну сторону
{
MM5450(mask<<i);
delay(400); // задержка зажигания
}
delay(60000); // ждем 3 секунды
for(char i = 0; i <= NUM_LEDS; i++) // тушим светодиоды
{
MM5450(mask>>i);
delay(400); // задержка затухания
}
}
int D2 = Ultrasonic(T2, E2); // измеряем расстояние второго датчика
if(D2 > 0 && D2 < 90) // если расстояние меньше 100см, то
{
for(char i = NUM_LEDS-1; i >= 0; i--) // зажигаем светодиоды в другую сторону
{
MM5450(mask>>i);
delay(400); // задержка зажигания
}
delay(60000); // ждем 3 секунды
for(char i = 0; i <= NUM_LEDS; i++) // тушим светодиоды
{
MM5450(mask<<i);
delay(400); // задержка затухания
}
}
}
delay(20);
}
int Ultrasonic(byte Trig_pin, byte Echo_pin)
{
digitalWrite(Trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(Trig_pin, LOW);
return pulseIn(Echo_pin, HIGH, 20000)/29.0/2;
}
void MM5450(uint32_t data)
{
digitalWrite(DATA, 1);
digitalWrite(CLOCK, LOW);
digitalWrite(CLOCK, HIGH);
for(byte i = 0; i < NUM_LEDS; i++)
{
if(data & (1UL<<i)) digitalWrite(DATA, HIGH);
else digitalWrite(DATA, LOW);
digitalWrite(CLOCK, LOW);
digitalWrite(CLOCK, HIGH);
}
digitalWrite(DATA, 0);
for(byte i = 0; i < 35-NUM_LEDS; i++)
{
digitalWrite(CLOCK, LOW);
digitalWrite(CLOCK, HIGH);
}
}
Всем привет! взял код на этом форуме,подпилил под 10 ступеней с подсветкой 1 и 10 ступени,а кто-нибудь дошёл до момента встречного прохожева? Имею ввиду,чтоб после прохождения встречного человека после себя подсветка тухло в обратную сторону?
//Устанавливаем контакты для драйвера
#define DATA 6
#define CLOCK 7
//Устанавливаем контакт фоторезистора
#define FOTO A0
//Устанавливаем контакты для первого датчика
#define T1 12
#define E1 13
//Устанавливаем контакты для второго датчика
#define T2 10
#define E2 11
//Устанавливаем контакт управления яркостью светодиодов
#define BR 9
const byte brightset = 255;
//Задаем количество светодиодов
#define NUM_LEDS 10
const uint32_t mask = 0b1111111111;
void setup()
{
pinMode(DATA, OUTPUT);
pinMode(CLOCK, OUTPUT);
digitalWrite(CLOCK, HIGH);
digitalWrite(FOTO, HIGH);
pinMode(BR, OUTPUT);
pinMode(T1, OUTPUT);
pinMode(T2, OUTPUT);
pinMode(E1, INPUT);
pinMode(E2, INPUT);
digitalWrite(E1, HIGH);
digitalWrite(E2, HIGH);
FirstLast();
}
void loop()
{
static bool state;
if(analogRead(FOTO) > 1000) state = 1; // порог освещенности включения
else analogWrite(9, LOW); // выключаем ночную подсветку
if(analogRead(FOTO) < 990) state = 0; // порог освещенности выключения
else analogWrite(9, HIGH); // включаем ночную подсветку
if(state)
{
int D1 = Ultrasonic(T1, E1); // измеряем расстояние первого датчика
if(D1 > 0 && D1 < 70) // если расстояние меньше 70см, то
{
analogWrite (BR, brightset);
for(char i = NUM_LEDS-1; i >= 0; i--) // зажигаем светодиоды в одну сторону
{
MM5450(mask<<i);
delay(300); // задержка зажигания
}
delay(15000); // ждем 15 секунд
for(char i = 0; i <= NUM_LEDS; i++) // тушим светодиоды
{
MM5450(mask>>i);
delay(300); // задержка затухания
}
FirstLast();
}
int D2 = Ultrasonic(T2, E2); // измеряем расстояние второго датчика
if(D2 > 0 && D2 < 70) // если расстояние меньше 70см, то
{
analogWrite (BR, brightset);
for(char i = NUM_LEDS-1; i >= 0; i--) // зажигаем светодиоды в другую сторону
{
MM5450(mask>>i);
delay(300); // задержка зажигания
}
delay(15000); // ждем 15 секунд
for(char i = 0; i <= NUM_LEDS; i++) // тушим светодиоды
{
MM5450(mask<<i);
delay(300); // задержка затухания
}
FirstLast();
}
delay(20);
}
}
void FirstLast()
{
analogWrite (BR, 20);
MM5450(0b1000000001);
}
int Ultrasonic(byte Trig_pin, byte Echo_pin)
{
digitalWrite(Trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(Trig_pin, LOW);
return pulseIn(Echo_pin, HIGH, 20000)/29.0/2;
}
void MM5450(uint32_t data)
{
digitalWrite(DATA, 1);
digitalWrite(CLOCK, LOW);
digitalWrite(CLOCK, HIGH);
for(byte i = 0; i < NUM_LEDS; i++)
{
if(data & (1UL<<i)) digitalWrite(DATA, HIGH);
else digitalWrite(DATA, LOW);
digitalWrite(CLOCK, LOW);
digitalWrite(CLOCK, HIGH);
}
digitalWrite(DATA, 0);
for(byte i = 0; i < 35-NUM_LEDS; i++)
{
digitalWrite(CLOCK, LOW);
digitalWrite(CLOCK, HIGH);
}
}
Lotosss86 пишет:
Всем привет! взял код на этом форуме,подпилил под 10 ступеней с подсветкой 1 и 10 ступени,а кто-нибудь дошёл до момента встречного прохожева? Имею ввиду,чтоб после прохождения встречного человека после себя подсветка тухло в обратную сторону?
Всем привет! взял код на этом форуме,подпилил под 10 ступеней с подсветкой 1 и 10 ступени,а кто-нибудь дошёл до момента встречного прохожева? Имею ввиду,чтоб после прохождения встречного человека после себя подсветка тухло в обратную сторону?
Я так понимаю, надо механизм данной проги менять с delay на работу с таймером либо прерывания по событиям вводить. Во время выполнения delay проц тупо стоит и ждет окончания времени заданного в delay. Ну и соответственно, не опрашивая датчики не знает о следующем лестницеходце. Смотрите текст проги, например в строке 055 пауза 15с. Все 15 с ардуинка в паузе и ничего больше не может делать.
Есть предложения по алгоритму работы? Лестница домашняя и толпы народа туда-сюда одновременно бегать не будут. Вполне достаточно 2 вариантов: после или во время вашего прохода кто-то пошёл следом за вами и после вашего прохода кто-то пошёл в другую сторону, а подсветка вызванная вами ещё не закончилась. У меня лестница двухмаршевая с площадкой посередине. Если одновременно пойдут навстречу друг другу, то что делать?
Я, кстати, взял за основу программу из поста #452 и добавил в неё бегущую тень от Myero. (У меня 15 ступеней, схема на драйвере 5450 и мофсетах). Контроллер простенький Atmega328 (вариант Arduino Nano). В этом контроллере есть 3 таймера, T1 16-разрядный, но он же работает и на PWM в 9 порту (где регулирвка яркости и выставляется). и 2 8-разрядные. Есть ещё ограничение, если опрашивать датчики по прерываниям от таймера, то не получается использовать задержку 20мс в опросе сонаров, т.к. delay в прерываниях не работает. Надо кумекать...этак придется перелопатить всю прогу...
/*
* M5451 LED driver chip
* Author: G. Andrew Stone
* Public Domain
*/
int myClockPin = 7; // Arduino pin that goes to M5451 clock
int mySerDataPin = 6; // Arduino pin that goes to M5451 data
void setup() // run once, when the sketch starts
{
Serial.begin(9600);
}
#define M5451_NUMOUTS 35
#define M5451_CLK 0
class M5451
{
public:
byte clockPin;
byte brightPin;
byte serDataPin;
M5451(byte clockPin,byte serDataPin,byte brightPin);
void set(unsigned long int a, byte b=0);
void setBrightness(byte b);
private:
void mydelay(int clk);
};
void M5451::setBrightness(byte b)
{
if (brightPin < 0xff)
analogWrite(brightPin,b);
}
#define MaxBrightness 4096 //256
class FlickerBrightness:public M5451
{
public:
FlickerBrightness(byte clkPin, byte dataPin, byte brightnessPin);
void shift(int amt=1)
{
offset+=amt;
if (offset>=M5451_NUMOUTS) offset -=M5451_NUMOUTS;
else if (offset< 0) offset +=M5451_NUMOUTS;
}
void loop(void);
int brightness[M5451_NUMOUTS];
int bresenham[M5451_NUMOUTS];
int iteration;
int offset;
};
FlickerBrightness::FlickerBrightness(byte clkPin, byte dataPin,byte
brightnessPin):M5451(clkPin,dataPin,brightnessPin)
{
for (int i=0;i < M5451_NUMOUTS;i++)
{
brightness[i] = 0;
bresenham[i] = 0;
}
iteration = 0;
offset = 0;
}
void FlickerBrightness::loop(void)
{
int i;
byte pos;
unsigned long int a=0;
byte b=0;
boolean lvl=false;
for (i=0,pos=offset;i < M5451_NUMOUTS;i++,pos++)
{
if (pos>=M5451_NUMOUTS) pos=0;
bresenham[i] += brightness[pos];
if (bresenham[i]>=MaxBrightness)
{
bresenham[i] -= MaxBrightness;
lvl = true;
}
else lvl = false;
if (i<32) a = (a<<1)|lvl;
else b = (b<<1)|lvl;
}
iteration++;
if (iteration > MaxBrightness) iteration = 0;
set(a,b);
}
M5451::M5451(byte clkPin, byte dataPin, byte brightnessPin)
{
int i;
clockPin = clkPin;
serDataPin = dataPin;
brightPin = brightnessPin;
pinMode(clkPin, OUTPUT); // sets the digital pin as output
pinMode(serDataPin, OUTPUT); // sets the digital pin as output
pinMode(brightPin,OUTPUT);
// Clear out the device so we can clock in items
digitalWrite(serDataPin,LOW);
for (i=0;i< M5451_NUMOUTS+2;i++)
{
mydelay(M5451_CLK);
digitalWrite(clockPin,HIGH);
mydelay(M5451_CLK);
digitalWrite(clockPin,LOW);
}
}
void M5451::mydelay(int clk)
{
int i;
for (i=0;i< clk;i++);
//delay(clk);
}
void M5451::set(unsigned long int a, byte b)
{
int i;
// Write the initial "start" signal
digitalWrite(clockPin,LOW);
digitalWrite(serDataPin,LOW);
mydelay(M5451_CLK);
digitalWrite(clockPin,HIGH);
mydelay(M5451_CLK);
digitalWrite(clockPin,LOW);
mydelay(M5451_CLK/2);
digitalWrite(serDataPin,HIGH);
mydelay(M5451_CLK/2);
digitalWrite(clockPin,HIGH);
mydelay(M5451_CLK);
digitalWrite(clockPin,LOW);
// Write the bits
for (i=0;i< M5451_NUMOUTS;i++)
{
int serDataVal;
if (i<32) { serDataVal = (a&1); a >>=1;}
else { serDataVal = (b&1); b>>=1;}
mydelay(M5451_CLK/2);
digitalWrite(serDataPin,serDataVal);
mydelay(M5451_CLK/2);
digitalWrite(clockPin,HIGH);
mydelay(M5451_CLK);
digitalWrite(clockPin,LOW);
}
}
void loop() // run over and over again
{
unsigned long int j;
int i;
FlickerBrightness leds(myClockPin,mySerDataPin,9);
Serial.print("clockpin: ");
Serial.println(myClockPin);
Serial.print("datapin: ");
Serial.println(mySerDataPin);
leds.setBrightness(255);
for (i=3;i>=0;i--)
{
for (j=0;j<35;j++)
{
leds.set(1L<< j,(j>=32) ? 1L<<(j-32):0);
delay(10*i);
}
}
// Proportional fading
if (1) for (j=0;j<200;j++)
{
for (i=0;i< M5451_NUMOUTS;i++)
{
int k = 1<<(j%13);
if ((i&3)<2)
{
if (leds.brightness[i] < 35) leds.brightness[i] = 35;
else leds.brightness[i] +=
leds.brightness[i]>>2;
}
else
{
if (leds.brightness[i] < 35) leds.brightness[i] =
MaxBrightness;
else leds.brightness[i] -=
leds.brightness[i]>>2;
}
}
for (i=0;i<100;i++) leds.loop();
}
leds.set(0xffffffff,0xff); /* ALL ON */
delay(250);
leds.set(0,0); /* ALL OFF */
delay(250);
// Linear per-LED brightness method
if (1) for (j=0;j<4096;j++)
{
for (i=0;i< M5451_NUMOUTS;i++)
{
int k = j*10;
if (i&1)
{
leds.brightness[i] = abs((k&(MaxBrightness*2-1))-
MaxBrightness);
}
else
leds.brightness[i] = MaxBrightness -
abs((k&(MaxBrightness*2-1))-MaxBrightness);
}
for (i=0;i<10;i++) leds.loop();
}
// ALL FADE using M5451 Brightness feature
leds.set(0xffffffff,0xff); /* ALL ON */
for (j=1;j<5;j++)
{
for (i=0;i<256;i++)
{
leds.setBrightness(i&255);
delay(j);
}
for (i=255;i>=0;i--)
{
leds.setBrightness(i&255);
delay(j);
}
}
leds.setBrightness(255);
leds.set(0xffffffff,0xff); /* ALL ON */
delay(250);
leds.set(0,0); /* ALL OFF */
delay(250);
// MARQUEE
for (i=0;i< M5451_NUMOUTS;i++) // Clear all LEDs to black
{
leds.brightness[i]=0;
}
// Turn on a couple to make a "comet" with dimming tail
leds.brightness[0] = MaxBrightness-1;
leds.brightness[1] = MaxBrightness/2;
leds.brightness[2] = MaxBrightness/4;
leds.brightness[3] = MaxBrightness/8;
leds.brightness[4] = MaxBrightness/16;
leds.brightness[5] = MaxBrightness/64;
leds.brightness[6] = MaxBrightness/100;
for (j=0;j<100;j++)
{
leds.shift(1);
for (i=0;i<150;i++) leds.loop();
}
for (j=0;j<100;j++)
{
leds.shift(-1);
for (i=0;i<100;i++) leds.loop();
}
if (1)
{
leds.set(0xffffffff,0x7);
delay(1000);
leds.set(0xf0f0f0f0,0x7);
delay(10000);
leds.set(0x11111111,0x1);
delay(10000);
}
}
Здрасти господа, подскажите, никто не сталкивался с проблемой, что датчики срабатывают с задержкой, то есть когда просто проходишь лестница не запускается, приостанавливаешься напротив датчика, тогда ступеньки пошли тикать.
В принципе у меня все просто реализовал на реле. Прошу сильно не пинать это мое знакомство с ардуино.
Пока собирал ее, задавал себе много вопросов ( не буду обо всем ), в итоге пришел к тому, что нужно 3 датчика. Так же как у всех один внизу, другой вверху. А 3-й поставил посредине, датчик движения, т е пока есть какое-либо движение на лестнице, она будет светиться. Пришел к этому, так : в доме семья большая, постоянно кто то ходит, не только на встречу, могут остановиться на лестницы что б обмолвиться словечком, кто пошел и передумал, вернулся ... вообщем много чего, задержку тут ни как не запрограммируешь. Ни где в других проектах этого не вижу, потому мне они не нравятся.
Выключается лестница в направлении, где последний раз сработал SR04, а не как у других по направлению.
Еще, не стал добавлять режим плавного включения, так как вся лестница загорается быстро (2-3 сек), эффект почти не виден, по этой же причине не стал делать встречное включение. Когда кто то пошел на встречу, свет к нему уже прибежит. Первая и последния ступень у меня не светиться в режиме ожидания, хотя в скетч предусмотрено. Подумал, всю ночь будет гореть, зачем это надо. Если даже кто и встанет, до нее в потемках не пойдет, вкл какой-нибудь свет.
Предусмотрел включение света комнаты с телефона. Удобно когда спустился вниз, а свет забыл вверху выключить. Оказалось еще удобно когда ложишься спать, выкл свет. Так через телефон есть пару настроек, хочу их модернизировать для лестницы.
Удобно когда спустился вниз, а свет забыл вверху выключить. Оказалось еще удобно когда ложишься спать, выкл свет. Так через телефон есть пару настроек, хочу их модернизировать для лестницы.
С телефоном спать ложитесь? А просто таймер на выключение или не хотите как у всех?
Влажность и температура - для вкл вытяжки, это надо весь проект смотреть.
Зачем ужа с ежом скрещивать? Если проект называете "Подсветка лестницы. 16 ступенек.", т.е. чисто освещение, причем, именно освещение для лестницы, то зачем ещё управление вытяжкой?
Olegumar пишет:
Ссылку которую дал, там ни чего нового, так же 2 датчика, знакомая схема и т д.
Согласен, для новезны L298N - самое то! А почему не использовать как выше рекомендуют, например, IRF7314?
Здрасти господа, подскажите, никто не сталкивался с проблемой, что датчики срабатывают с задержкой, то есть когда просто проходишь лестница не запускается, приостанавливаешься напротив датчика, тогда ступеньки пошли тикать.
В Вашем случае это естественно, т.к. понатыкано куча delay.
С телефоном спать ложитесь? А просто таймер на выключение или не хотите как у всех?
Многие пользуются телефон как будильником, потому он всегда рядом.
qbit пишет:
Зачем ужа с ежом скрещивать? Если проект называете "Подсветка лестницы. 16 ступенек.", ...
Если ардуинка еще может что делать одновременно , почему и нет ... Экономия не только финансовая
qbit пишет:
Согласен, для новезны L298N - самое то! А почему не использовать как выше рекомендуют, например, IRF7314?
Еще раз напишу, когда начинал собирать, не знал из чего. Понимал что из транзисторов лучше и дешевле, но как подобрать не знаю, плюс ко всему надо еще под них плату лудить, что ни разу не делал.
Искал модули под ардуино, единственное что нашел это 520 транзистор, но он меня не устроил. До кучи из начально хотел делать из RGB ленты, для нее 298 отлично подходят. Управляя плюсом, на выходе можно получить либо плюс, либо минус. Мой скетч и сейчас не сложно доделать и он будет светить разными цветами, как я и хотел. После каждого срабатывания датчика меняется цвет.
В итоге у меня получилось минимум пайки. Даже из сдвиг регистров сделал модуль.
И это еще не все что может мой скетч. Предусмотрена передача данных другой ESP (другой проект). Вообщем автоматизирую дом, типа "умный дом"
Вообще сюда заглянул, потому что мало инфы в инете про М5450. Интересует как лучше подключить 2шт. Могут ли они работать как сдвиг регистры в цепочке? И вообще принцеп их работы. Везде только и дают ссылку на даташе на анг, для меня это ни о чем.
Здрасти господа, подскажите, никто не сталкивался с проблемой, что датчики срабатывают с задержкой, то есть когда просто проходишь лестница не запускается, приостанавливаешься напротив датчика, тогда ступеньки пошли тикать.
digitalWrite(Relay2, HIGH);
delay(200);
digitalWrite(Relay3, HIGH);
delay(200);
digitalWrite(Relay4, HIGH);
delay(200);
У тебя идет постоянное выкл, и как уже сказали, с задержкой delay(200);. Пока они все не сработают, датчик не сработает.
12*200=2400мс, т е почти 2,5 сек задержка А если учесть что будет выкл в одну сторону, а потом в другую, то это уже 5сек.
проект давно устарел, сейчас такое делается в 10 раз проще на одной ленте адресных диодов
Уважаемый B707, ссылку на новый проект не подскажете. Вариант с этой темы я уже сделал, но, возможно, нужен будет еще один. С этим действительно много возни, особенно с платой.
Доброго времени, Уважаемые. Как я писал ранее, всё было уже сделано и проверено на столе, но ждало своего часа для установки. В прошлую субботу установил уже на лестницу и настроил расстояния и освещение. И тут вылезла одна хрень - самопроизвольное срабатывание датчиков движения... В мониторе порта: всё нормально, расстояния до ближайшего препятствия указываются корректно (120см верх и 261см низ), затем резко 0см и пошла работать подсветка... Провода к верхнему датчику длиной ~ 2.5 - 3м (6 проводов в одном кабеле без экрана): 4 - на датчик движения + 2 - на фоторезистор), Провода к нижнему датчику идут вместе с проводами ступеней в одном жгуте 7 метров - использован телефонный кабель https://datastream.by/25_parnyy_telefonnyy_neekranirovannyy_utp_kabel/ , изоляция и экран убраны, пересажен в термоизоляцию с отводами на каждую ступеньку и датчик движения.
Подскажите в чем причина. Контроллер 5450, транзисторные сборки на IRF7314.
С выходов контроллера IRF7314 подключены через резисторы по 1К.
Плавный поджиг работает с одним из последних скетей, но плавное затухание не происходит!
Если же со входов IRF7314 дать резистор к питаню, вообще ничего не работает, пробовал другие скетчи, но тогда в таком исполенние не работает плавный поджиг, сразу диоды по одному врубаються...
Уже натыкался так что спалил один контроллер(
Сложно... нарисуйте от руки схему подключения и какой именно скетч использовали.
Сложно... нарисуйте от руки схему подключения и какой именно скетч использовали.
Каким то чудом заработало)) Видно мастера боиться)) - Вас;)
Для чего нужны диоды D1-D4 на схеме?
Там в 404 посте уже спрашивали и обсуждали. Сами не знаем) там светодиодики наверно поставили. Ну покажет что лестница работает в коробке
Это кто-то таким решением сделал дежурную подсветку 1-ой и последней ступеней, без D1-D4 эти две ступеньки будут включаться параллельно.
Не подскажите, где рыть, скетч из 452 поста от уважаемого Ahtung533, все работает и настраевается под себя любимого, кроме одного -в дневном режиме первый и последний светодиоды горят в пол накала, что должно иметь место в ночном режиме,как только фоторезистор закрываю- они наоборот гаснут, и все работате штатно. Что где изменить подскажите к понедельнику лесенку должны собрать уже.
В коде вроде пытался поменять высокий уровень на низкий
Всем доброго времени суток. Подскажите пожалуйста , где взять источник этой чудо лестницы (схема, скетч , описание и т.д ), повторить все это точь в точь мне подсилу, а вот исправить, дополнить--- я в этом полный ноль. Большое СПАСИБО!!!
Для начала почитай всю ветку, начиная с первого поста. Здесь есть и схемы, и скетчи, так что любому начинающему не составит труда в повторении "этой чудо лестницы".
Я использую такой датчик http://www.uctronics.com/gy-30-bh1750fvi-intensity-digital-light-sensor-module-for-arduino-p-1494.html
извините можно вопрос тоже по освещению лестницы. если мне не интересуют плавный запуск и затухание светодиодов можно ли релизовать через ардуино + блок на 16 реле допустим?
Всем доброго времени суток. Суть токова,код не мои надо чтобы посмотрели и поеснили про плавный запуск и затухание . Сеичас плавный запуск и затухание происходит рывками. пробовал с настроиками
нечего не получилось, все ровно мерцает
А вот и сам код
всем привет давно читаю этот форум подскажите вместо двух канального IRF7314 какой можно использовать одноканальный мосфет. RFP15P05 MOSFET ,IRF4905 MOSFET ,IRF9510 MOSFET ,IRF9520 MOSFET ,IRFI9630G MOSFET, KP507A MOSFET ,FQU11P06 MOSFET ,2SJ135 MOSFET
Заранее спасибо за ответ
Всем добрый день. Максим подскажите я взял ваш скетч все работает все хорошо только есть один вопрос. Помогите почему ночью загорается лестница когда все спят. ультразвуковой датчик стоит на 90 см ширина лестници от стенки ло стенки 102 см. а она срабатывает
Можно конечно но тогда будут присутствовать постоянное щелканье плюс износ реле
Все же лучше собрать на драйвере
.
Я так понимаю, надо механизм данной проги менять с delay на работу с таймером либо прерывания по событиям вводить. Во время выполнения delay проц тупо стоит и ждет окончания времени заданного в delay. Ну и соответственно, не опрашивая датчики не знает о следующем лестницеходце. Смотрите текст проги, например в строке 055 пауза 15с. Все 15 с ардуинка в паузе и ничего больше не может делать.
ну наверно какбы да,я в программировании не силён,но если будет что-то похожее,то слепить думаю получится,вот найти бы похожий код было бы здорово!
Есть предложения по алгоритму работы? Лестница домашняя и толпы народа туда-сюда одновременно бегать не будут. Вполне достаточно 2 вариантов: после или во время вашего прохода кто-то пошёл следом за вами и после вашего прохода кто-то пошёл в другую сторону, а подсветка вызванная вами ещё не закончилась. У меня лестница двухмаршевая с площадкой посередине. Если одновременно пойдут навстречу друг другу, то что делать?
ну тут логичнее чтоб после задержки по времени отключение пошло с середины лестницы в разные концы...
а таймер обновлялся после каждого срабатывания датчика.
Я, кстати, взял за основу программу из поста #452 и добавил в неё бегущую тень от Myero. (У меня 15 ступеней, схема на драйвере 5450 и мофсетах). Контроллер простенький Atmega328 (вариант Arduino Nano). В этом контроллере есть 3 таймера, T1 16-разрядный, но он же работает и на PWM в 9 порту (где регулирвка яркости и выставляется). и 2 8-разрядные. Есть ещё ограничение, если опрашивать датчики по прерываниям от таймера, то не получается использовать задержку 20мс в опросе сонаров, т.к. delay в прерываниях не работает. Надо кумекать...этак придется перелопатить всю прогу...
в чем может быть дело: m5451+nano (использую 6,7 пин) и на стенде при тестовом запуске ШИМ диоды загораются и затухают мигая:
https://youtu.be/KBA34pQOh3I
код:
в чем может быть дело: ШИМ диоды загораются и затухают мигая
в delay-ях.
Здрасти господа, подскажите, никто не сталкивался с проблемой, что датчики срабатывают с задержкой, то есть когда просто проходишь лестница не запускается, приостанавливаешься напротив датчика, тогда ступеньки пошли тикать.
В принципе у меня все просто реализовал на реле. Прошу сильно не пинать это мое знакомство с ардуино.
Вот скетч.
Всем привет.
Еще не зная какие бывают подсветки лестницы и из чего их делают, собрал свою. ( https://github.com/olegumar/Smart-Stairs )
Пока собирал ее, задавал себе много вопросов ( не буду обо всем ), в итоге пришел к тому, что нужно 3 датчика. Так же как у всех один внизу, другой вверху. А 3-й поставил посредине, датчик движения, т е пока есть какое-либо движение на лестнице, она будет светиться. Пришел к этому, так : в доме семья большая, постоянно кто то ходит, не только на встречу, могут остановиться на лестницы что б обмолвиться словечком, кто пошел и передумал, вернулся ... вообщем много чего, задержку тут ни как не запрограммируешь. Ни где в других проектах этого не вижу, потому мне они не нравятся.
Выключается лестница в направлении, где последний раз сработал SR04, а не как у других по направлению.
Еще, не стал добавлять режим плавного включения, так как вся лестница загорается быстро (2-3 сек), эффект почти не виден, по этой же причине не стал делать встречное включение. Когда кто то пошел на встречу, свет к нему уже прибежит. Первая и последния ступень у меня не светиться в режиме ожидания, хотя в скетч предусмотрено. Подумал, всю ночь будет гореть, зачем это надо. Если даже кто и встанет, до нее в потемках не пойдет, вкл какой-нибудь свет.
Предусмотрел включение света комнаты с телефона. Удобно когда спустился вниз, а свет забыл вверху выключить. Оказалось еще удобно когда ложишься спать, выкл свет. Так через телефон есть пару настроек, хочу их модернизировать для лестницы.
...собрал свою...
А зачем измерять влажность и температуру?
Вот интересная статья есть:
А зачем измерять влажность и температуру?
Вот интересная статья есть:
Влажность и температура - для вкл вытяжки, это надо весь проект смотреть.
Ссылку которую дал, там ни чего нового, так же 2 датчика, знакомая схема и т д.
Удобно когда спустился вниз, а свет забыл вверху выключить. Оказалось еще удобно когда ложишься спать, выкл свет. Так через телефон есть пару настроек, хочу их модернизировать для лестницы.
С телефоном спать ложитесь? А просто таймер на выключение или не хотите как у всех?
Влажность и температура - для вкл вытяжки, это надо весь проект смотреть.
Зачем ужа с ежом скрещивать? Если проект называете "Подсветка лестницы. 16 ступенек.", т.е. чисто освещение, причем, именно освещение для лестницы, то зачем ещё управление вытяжкой?
Ссылку которую дал, там ни чего нового, так же 2 датчика, знакомая схема и т д.
Согласен, для новезны L298N - самое то! А почему не использовать как выше рекомендуют, например, IRF7314?
Здрасти господа, подскажите, никто не сталкивался с проблемой, что датчики срабатывают с задержкой, то есть когда просто проходишь лестница не запускается, приостанавливаешься напротив датчика, тогда ступеньки пошли тикать.
В Вашем случае это естественно, т.к. понатыкано куча delay.
С телефоном спать ложитесь? А просто таймер на выключение или не хотите как у всех?
Многие пользуются телефон как будильником, потому он всегда рядом.
Зачем ужа с ежом скрещивать? Если проект называете "Подсветка лестницы. 16 ступенек.", ...
Если ардуинка еще может что делать одновременно , почему и нет ... Экономия не только финансовая
Согласен, для новезны L298N - самое то! А почему не использовать как выше рекомендуют, например, IRF7314?
Еще раз напишу, когда начинал собирать, не знал из чего. Понимал что из транзисторов лучше и дешевле, но как подобрать не знаю, плюс ко всему надо еще под них плату лудить, что ни разу не делал.
Искал модули под ардуино, единственное что нашел это 520 транзистор, но он меня не устроил. До кучи из начально хотел делать из RGB ленты, для нее 298 отлично подходят. Управляя плюсом, на выходе можно получить либо плюс, либо минус. Мой скетч и сейчас не сложно доделать и он будет светить разными цветами, как я и хотел. После каждого срабатывания датчика меняется цвет.
В итоге у меня получилось минимум пайки. Даже из сдвиг регистров сделал модуль.
И это еще не все что может мой скетч. Предусмотрена передача данных другой ESP (другой проект). Вообщем автоматизирую дом, типа "умный дом"
Вообще сюда заглянул, потому что мало инфы в инете про М5450. Интересует как лучше подключить 2шт. Могут ли они работать как сдвиг регистры в цепочке? И вообще принцеп их работы. Везде только и дают ссылку на даташе на анг, для меня это ни о чем.
Везде только и дают ссылку на даташе на анг, для меня это ни о чем.
а что, гугл транслейт отменили? - там всего-то 2-3 странички текста крупным щрифтом
Здрасти господа, подскажите, никто не сталкивался с проблемой, что датчики срабатывают с задержкой, то есть когда просто проходишь лестница не запускается, приостанавливаешься напротив датчика, тогда ступеньки пошли тикать.
а что, гугл транслейт отменили? - там всего-то 2-3 странички текста крупным щрифтом
Есть переводчик, но этого для полного понимания мне мало. Не такой уж я и спец ...
Есть переводчик, но этого для полного понимания мне мало. Не такой уж я и спец ...
ну тогда вам и перевод не пришлдился бы.
просмотрел по диагонали, возможности каскадного соединения нескольких драйверов не обнаружил.
то бишь каждый нужно цеплять отдельно и для каждого писать код ?
есть у кого нибудь плата в SprintLayout . скиньте пожалуйста
есть у кого нибудь плата в SprintLayout . скиньте пожалуйста
зачем она вам? проект давно устарел, сейчас такое делается в 10 раз проще на одной ленте адресных диодов
лень заказывать. а под этот все есть
а плату не лень делать? и потом собирать? - в старой схеме раз в десять больше деталей, чем в новой
проект давно устарел, сейчас такое делается в 10 раз проще на одной ленте адресных диодов
Уважаемый B707, ссылку на новый проект не подскажете. Вариант с этой темы я уже сделал, но, возможно, нужен будет еще один. С этим действительно много возни, особенно с платой.
Уважаемый B707, ссылку на новый проект не подскажете.
ишите у Гайвера, у него на форуме этих лестниц три или четыре варианта
Доброго времени, Уважаемые. Как я писал ранее, всё было уже сделано и проверено на столе, но ждало своего часа для установки. В прошлую субботу установил уже на лестницу и настроил расстояния и освещение. И тут вылезла одна хрень - самопроизвольное срабатывание датчиков движения... В мониторе порта: всё нормально, расстояния до ближайшего препятствия указываются корректно (120см верх и 261см низ), затем резко 0см и пошла работать подсветка... Провода к верхнему датчику длиной ~ 2.5 - 3м (6 проводов в одном кабеле без экрана): 4 - на датчик движения + 2 - на фоторезистор), Провода к нижнему датчику идут вместе с проводами ступеней в одном жгуте 7 метров - использован телефонный кабель https://datastream.by/25_parnyy_telefonnyy_neekranirovannyy_utp_kabel/ , изоляция и экран убраны, пересажен в термоизоляцию с отводами на каждую ступеньку и датчик движения.
Пробовал корректировать расстояния срабатывания типа
if
(D2 > 10 && D2 < 100),
if
(D1 > 40 && D1 < 100)...
В доме светодиодный свет - некоторые светильники диммируемые - отключал полностью... Ничего не помогло.
Большинство ложных срабатываний приходится на нижний датчик (отношение с верхним ~ 20:1).
Есть ли какое решение? Может у кого такое было? Как решили? Спасибо.
Решение подтянуть выходы датчиков к плюсу или к минусу ( зависит от датчика)
Спасибо! Как сделаю - отпишусь.
Господа, в новых билдах я выкинул 5450... и начал использовать адрессные ленты. очень советую, облегчает сборку и экономит время.
начал использовать адрессные ленты. очень советую, облегчает сборку и экономит время.
у гайвера этих подмветок на сайте на любые хотелки