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

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

  1. ИгорьК

    ИгорьК Победитель модулей

    Затрудняюсь сказать. Датчик должен показывать хотя что нибудь. При его подключении лестница может работать не правильно. Например, день считать ночью и наоборот. Но реакция быть должна. Если её нет - проблема в соединениях или датчике.
     
  2. 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???
     
  3. ИгорьК

    ИгорьК Победитель модулей

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

    NeGagarin Нуб

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

    sergey_dp Нуб

    Код (C++):
    boolean night = 0;  // Если 1 - то ночь;
    Я тут менят на 1
    Код (C++):
    unsigned int sensorValue = 0;          // Переменная для снятия показаний сенсора освещенности;
     
  6. 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, если темнее чем референсное значение минус допуск на гистерезис;
                }
                   
     
  7. NeGagarin

    NeGagarin Нуб

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

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

    ИгорьК Победитель модулей

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

    Что касается цифры 3 в массиве.
    Я уже этот код столько раз переписывал "по просьбам трудящихся" и исключительно для них и под их задачи на их датчиках без проверки на макетке (потому что у меня уже все давно работает), что мог уже что-то перепутать. Раз работает с цифрой 3 - пусть работает.
    Даже не могу обещать что разберусь с проблемой - нет времени. Замечу, что значительное число корреспондентов подтверждали, что код полностью рабочий. Я это подтвердить и проверить не могу в силу того, что мое устройство уже достаточно серьезно отличается от того, что описано здесь и по железу и по коду.
     
  9. 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);
        }
     
     
  10. sergei14

    sergei14 Нерд

    люди мне нужна ваша помощь !
     
  11. sergei14

    sergei14 Нерд

    я уже 2 дня мучаюсь не чего не выходит ! я в этом ещё чайник ! и не могу найти свою ошибку!
     
  12. ИгорьК

    ИгорьК Победитель модулей

    Что куда надо вставить то? И чего Вас в эту тему занесло?
     
  13. sergei14

    sergei14 Нерд

    я не могу вставить в код задержку я хочу сделать подсветку в комнате !
    и не получается ! подсветка нужна временная (на несколько секунд ) ! получается только что бы просто горела когда я нахажусь в зоне !
     
  14. sergei14

    sergei14 Нерд

    я знаю что я не в той темеюю. Но просто я здесь почти по той же теме что и лестница !
     
  15. ИгорьК

    ИгорьК Победитель модулей

    Вам сюда: http://forum.amperka.ru/threads/Подсветим-ночной-путь.3962/
    Или сюда: http://forum.amperka.ru/threads/Изменяем-на-кухне-ночью-c-колбасой-автоматическая-подсветка.3697/
    Делать устройство надо на ИК датчиках, ультрасоник долго не проработает.
    В любом случае первая ссылка - тас как раз то что Вам надо. Посмотрите логику работы.
     
    Последнее редактирование: 18 июн 2016
  16. вит89

    вит89 Нуб

    Уважаемый ИгорьК, собрал предложенную вами схему (за что лично от меня большое человеческое спасибо), но при проверке диоды (не ленты) все время горят периодически мигая долю секунды. Подскажите в чем может быть проблема и где искать ошибку.
     
  17. вит89

    вит89 Нуб

    Подскажите люди знающие если вместо ULN2003A использовал ULN2003APG, работать будет аналогично?
     
  18. ИгорьК

    ИгорьК Победитель модулей

    Значит собрали что-то не так. Информации маловато, чтобы выводы делать.
    Будет работать.
     
  19. vladkaspb

    vladkaspb Нуб

    Возникает вопрос, использую mega 2560, sr04 датчики, то есть при запуске проходит плавно от 1 до 15 светодиода и гаснет, после чего датчики не включают светодиоды и больше ничего не происходит, в чем может быть проблема ? ( пс: пробую оттестить на макетной плате изначально )
    Так же интересует вопрос, если использовать bh1750 датчик освещенности, то как бы изменился код

    upload_2016-8-8_0-49-54.png
     
  20. ИгорьК

    ИгорьК Победитель модулей

    1. Может по каким то причинам (включение фоторезистора) включаться режим день и значит устройство ни на что не реагирует.
    Могут быть проблемы с питанием. Не все платы тянут столько диодов.
    Может не хватать питания.
    2. Если тот что работает по I2C - можно подключить. Все можно подключить. Код изменится слегка, но править его я не буду. У меня нет ни датчика этого ни этого устройства для тестирования. Только то что работает на лестнице.
    Я за свой быдлокод отвечаю. Он хоть и кривой, но рабочий. Проверяется работой не менее пары недель прежде чем я что-то публикую. Я и так уже в этой теме написал достаточно, чего сам не проверял. На этом все.
     
    Последнее редактирование: 8 авг 2016