Проходной включатель на 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 что-то другое можно использовать?
    таких сенсеров больше нет надо выписывать.