Проходной включатель на 2х HC-SR04

Тема в разделе "Силовая электроника", создана пользователем эдик, 29 июн 2015.

  1. эдик

    эдик Нерд

    Гдето в сети нашол вот такой код проходного выключателя
    Код (Text):
    //Устанавливаем контакты для первого датчика
    #define  T1  12
    #define  E1  13
    //Устанавливаем контакты для второго датчика
    #define  T2  10
    #define  E2  11
    //Устанавливаем контакты для драйвера
    #define  DATA  6
    #define  CLOCK 7

    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);
    }

    void loop()
    {
      int D1 = Ultrasonic(T1, E1);    // измеряем расстояние первого датчика
      if(D1 > 0 && D1 < 100)          // если расстояние меньше 100см, то
      {
        for(char i = 19; i >= 0; i--) // зажигаем светодиоды в одну сторону
        {
          MM5450(mask<<i);
          delay(100);                // задержка зажигания
        }
        delay(3000);                  // ждем 3 секунды
        for(char i = 0; i <= 20; i++)  // тушим светодиоды
        {
          MM5450(mask>>i);
          delay(100);                // задержка затухания
        }
      }

      int D2 = Ultrasonic(T2, E2);    // измеряем расстояние второго датчика
      if(D2 > 0 && D2 < 100)          // если расстояние меньше 100см, то
      {
        for(char i = 19; i >= 0; i--) // зажигаем светодиоды в другую сторону
        {
          MM5450(mask>>i);
          delay(100);                // задержка зажигания
        }
        delay(3000);                  // ждем 3 секунды
        for(char i = 0; i <= 20; i++)  // тушим светодиоды
        {
          MM5450(mask<<i);
          delay(100);                // задержка затухания
        }
      }
      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 < 20; 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 < 15; i++)
      {  
        digitalWrite(CLOCK, LOW);
        digitalWrite(CLOCK, HIGH);
      }
    }
     
    но насколько я понимаю он заточен под M5451 а мне надо всего то реле поставить обычное помогите пожалуйста!
     
  2. Radius

    Radius Гик

    А в чем проблема? Не знаете как подключить реле к Ардуино?
     
  3. эдик

    эдик Нерд

    подключал не работают.
     
  4. Megakoteyka

    Megakoteyka Оракул

    Тогда показывайте схему и код.
     
  5. эдик

    эдик Нерд

    код изложен выше схема подключения там описана я уже думаю может на датчиках сопротивление какоето надо ставить? но инфы негде нет.
     
  6. Radius

    Radius Гик

    Без схемы очень сложно понять что не работает, особенно если в схеме есть ошибки или она собрана с ошибками.
     
  7. эдик

    эдик Нерд

    схему сейчас попробую нарисовать. а пока опишу что происходит в режиме ожидания на двойном реле почему то работает одно реле оно включается сразу после загрузки уно когда провожу рукой над одним или другим сенсером выключается диод на 13 пине а на реле начинает мерцать диод после того как диод мерцать перестала снова включается диод на 13 пине.
     
  8. ИгорьК

    ИгорьК Давно здесь Команда форума

    эдик, Вы взяли скетч для управления светодиодным драйвером и пытаетесь вставить туда реле. Там нет даже "дырочки" для этого. Расскажите, лучше, что Вы делаете то?
     
  9. эдик

    эдик Нерд

    проходной выключатель для длииииинннооггоо коридора. у родителей от дома до стайки коридор 15 метров маме постоянно приходится ходить с фонариком а когда забывает его идёт на ощупь что чревато последствиями. вот и пытаюсь решить их полувековую проблему. но готовых наработок не нашел.
     
  10. Vad33

    Vad33 Капитан-оригинал

    А что, туда обычный свет с выключателями нельзя провести?
     
  11. ИгорьК

    ИгорьК Давно здесь Команда форума

    Дык... Вы забудьте про этот скетч и про ту микросхему. Если реле ставить хотите.
    Тот скетч для подсветки ступенек лестницы кусками светодиодной ленты.
     
  12. Radius

    Radius Гик

    Два тумблера на разных концах коридора и три провода вот и все решение задачи.
     
  13. ИгорьК

    ИгорьК Давно здесь Команда форума

    И уж точно не заморачиваться с ультрасониками - вещь капризная и ломучая.
     
  14. эдик

    эдик Нерд

    БЛИН! кому тогда их подарить?)))
     
  15. эдик

    эдик Нерд

    можно но везде ик сенсоры стоят вот и хотел добить всю систему таким выключателем.
     
  16. ИгорьК

    ИгорьК Давно здесь Команда форума

    Будете подсветку лестницы делать - примените.
    Или какого-нибудь робота. Он ездит себе, а Вы на него пялитесь :)
     
  17. эдик

    эдик Нерд

    :D:D:D только и осталось.
     
  18. эдик

    эдик Нерд

    пока рисовал отговорили.
    [​IMG]
     
  19. ИгорьК

    ИгорьК Давно здесь Команда форума

    Но если серьезно, то как я подсвечивал кровать - это почти проходной п
    Подсветка кровати - тот же проходой выключатель. Там два равноправных сенсора. Вместо MOSFETа поставьте реле. А зачем Вам два реле для этой ситуации?
     
  20. эдик

    эдик Нерд

    другого нет. а вместо M5451 что-то другое можно использовать?
    таких сенсеров больше нет надо выписывать.