Показано с 1 по 10 из 34

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Датчик дождя или датчик препятствий.

    Перепробовал несколько вариантов датчика из интернет, все работают не правильно, чувствительность низкая срабатывают на разные помехи, например на пульты ДУ или энергосберегающие лампы.
    Решил написать свой код, теперь у меня можно настроить чувствительность датчика от 1 см до нескольких метров и при этом не срабатывает на помехи.
    Чувствительность регулируется резистором в цепи ИК диода, у меня примерно 1к и слабый ИК светодиод от старой мышки , срабатывают на расстоянии 30см от препятствия . Пробовал на оконном стекле (брызгал водой ) срабатывает стабильно. На автомобильном стекле еще не проверял. arduino с нижеприведенным кодом работать самостоятельно без ПК. Индикатор (L) начинает светиться при срабатывании. Датчик ИК и ИК светодиод должны быть полностью изолированы друг от друга светонепроницаемым материалом.
    ИК приемник использовал из https://duino.ru , работающий в диапазоне 38кГц


    Скетч для Arduino
    PHP код:
    byte tsop 11;   //tsop
    byte irLed 10;  //ик-светодиод 
    byte Led 13;   //осветодиод(L) на плате
    byte i;     // счётчик
    byte num=20//число периодов несущей 38кГц в посылаемом пакете
    byte impulse=10;  // длительность полупериода
    byte valold_val;   //переменная для хранения сигнала с ИК приемника

    void setup() 
    {
      
    pinMode (irLedOUTPUT); // разъём 10 на вывод
      
    pinMode(LedOUTPUT);   //разъём 13 на вывод
      
    pinMode(tsopINPUT);   // разъём 11 на ввод
      
    Serial.begin(115200);
    }

    void loop()
    {
      for(
    i=0i<numi++) //цикл несущей
      
    {
        
    digitalWrite(irLedHIGH); //зажигаем ик-диод
        
    delayMicroseconds(impulse); //положительный полупериод
        
    digitalWrite(irLedLOW); //гасим ик-диод
        
    delayMicroseconds(impulse-1); //выравниваем скважность
      
    }
      
     
    val=digitalRead(tsop);//Прочитать показания датчика
     
    if (val==old_val)     //сравнить показания с предидущей посылкой
     
    {
      
    digitalWrite(Led,(val==LOW) ? HIGH:LOW); //если сигнал низкий то зажигаем светодиод
      
    if (val==LOW)   delay(300); //время свечения светодиода (L) при срабатывании
     
    }
    old_val=val;

    delay(30); //пауза между пакетами.  
      // Serial.println(val, DEC);

    Нажмите на изображение для увеличения. 

Название:	NANO_Rain_sens.PNG 
Просмотров:	8547 
Размер:	7.9 Кб 
ID:	6422
    Последний раз редактировалось Chip; 22.03.2017 в 10:50.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •