Автоматическая подсветка лестницы

Тема в разделе "Глядите, что я сделал", создана пользователем ИгорьК, 19 сен 2013.

  1. ИгорьК

    ИгорьК Гуру

    1.Ну да. Надо паять, например, на такой плате.
    2. Отключите по одному датчику чтобы понять который фонит.
     
  2. sergei14

    sergei14 Нерд

    Хорошо спасибо ! Попробую сейчас не дома (!
     
  3. sergei14

    sergei14 Нерд

    Извините у вас есть фото как пример что бы я опять не ошибся ! Я просто подобное делаю первый раз !
     
  4. olganeva

    olganeva Нуб

    Доброго дня! подскажите, а деревянные лестницы нуждаются как то в специальной защите? планируем сделать что-то с деревянными ступенями на больцах. Смотрели на slio-spb ru варианты - пока не понимаем, что удобнее.
     
  5. ИгорьК

    ИгорьК Гуру

    В этом посте есть pdf с фото моего устройства.
     
  6. ИгорьК

    ИгорьК Гуру

    У меня деревянная лестница только покрашена. И на ступеньках лежат синтетические коврики маленькие.
     
  7. sergei14

    sergei14 Нерд

    спасибо буду делать! пробовал сегодня без датчиков вы были правы загорелась первая и последняя ступенька ! так что проблема в принципе ясна !
     
  8. sergey_dp

    sergey_dp Нуб

    Я выкладывал фото датчиков которые нормальные, глючных очень много, на макетке работают а на проводе уже не хотят. Главное когда запускаешь проверку то все нормально показывают без збоев, видать шым наводки дает, и попробуйте выставте расстояние поменьше.
    http://forum.amperka.ru/threads/Автоматическая-подсветка-лестницы.1930/page-22#post-68449
     
  9. sergei14

    sergei14 Нерд

    Хорошо спасибо ! Буду знать !
     
  10. Saniok

    Saniok Нерд

    Добрый день ИгорьК.

    Столкнулся с проблемой дневной-ночьной режим. Лесенка все это время работала без фоторезистора за неимением его. Заказал фоторезистор, подключил его через сопротивление - никакого результата. Вывел данные с него на экран, получил обратные значения: чем больше освещение тем больше значение. Заказал как у вас в проекте запаяный на плате. Если его подключять как на нем подписанны контакты, то выдает тоже обратные значения, как и мой первый т.е. чем больше освещение тем больше значение. Поменял питание, на Vcc подал минус, на Gnd подал плюс, заработал как у вас т.е. чем больше освещение тем меньше значение. Но всеравно в дневном режиме лесенка не выключается. Подскажите в чем проблема? Референсное значение менял под свой датчик.
     
    Последнее редактирование: 2 май 2016
  11. Saniok

    Saniok Нерд

    Стала яснее проблема день - ночь. В посте 519 я мониторил только один датчик освещенности без программы для лесенки. Сегодня попробовал мониторить данные датчика освещенности непосредственно из программы лесенки и получил, что "sensorValue " независимо от освещенности 1023, поэтому лесенка и без подсоединенного датчика всегда у меня работала. И подключение его к пину А0 ничего не меняет. Подскажите почему так?
     
  12. ИгорьК

    ИгорьК Гуру

    Затрудняюсь сказать. Датчик должен показывать хотя что нибудь. При его подключении лестница может работать не правильно. Например, день считать ночью и наоборот. Но реакция быть должна. Если её нет - проблема в соединениях или датчике.
     
  13. Saniok

    Saniok Нерд

    Вроде чтото откопал: если в строчке

    byte OutPins[2][15] = {2,3,4,5,6,7,8,9,10,11,12,13,44,45,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // Массив PWM ног

    меняю на

    byte OutPins[3][15] = {2,3,4,5,6,7,8,9,10,11,12,13,44,45,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // Массив PWM ног

    то вроде заработало. Что это вообще обозначает на языке программирования OutPins[2][15]? И почему 2 и 15???
     
  14. ИгорьК

    ИгорьК Гуру

    Фигасе... Это открытие.
    Массив имеет две строки. В первой номера ног, к которым подключены ступеньки. Во второй ( она инициализируется нулями) будут постоянно меняться значения яркости на этих ногах. Какое отношение ко всему этому имеет цифра три (которая увеличивает размер массива еще на одну строку из 15 неинициализированных элементов), что Вы поставили, я не знаю
    Но, заметьте, ваши проблемы чрезвычайно уникальны.
     
    Последнее редактирование: 3 май 2016
  15. NeGagarin

    NeGagarin Нуб

    У меня такая же петрушка, без этой тройки не работает! Но так и непонял, как день с ночью поменять, все сейчас наоборот происходит.
    Боролся с ультрасониками на макетке, которые без "+", один моросит, то работает, то нет. В ванной делал освещение зеркала с этим датчиком, там удалось победить его, используя библиотеку NewPing, работает стабильно, не виснет. Буду пробовать воткнуть это в лестничный скетч.
     
  16. sergey_dp

    sergey_dp Нуб

    Код (C++):
    boolean night = 0;  // Если 1 - то ночь;
    Я тут менят на 1
    Код (C++):
    unsigned int sensorValue = 0;          // Переменная для снятия показаний сенсора освещенности;
     
  17. NeGagarin

    NeGagarin Нуб

    Здесь я, конечно, тоже менял.
    В итоге разобрался. Не знаю, какой датчик использовался в программе, у меня обычный фоторезистор, который при бОльшем освещении показывает бОльшее значение, и если значение больше референсного, то это день, и наоборот. Соответственно здесь меняем больше-меньше местами:

    Код (C++):
        if (sensorValue > sensorRef)  {                        // Если однозначно темнее темного - ночь!
                programmSteps = GET_DISTANCE;
                analogWrite(2,NightBright );
                analogWrite(13,NightBright );
                night = 1;
                break;                                            // Выходим из этого case;      
            }
           
                for(i = 0; i < 10; i++) {                        // Иначе приходится разбираться точнее;
                    sensorValue = analogRead(sensorPin);        // Чтение показаний датчика;
                    if (sensorValue > sensorRef) a++;            // Увеличиваем а, если темнее референсного значения;
                    if (sensorValue > (sensorRef - 25)) b++;    // Увеличиваем b, если темнее чем референсное значение минус допуск на гистерезис;
                }
                   
     
  18. NeGagarin

    NeGagarin Нуб

    Киньте ссылку на нормальные ультрасоники - HC-SR04+, или надо брать HY-SRF05?

    На макетке при питании от компа все работает, только запитываю Дуню от блока питания 9в, датчики начинают ловить наводки, что делать, не очень понимаю.
     
    Последнее редактирование: 8 июн 2016
  19. ИгорьК

    ИгорьК Гуру

    Резистор можно включать по-разному:
    Drawing222.jpg

    Что касается цифры 3 в массиве.
    Я уже этот код столько раз переписывал "по просьбам трудящихся" и исключительно для них и под их задачи на их датчиках без проверки на макетке (потому что у меня уже все давно работает), что мог уже что-то перепутать. Раз работает с цифрой 3 - пусть работает.
    Даже не могу обещать что разберусь с проблемой - нет времени. Замечу, что значительное число корреспондентов подтверждали, что код полностью рабочий. Я это подтвердить и проверить не могу в силу того, что мое устройство уже достаточно серьезно отличается от того, что описано здесь и по железу и по коду.
     
  20. sergei14

    sergei14 Нерд

    всем привет !!!
    помогите мне с кодом не получается вставить задержку на светодиод !?
    Код (C++):
        const int Trig = 8;
        const int Echo = 9;
        const int ledPin = 11;  // 13 – если будете использовать встроенный в Arduino светодиод

        void setup()
        {
        pinMode(Trig, OUTPUT);
        pinMode(Echo, INPUT);
        pinMode(ledPin, OUTPUT);
       
        Serial.begin(9600);
        }

        unsigned int time_us=0;

        unsigned int distance_sm=0;

        void loop()
        {
        digitalWrite(Trig, HIGH); // Подаем сигнал на выход микроконтроллера
        delayMicroseconds(10); // Удерживаем 10 микросекунд
        digitalWrite(Trig, LOW); // Затем убираем
        time_us=pulseIn(Echo, HIGH); // Замеряем длину импульса
        distance_sm=time_us/58; // Пересчитываем в сантиметры
        Serial.println(distance_sm); // Выводим на порт

        if (distance_sm<50) // Если расстояние менее 50 сантиметром
        {
           digitalWrite(ledPin, 0); // Зажигаем светодиод
        }
        else
        {
           digitalWrite(ledPin, 1); // иначе тушим
        }
       
        delay(100);
        }